Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update for Kubernetes 1.26.4 #1971

Merged
merged 2 commits into from
Apr 24, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 19 additions & 19 deletions projects/kubernetes/kubernetes/1-26/CHECKSUMS
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
64bdc661ce3ed64b1ea2d432a1942fcab352911de5e4da531a689929599186d1 _output/1-26/bin/darwin/amd64/kubectl
e6cca0175fb2a5df6ab538ffd4956a18b2f5d0179157642788963f458f57aab6 _output/1-26/bin/linux/amd64/kube-apiserver
eb56193a2b0473c939d3079e0df380f9901bc9695d2045e5b992ee9fdc4e7375 _output/1-26/bin/linux/amd64/kube-controller-manager
10b3d4c07cdfd38e25e75327df59df9141825bd16f65064b18c2ac3e887f359d _output/1-26/bin/linux/amd64/kube-proxy
3ea41e393b9c2e2ab17142433560ab8c915251f472b2bd2c97945e611ecf6322 _output/1-26/bin/linux/amd64/kube-scheduler
58e41fcceb33dcb96fae55f8763e7e5734fa27a41da60b2b8ab0b88a791e3ea3 _output/1-26/bin/linux/amd64/kubeadm
b179a7479eeaf368e6bb4a93ba06d147d79bd94eddb56801a762e38c2ae2cc66 _output/1-26/bin/linux/amd64/kubectl
f501747cc5c036cdf0cb216dfefac0c93390aa56a47f93c08e5333e1f3d7e3c0 _output/1-26/bin/linux/amd64/kubelet
3ba5dbbccd7742530344445a189159b1f110de13fde0f1ecfe8eee17851200dd _output/1-26/bin/linux/arm64/kube-apiserver
51e94affe8ff57eb29ee222cf70b18913042150c8fb24f8c106c41c74d612b8b _output/1-26/bin/linux/arm64/kube-controller-manager
0ecbb400c6d27dd896230c760115bca54cd099b642867081a2aa80de06fac5be _output/1-26/bin/linux/arm64/kube-proxy
4826a0615c4b4d23466925e854e226378a2c7d53b2cddfa774080d786631321c _output/1-26/bin/linux/arm64/kube-scheduler
91326749f5ca3642ae4137b991da654c4c374939b46eee5be4d7cced99ee89d4 _output/1-26/bin/linux/arm64/kubeadm
70ce780c51740f57a174ce37dcd8ae010160df66529fdedc5d6b592f4226f306 _output/1-26/bin/linux/arm64/kubectl
3262e0767eb15f6199966ae60720170f124159a52d179473ba9d3621813ab6e3 _output/1-26/bin/linux/arm64/kubelet
40830d0b9fb6f258e2fa61a766b0b8693f3ca148230fdd41590dcc3aeeb2e8ea _output/1-26/bin/windows/amd64/kube-proxy.exe
94078d78894acf72ee2b769d7f70ec8dace1fc178ced3d504930502a87b10fd0 _output/1-26/bin/windows/amd64/kubeadm.exe
a707f2f584a6859acbe43367a7a84b293f60eba1e5b042579b17cf50c7b61210 _output/1-26/bin/windows/amd64/kubectl.exe
e6ae3d4d7088c1ebdde72cc5117b31fe5457204ec0978b288db368073d7cb196 _output/1-26/bin/windows/amd64/kubelet.exe
f2449f838975332491a1e6d60f6f0a08748dd539cd769c7be5c188c19e2b4977 _output/1-26/bin/darwin/amd64/kubectl
21348e5472348b2ad312d836d25bde60769c4fd0e9bda5206db6e86b2ef974fb _output/1-26/bin/linux/amd64/kube-apiserver
2d59753dc5718fc7a23523b6769a53a99f487ad40ec22deaddb11db5525a5931 _output/1-26/bin/linux/amd64/kube-controller-manager
caac431ec5dd1bc62629de28667ee40ee0e90ba6a7a7b35949e1154148a89c62 _output/1-26/bin/linux/amd64/kube-proxy
531b8db834e0f98022df9c6ca1d8bffd229c817f057b05d2b511524d32f8bf6f _output/1-26/bin/linux/amd64/kube-scheduler
09e084c0d7c830bd9d5b944df0adffaf40f951fb50077734e4a0c4cc5af8f3da _output/1-26/bin/linux/amd64/kubeadm
71342d660b865f0c1614ad3ecbc4d09b504266e061b1394f4390f0b0b4eabaa6 _output/1-26/bin/linux/amd64/kubectl
3251f4065e677be954aeedb94c4138d4098f67452b5d602564e6bdc235e3fc0b _output/1-26/bin/linux/amd64/kubelet
d4abbabfd0c2b0d278e70b3f89a693a7b19a5692d492006ec140e1c6e6977e95 _output/1-26/bin/linux/arm64/kube-apiserver
f1f3182c3e0e08bf0407443ca6308346139fca2e6aa8294aad32b8490c0f35e0 _output/1-26/bin/linux/arm64/kube-controller-manager
f4a7a3bd0e8f232eb86d0a788313097daee6620941808185112fe9e13354822b _output/1-26/bin/linux/arm64/kube-proxy
0421f58f6564b31a8a654aa1ee3e7678cc98e3779b75b7cfebd5bca5a840794a _output/1-26/bin/linux/arm64/kube-scheduler
a54d53c38c1f2bebd12226ed0cb23c33c216b47e5bcc4a05d3f2c19a9a532e7c _output/1-26/bin/linux/arm64/kubeadm
06fefdee6348702b13364cc6a61c7391f0dbf95b7bff6e381a940ba4c84941eb _output/1-26/bin/linux/arm64/kubectl
389f45740da801d7ed52bad1acde71e8e49ffeae1d531109641444063a214bd7 _output/1-26/bin/linux/arm64/kubelet
606338bd5fff2ccb0262e1ffa2bb0fefb12038b7e684fb8871fd7e94e115a22f _output/1-26/bin/windows/amd64/kube-proxy.exe
ee29bd4cdcd035d3c961bc5ab231d434951ffd01d14839a6e6afabbd3fd1150e _output/1-26/bin/windows/amd64/kubeadm.exe
fe0e608c5ab976eedf9633d446621b4c50331e0d19601e30d0af02c18adf52bf _output/1-26/bin/windows/amd64/kubectl.exe
1130ad03d6b677baa9bb65c6ab78183417147df9a2a40646c228f8355b5c410a _output/1-26/bin/windows/amd64/kubelet.exe
2 changes: 1 addition & 1 deletion projects/kubernetes/kubernetes/1-26/GIT_TAG
Original file line number Diff line number Diff line change
@@ -1 +1 @@
v1.26.3
v1.26.4
Original file line number Diff line number Diff line change
Expand Up @@ -1387,7 +1387,7 @@ index 00000000000..3388050d507
+ }
+}
diff --git a/vendor/modules.txt b/vendor/modules.txt
index 542c6783072..108558f17eb 100644
index 43957fd607b..448182497db 100644
--- a/vendor/modules.txt
+++ b/vendor/modules.txt
@@ -1455,6 +1455,7 @@ k8s.io/apiserver/pkg/admission/plugin/webhook/config/apis/webhookadmission/v1
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,207 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: baomingwang <[email protected]>
Date: Thu, 8 Dec 2022 19:34:09 -0800
Subject: [PATCH] --EKS-PATCH-- Added serialization from etcd error metric

