forked from aws/eks-distro
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Update for Kubernetes 1.26.4 (aws#1971)
* Update for Kubernetes 1.26.4 * checksums
- Loading branch information
Showing
4 changed files
with
228 additions
and
21 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1 @@ | ||
v1.26.3 | ||
v1.26.4 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
207 changes: 207 additions & 0 deletions
207
...s/kubernetes/1-26/patches/0005-EKS-PATCH-Added-serialization-from-etcd-error-metric.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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) | ||
} |