Cherry-pick of upstream Kubernetes PR #114376
---
.../pkg/storage/etcd3/metrics/metrics.go | 15 +++++
.../pkg/storage/etcd3/metrics/metrics_test.go | 57 +++++++++++++++++++
.../apiserver/pkg/storage/etcd3/store.go | 31 +++++++++-
3 files changed, 100 insertions(+), 3 deletions(-)
create mode 100644 staging/src/k8s.io/apiserver/pkg/storage/etcd3/metrics/metrics_test.go

diff --git a/staging/src/k8s.io/apiserver/pkg/storage/etcd3/metrics/metrics.go b/staging/src/k8s.io/apiserver/pkg/storage/etcd3/metrics/metrics.go
index 8255822945d..a01f50954fe 100644
--- a/staging/src/k8s.io/apiserver/pkg/storage/etcd3/metrics/metrics.go
+++ b/staging/src/k8s.io/apiserver/pkg/storage/etcd3/metrics/metrics.go
@@ -113,6 +113,15 @@ var (
},
[]string{"resource"},
)
+ decodeErrorCounts = compbasemetrics.NewCounterVec(
+ &compbasemetrics.CounterOpts{
+ Namespace: "apiserver",
+ Name: "storage_decode_errors_total",
+ Help: "Number of stored object decode errors split by object type",
+ StabilityLevel: compbasemetrics.ALPHA,
+ },
+ []string{"resource"},
+ )
)

var registerMetrics sync.Once
@@ -130,6 +139,7 @@ func Register() {
legacyregistry.MustRegister(listStorageNumFetched)
legacyregistry.MustRegister(listStorageNumSelectorEvals)
legacyregistry.MustRegister(listStorageNumReturned)
+ legacyregistry.MustRegister(decodeErrorCounts)
})
}

@@ -148,6 +158,11 @@ func RecordEtcdBookmark(resource string) {
etcdBookmarkCounts.WithLabelValues(resource).Inc()
}

+// RecordDecodeError sets the storage_decode_errors metrics.
+func RecordDecodeError(resource string) {
+ decodeErrorCounts.WithLabelValues(resource).Inc()
+}
+
// Reset resets the etcd_request_duration_seconds metric.
func Reset() {
etcdRequestLatency.Reset()
diff --git a/staging/src/k8s.io/apiserver/pkg/storage/etcd3/metrics/metrics_test.go b/staging/src/k8s.io/apiserver/pkg/storage/etcd3/metrics/metrics_test.go
new file mode 100644
index 00000000000..76fe533bae2
--- /dev/null
+++ b/staging/src/k8s.io/apiserver/pkg/storage/etcd3/metrics/metrics_test.go
@@ -0,0 +1,57 @@
+/*
+Copyright 2023 The Kubernetes Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package metrics
+
+import (
+ "strings"
+ "testing"
+
+ "k8s.io/component-base/metrics"
+ "k8s.io/component-base/metrics/testutil"
+)
+
+func TestRecordDecodeError(t *testing.T) {
+ registry := metrics.NewKubeRegistry()
+ defer registry.Reset()
+ registry.Register(decodeErrorCounts)
+ resourceName := "pods"
+ testedMetrics := "apiserver_storage_decode_errors_total"
+ testCases := []struct {
+ desc string
+ resource string
+ want string
+ }{
+ {
+ desc: "test success",
+ resource: resourceName,
+ want: `
+ # HELP apiserver_storage_decode_errors_total [ALPHA] Number of stored object decode errors split by object type
+ # TYPE apiserver_storage_decode_errors_total counter
+ apiserver_storage_decode_errors_total{resource="pods"} 1
+`,
+ },
+ }
+
+ for _, test := range testCases {
+ t.Run(test.desc, func(t *testing.T) {
+ RecordDecodeError(test.resource)
+ if err := testutil.GatherAndCompare(registry, strings.NewReader(test.want), testedMetrics); err != nil {
+ t.Fatal(err)
+ }
+ })
+ }
+}
diff --git a/staging/src/k8s.io/apiserver/pkg/storage/etcd3/store.go b/staging/src/k8s.io/apiserver/pkg/storage/etcd3/store.go
index 51e5b9012b9..a35205f260c 100644
--- a/staging/src/k8s.io/apiserver/pkg/storage/etcd3/store.go
+++ b/staging/src/k8s.io/apiserver/pkg/storage/etcd3/store.go
@@ -156,7 +156,12 @@ func (s *store) Get(ctx context.Context, key string, opts storage.GetOptions, ou
return storage.NewInternalError(err.Error())
}

- return decode(s.codec, s.versioner, data, out, kv.ModRevision)
+ err = decode(s.codec, s.versioner, data, out, kv.ModRevision)
+ if err != nil {
+ recordDecodeError(s.groupResourceString, preparedKey)
+ return err
+ }
+ return nil
}

// Create implements storage.Interface.Create.
@@ -220,6 +225,7 @@ func (s *store) Create(ctx context.Context, key string, obj, out runtime.Object,
err = decode(s.codec, s.versioner, data, out, putResp.Header.Revision)
if err != nil {
span.AddEvent("decode failed", attribute.Int("len", len(data)), attribute.String("err", err.Error()))
+ recordDecodeError(s.groupResourceString, preparedKey)
return err
}
span.AddEvent("decode succeeded", attribute.Int("len", len(data)))
@@ -352,7 +358,12 @@ func (s *store) conditionalDelete(
if deleteResp.Header == nil {
return errors.New("invalid DeleteRange response - nil header")
}
- return decode(s.codec, s.versioner, origState.data, out, deleteResp.Header.Revision)
+ err = decode(s.codec, s.versioner, origState.data, out, deleteResp.Header.Revision)
+ if err != nil {
+ recordDecodeError(s.groupResourceString, key)
+ return err
+ }
+ return nil
}
}

@@ -470,7 +481,12 @@ func (s *store) GuaranteedUpdate(
}
// recheck that the data from etcd is not stale before short-circuiting a write
if !origState.stale {
- return decode(s.codec, s.versioner, origState.data, destination, origState.rev)
+ err = decode(s.codec, s.versioner, origState.data, destination, origState.rev)
+ if err != nil {
+ recordDecodeError(s.groupResourceString, preparedKey)
+ return err
+ }
+ return nil
}
}

@@ -518,6 +534,7 @@ func (s *store) GuaranteedUpdate(
err = decode(s.codec, s.versioner, data, destination, putResp.Header.Revision)
if err != nil {
span.AddEvent("decode failed", attribute.Int("len", len(data)), attribute.String("err", err.Error()))
+ recordDecodeError(s.groupResourceString, preparedKey)
return err
}
span.AddEvent("decode succeeded", attribute.Int("len", len(data)))
@@ -745,6 +762,7 @@ func (s *store) GetList(ctx context.Context, key string, opts storage.ListOption
}

if err := appendListItem(v, data, uint64(kv.ModRevision), pred, s.codec, s.versioner, newItemFunc); err != nil {
+ recordDecodeError(s.groupResourceString, string(kv.Key))
return err
}
numEvald++
@@ -880,6 +898,7 @@ func (s *store) getState(ctx context.Context, getResp *clientv3.GetResponse, key
state.data = data
state.stale = stale
if err := decode(s.codec, s.versioner, state.data, state.obj, state.rev); err != nil {
+ recordDecodeError(s.groupResourceString, key)
return nil, err
}
}
@@ -1018,6 +1037,12 @@ func appendListItem(v reflect.Value, data []byte, rev uint64, pred storage.Selec
return nil
}

+// recordDecodeError record decode error split by object type.
+func recordDecodeError(resource string, key string) {
+ metrics.RecordDecodeError(resource)
+ klog.V(4).Infof("Decoding %s \"%s\" failed", resource, key)
+}
+
func notFound(key string) clientv3.Cmp {
return clientv3.Compare(clientv3.ModRevision(key), "=", 0)
}