From cac1e768dfa4ce7c28d169bffc9b09d224629ace Mon Sep 17 00:00:00 2001 From: Guy Templeton Date: Wed, 16 Oct 2024 00:25:48 +0100 Subject: [PATCH] CA - k/k dependency update to 1.28.14 --- cluster-autoscaler/go.mod | 84 ++++---- cluster-autoscaler/go.sum | 76 ++++---- .../admissionregistration/v1alpha1/types.go | 4 +- .../admissionregistration/v1beta1/types.go | 4 +- .../vendor/k8s.io/api/batch/v1/types.go | 6 +- .../controller_reconcile.go | 5 +- .../apiserver/pkg/storage/cacher/cacher.go | 9 +- .../k8s.io/kubernetes/pkg/kubelet/kubelet.go | 35 +++- .../kuberuntime/kuberuntime_manager.go | 10 + .../kubelet/winstats/perfcounter_nodestats.go | 22 ++- .../kubernetes/pkg/proxy/config/config.go | 16 +- .../framework/preemption/preemption.go | 2 +- .../internal/queue/scheduling_queue.go | 21 +- .../kubernetes/pkg/securitycontext/util.go | 3 +- .../pkg/util/filesystem/defaultfs.go | 3 +- .../pkg/util/filesystem/util_unix.go | 34 ++++ .../pkg/util/filesystem/util_windows.go | 183 ++++++++++++++++++ .../pkg/volume/git_repo/git_repo.go | 6 + .../k8s.io/mount-utils/mount_helper_unix.go | 8 +- cluster-autoscaler/vendor/modules.txt | 98 +++++----- cluster-autoscaler/version/version.go | 2 +- 21 files changed, 458 insertions(+), 173 deletions(-) create mode 100644 cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/filesystem/util_unix.go create mode 100644 cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/filesystem/util_windows.go diff --git a/cluster-autoscaler/go.mod b/cluster-autoscaler/go.mod index b7a8cc6a22c9..32d3361abedd 100644 --- a/cluster-autoscaler/go.mod +++ b/cluster-autoscaler/go.mod @@ -40,17 +40,17 @@ require ( google.golang.org/protobuf v1.33.0 gopkg.in/gcfg.v1 v1.2.3 gopkg.in/yaml.v2 v2.4.0 - k8s.io/api v0.28.12 - k8s.io/apimachinery v0.28.12 - k8s.io/apiserver v0.28.12 - k8s.io/client-go v0.28.12 - k8s.io/cloud-provider v0.28.12 + k8s.io/api v0.28.14 + k8s.io/apimachinery v0.28.14 + k8s.io/apiserver v0.28.14 + k8s.io/client-go v0.28.14 + k8s.io/cloud-provider v0.28.14 k8s.io/cloud-provider-aws v1.27.0 - k8s.io/component-base v0.28.12 - k8s.io/component-helpers v0.28.12 + k8s.io/component-base v0.28.14 + k8s.io/component-helpers v0.28.14 k8s.io/klog/v2 v2.100.1 - k8s.io/kubelet v0.28.12 - k8s.io/kubernetes v1.28.11 + k8s.io/kubelet v0.28.14 + k8s.io/kubernetes v1.28.14 k8s.io/legacy-cloud-providers v0.0.0 k8s.io/utils v0.0.0-20230406110748-d93618cff8a2 sigs.k8s.io/cloud-provider-azure v1.28.11 @@ -191,11 +191,11 @@ require ( gopkg.in/warnings.v0 v0.1.2 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect k8s.io/apiextensions-apiserver v0.0.0 // indirect - k8s.io/controller-manager v0.28.12 // indirect - k8s.io/cri-api v0.28.11 // indirect + k8s.io/controller-manager v0.28.14 // indirect + k8s.io/cri-api v0.28.14 // indirect k8s.io/csi-translation-lib v0.27.0 // indirect k8s.io/dynamic-resource-allocation v0.0.0 // indirect - k8s.io/kms v0.28.12 // indirect + k8s.io/kms v0.28.14 // indirect k8s.io/kube-openapi v0.0.0-20230717233707-2695361300d9 // indirect k8s.io/kube-scheduler v0.0.0 // indirect k8s.io/kubectl v0.0.0 // indirect @@ -211,64 +211,64 @@ replace github.com/digitalocean/godo => github.com/digitalocean/godo v1.27.0 replace github.com/rancher/go-rancher => github.com/rancher/go-rancher v0.1.0 -replace k8s.io/api => k8s.io/api v0.28.11 +replace k8s.io/api => k8s.io/api v0.28.14 -replace k8s.io/apiextensions-apiserver => k8s.io/apiextensions-apiserver v0.28.11 +replace k8s.io/apiextensions-apiserver => k8s.io/apiextensions-apiserver v0.28.14 -replace k8s.io/apimachinery => k8s.io/apimachinery v0.28.11 +replace k8s.io/apimachinery => k8s.io/apimachinery v0.28.14 -replace k8s.io/apiserver => k8s.io/apiserver v0.28.11 +replace k8s.io/apiserver => k8s.io/apiserver v0.28.14 -replace k8s.io/cli-runtime => k8s.io/cli-runtime v0.28.11 +replace k8s.io/cli-runtime => k8s.io/cli-runtime v0.28.14 -replace k8s.io/client-go => k8s.io/client-go v0.28.11 +replace k8s.io/client-go => k8s.io/client-go v0.28.14 -replace k8s.io/cloud-provider => k8s.io/cloud-provider v0.28.11 +replace k8s.io/cloud-provider => k8s.io/cloud-provider v0.28.14 -replace k8s.io/cluster-bootstrap => k8s.io/cluster-bootstrap v0.28.11 +replace k8s.io/cluster-bootstrap => k8s.io/cluster-bootstrap v0.28.14 -replace k8s.io/code-generator => k8s.io/code-generator v0.28.11 +replace k8s.io/code-generator => k8s.io/code-generator v0.28.14 -replace k8s.io/component-base => k8s.io/component-base v0.28.11 +replace k8s.io/component-base => k8s.io/component-base v0.28.14 -replace k8s.io/component-helpers => k8s.io/component-helpers v0.28.11 +replace k8s.io/component-helpers => k8s.io/component-helpers v0.28.14 -replace k8s.io/controller-manager => k8s.io/controller-manager v0.28.11 +replace k8s.io/controller-manager => k8s.io/controller-manager v0.28.14 -replace k8s.io/cri-api => k8s.io/cri-api v0.28.11 +replace k8s.io/cri-api => k8s.io/cri-api v0.28.14 -replace k8s.io/csi-translation-lib => k8s.io/csi-translation-lib v0.28.11 +replace k8s.io/csi-translation-lib => k8s.io/csi-translation-lib v0.28.14 -replace k8s.io/kube-aggregator => k8s.io/kube-aggregator v0.28.11 +replace k8s.io/kube-aggregator => k8s.io/kube-aggregator v0.28.14 -replace k8s.io/kube-controller-manager => k8s.io/kube-controller-manager v0.28.11 +replace k8s.io/kube-controller-manager => k8s.io/kube-controller-manager v0.28.14 -replace k8s.io/kube-proxy => k8s.io/kube-proxy v0.28.11 +replace k8s.io/kube-proxy => k8s.io/kube-proxy v0.28.14 -replace k8s.io/kube-scheduler => k8s.io/kube-scheduler v0.28.11 +replace k8s.io/kube-scheduler => k8s.io/kube-scheduler v0.28.14 -replace k8s.io/kubectl => k8s.io/kubectl v0.28.11 +replace k8s.io/kubectl => k8s.io/kubectl v0.28.14 -replace k8s.io/kubelet => k8s.io/kubelet v0.28.11 +replace k8s.io/kubelet => k8s.io/kubelet v0.28.14 -replace k8s.io/legacy-cloud-providers => k8s.io/legacy-cloud-providers v0.28.11 +replace k8s.io/legacy-cloud-providers => k8s.io/legacy-cloud-providers v0.28.14 -replace k8s.io/metrics => k8s.io/metrics v0.28.11 +replace k8s.io/metrics => k8s.io/metrics v0.28.14 -replace k8s.io/mount-utils => k8s.io/mount-utils v0.28.11 +replace k8s.io/mount-utils => k8s.io/mount-utils v0.28.14 -replace k8s.io/sample-apiserver => k8s.io/sample-apiserver v0.28.11 +replace k8s.io/sample-apiserver => k8s.io/sample-apiserver v0.28.14 -replace k8s.io/sample-cli-plugin => k8s.io/sample-cli-plugin v0.28.11 +replace k8s.io/sample-cli-plugin => k8s.io/sample-cli-plugin v0.28.14 -replace k8s.io/sample-controller => k8s.io/sample-controller v0.28.11 +replace k8s.io/sample-controller => k8s.io/sample-controller v0.28.14 -replace k8s.io/pod-security-admission => k8s.io/pod-security-admission v0.28.11 +replace k8s.io/pod-security-admission => k8s.io/pod-security-admission v0.28.14 -replace k8s.io/dynamic-resource-allocation => k8s.io/dynamic-resource-allocation v0.28.11 +replace k8s.io/dynamic-resource-allocation => k8s.io/dynamic-resource-allocation v0.28.14 -replace k8s.io/kms => k8s.io/kms v0.28.11 +replace k8s.io/kms => k8s.io/kms v0.28.14 replace k8s.io/noderesourcetopology-api => k8s.io/noderesourcetopology-api v0.27.0 -replace k8s.io/endpointslice => k8s.io/endpointslice v0.28.11 +replace k8s.io/endpointslice => k8s.io/endpointslice v0.28.14 diff --git a/cluster-autoscaler/go.sum b/cluster-autoscaler/go.sum index e3efd29f0371..ee288ada2a7e 100644 --- a/cluster-autoscaler/go.sum +++ b/cluster-autoscaler/go.sum @@ -1202,52 +1202,52 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -k8s.io/api v0.28.11 h1:2qFr3jSpjy/9QirmlRP0LZeomexuwyRlE8CWUn9hPNY= -k8s.io/api v0.28.11/go.mod h1:nQSGyxQ2sbS73i1zEJyaktFvFfD72z/7nU+LqxzNnXk= -k8s.io/apiextensions-apiserver v0.28.11 h1:EbHGxLgPVupsobUhwY9kLYES0yRLn65fV/aAuW52+xo= -k8s.io/apiextensions-apiserver v0.28.11/go.mod h1:eKJx8UVKgeaqFZWdU39Q8bNOnv21aFK55+riFdUhAJg= -k8s.io/apimachinery v0.28.11 h1:Ovrx7IOkKSgFJn8+d5BXOC7POzP4i7kOAVlx46iRQ04= -k8s.io/apimachinery v0.28.11/go.mod h1:zUG757HaKs6Dc3iGtKjzIpBfqTM4yiRsEe3/E7NX15o= -k8s.io/apiserver v0.28.11 h1:psPvPGLLQ8a9A/RMBmNZCDtdZl+SAGaGUmgRJwWJUVs= -k8s.io/apiserver v0.28.11/go.mod h1:R/TEx9vu8AlgAuasjca43rTazg9BI61NhTr4YqmduBI= -k8s.io/client-go v0.28.11 h1:YHtF6Bg4/DdYHHsx6f5Ti/0giwoo19t3DbBYYmo9xks= -k8s.io/client-go v0.28.11/go.mod h1:yi2BW8PQhFDLGmZ3WbyTJYX5J8YM6n3WUj1fvL7pJ4g= -k8s.io/cloud-provider v0.28.11 h1:mcnSeNqZDOQ5NwupExHuYzXFoWujTSfbYjIxIAfgQ1g= -k8s.io/cloud-provider v0.28.11/go.mod h1:o8owaKhBUV6N+FcNLincYuxbWd6OzwuJKNROMF+mDc0= +k8s.io/api v0.28.14 h1:7DXeMrQq+BJI6H7WtSMC8l1gM4QZWtWN65UbN+qZ9Uc= +k8s.io/api v0.28.14/go.mod h1:ROk/G6/7IZf14AL1WkpZdq//5khE1EtLNxkcEpSXNFM= +k8s.io/apiextensions-apiserver v0.28.14 h1:olGhq3lkOhhBOMQDGDg8ILoQ+OEtC4ceELEgg0i+2BQ= +k8s.io/apiextensions-apiserver v0.28.14/go.mod h1:wJ59VW3juItDDyP8yFTHkfmJtpDRlLgWYFzeefommBU= +k8s.io/apimachinery v0.28.14 h1:n2l8jNNOmUUDXpa8ljHCEUSeIChby1BKyqoL0AtpmGw= +k8s.io/apimachinery v0.28.14/go.mod h1:zUG757HaKs6Dc3iGtKjzIpBfqTM4yiRsEe3/E7NX15o= +k8s.io/apiserver v0.28.14 h1:Ji+w4LYu/vVLOKcA3toct/MxYh34geaLq9u+F4YjBgo= +k8s.io/apiserver v0.28.14/go.mod h1:6QQM1L8+dHTAURdKNasIUCgLbSBkjjCdGE6X1pSJzBU= +k8s.io/client-go v0.28.14 h1:wfPRgz07MvLMxcHfN8kAc4Qcwduc4My25A3CBU7OqBQ= +k8s.io/client-go v0.28.14/go.mod h1:HGfdb7BqkX4hRpNyVLHNQKWDU03W6a38LfIHD7QGJpI= +k8s.io/cloud-provider v0.28.14 h1:jiPB1EU1MH2kDi4ShiDZM4jukuDh1Qei1qg5uap5xAA= +k8s.io/cloud-provider v0.28.14/go.mod h1:Ai0V40gL+0ysnwQuzzhIwiMbJN+lpxP3Bzcg5hRXSk8= k8s.io/cloud-provider-aws v1.27.0 h1:PF8YrH8QcN6JoXB3Xxlaz84SBDYMPunJuCc0cPuCWXA= k8s.io/cloud-provider-aws v1.27.0/go.mod h1:9vUb5mnVnReSRDBWcBxB1b0HOeEc472iOPmrnwpN9SA= -k8s.io/component-base v0.28.11 h1:/CyCF+Mgb737LnvJ0pHxZHKnK/OPiXtxGBr9fcE82K4= -k8s.io/component-base v0.28.11/go.mod h1:GDfDeCmn5CKKfdqvSxFJEcyoiBYzujP2bMj1rU919Dc= -k8s.io/component-helpers v0.28.11 h1:yV9DSZqDYXjtI+vQBT/su3nkQHOcjZq7rqCXwaJ4Ks0= -k8s.io/component-helpers v0.28.11/go.mod h1:2bQFOSpUmsB+X2yjWTXfo5PLsDCHmDP0PyYdMKNreNA= -k8s.io/controller-manager v0.28.11 h1:m5XLAwAhMc+bz1P4DCZuxJFuFKEdyKLPWXfejiiqKCo= -k8s.io/controller-manager v0.28.11/go.mod h1:sW9cbFkT/m9atGirDkq94rDmzLcADb6PxOJVkKOy8AY= -k8s.io/cri-api v0.28.11 h1:AnkgVS9Sz7vwJZM2ptCY3jfmDYyZMV2nqxKMxfJ64Zo= -k8s.io/cri-api v0.28.11/go.mod h1:8/bPK3T4irPoj3LjriQc1TAIheeN2yWXR3mz+8jNZ8U= -k8s.io/csi-translation-lib v0.28.11 h1:fPmUdaqvgWNCEHtaGom+2v0jIL8iUv7gFq+7CC83Xmk= -k8s.io/csi-translation-lib v0.28.11/go.mod h1:+WMkOjFvrV09okM5qEzRECOwVvH2mhBQPSAYH+7sv4c= -k8s.io/dynamic-resource-allocation v0.28.11 h1:IwDrj+isvI6N9+qGKxntPEhWrT2ogM4GqULpNG/BKm0= -k8s.io/dynamic-resource-allocation v0.28.11/go.mod h1:Wd0imF63eR/Zpa++lM+XqYdjrkVoR4HOhV92460kzA8= +k8s.io/component-base v0.28.14 h1:sJowHyRY166hBfBQ4cOKjkSvUo4bUdeuePtEOQfSNRY= +k8s.io/component-base v0.28.14/go.mod h1:DgYlfHNvP1yeBb4L+UIzMsWNtOl0yqTk+4dGGc79H0w= +k8s.io/component-helpers v0.28.14 h1:dtN1Cvov/YzfZQgC6WK0ZImzIjpPM9futsA0bXcMfEA= +k8s.io/component-helpers v0.28.14/go.mod h1:jK8LbwcqlC9Me+hNXDEN9dtnkp5+Cvy67YIwKuz6Nu0= +k8s.io/controller-manager v0.28.14 h1:p5oiTzcm4nzNAWqqZBo5qjWpWB39MdokULHh6qaS0OE= +k8s.io/controller-manager v0.28.14/go.mod h1:DQVlenSLDVTLAqfHYQHVxRC+R+sDQTg/NlSkJSislX8= +k8s.io/cri-api v0.28.14 h1:17hHgdGMsjXKs+QcplWKBVOfWl6qfEQ8ZPvcyLVJvsw= +k8s.io/cri-api v0.28.14/go.mod h1:8/bPK3T4irPoj3LjriQc1TAIheeN2yWXR3mz+8jNZ8U= +k8s.io/csi-translation-lib v0.28.14 h1:IHWvTmoYx4qGOQuMq40oH7DtchagJP9zD7sS4n/2Bcs= +k8s.io/csi-translation-lib v0.28.14/go.mod h1:F9xtSqSPkvVcr5EMxxLMDxRtJitnSdHvKHxsCgnklLM= +k8s.io/dynamic-resource-allocation v0.28.14 h1:wKKCb7ijiGONI3kyfzRYoMG5jFRLjsdg6eIt91nZYZM= +k8s.io/dynamic-resource-allocation v0.28.14/go.mod h1:SUWNN/qHF9Kl3/JIYAoyAqktFV7UJgaYwY/bnK9Dxjs= k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= k8s.io/klog/v2 v2.80.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= k8s.io/klog/v2 v2.100.1 h1:7WCHKK6K8fNhTqfBhISHQ97KrnJNFZMcQvKp7gP/tmg= k8s.io/klog/v2 v2.100.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= -k8s.io/kms v0.28.11 h1:ZF4Tj/eOC/Ai0kfWdxubO+H/Sa19e56bYhGCTaC0j6Q= -k8s.io/kms v0.28.11/go.mod h1:OHQEkb4k4CRTodefxBnsBww1ia15Cc4mvwkilsxR2og= +k8s.io/kms v0.28.14 h1:uoBVvx8lnmchDPC422srnR0l4I515xeNy39wZq9Gq60= +k8s.io/kms v0.28.14/go.mod h1:WDhjuIDVtWsE+UGkWlbSowELajcO+h0JSc8C3dHQces= k8s.io/kube-openapi v0.0.0-20230717233707-2695361300d9 h1:LyMgNKD2P8Wn1iAwQU5OhxCKlKJy0sHc+PcDwFB24dQ= k8s.io/kube-openapi v0.0.0-20230717233707-2695361300d9/go.mod h1:wZK2AVp1uHCp4VamDVgBP2COHZjqD1T68Rf0CM3YjSM= -k8s.io/kube-scheduler v0.28.11 h1:3PN294bq1v9huIhVEYjThPP/83XG4CsxcmPOGA4rMQA= -k8s.io/kube-scheduler v0.28.11/go.mod h1:ANYrM+Qcw7gddvw7TIsrMP4P4HxigMImz8aIhT/8gqk= -k8s.io/kubectl v0.28.11 h1:9kJ715IY/QbnnrZRJVryL3uoVm0bDq88Br5HI10lavM= -k8s.io/kubectl v0.28.11/go.mod h1:yMBK/33GCQftCP5vpJH4CDutPxyRW4cMM8mC0bhGgm8= -k8s.io/kubelet v0.28.11 h1:UjMFkOAG6QzhxYMvISugqfpXrAQZ6ABBIttoLHeABZM= -k8s.io/kubelet v0.28.11/go.mod h1:l/rNAtULxUInrQ36aQkQGlxXLyQEjSmmwgugf1nJui0= -k8s.io/kubernetes v1.28.11 h1:P8v8pnlJJrJvbVOgQ+W2GPRUtYK86Hmtpe5VceDnW2A= -k8s.io/kubernetes v1.28.11/go.mod h1:chlmcCDBnOA/y+572cw8dO0Rci1wiA8bm5+zhPdFLCk= -k8s.io/legacy-cloud-providers v0.28.11 h1:5qJYIZiSKhkuHALQwzT0XR7JOwDjeOn+MusRa29cwiM= -k8s.io/legacy-cloud-providers v0.28.11/go.mod h1:2l1MIWk11PL/V3Z144gP0ZORoiP8ZLoZRs5Y1b6eIfI= -k8s.io/mount-utils v0.28.11 h1:n14zULz/VsR0J7hWiYUdCqg4g4EKY6q9ciIidaSX59w= -k8s.io/mount-utils v0.28.11/go.mod h1:ZxAFXgKzcAyi3VTd2pKFlZFswl9Q/cveJ5aptdjQOuc= +k8s.io/kube-scheduler v0.28.14 h1:S6gSck47R3StxL4O/1HeGl9ZtEUNOzxP4AjkHyrGzYA= +k8s.io/kube-scheduler v0.28.14/go.mod h1:5Hd1Ds3HpQxMqLYJb0GVYUE9idVOji713kFHFJMt93c= +k8s.io/kubectl v0.28.14 h1:BiYli8iFEvV30x0JdaDCyZsqwCk2mgqlhe4eDsNjyCk= +k8s.io/kubectl v0.28.14/go.mod h1:okcvFR+Dpk9Ko4UzBvnE0ha99WfwC+QnIvp6h2Mwvto= +k8s.io/kubelet v0.28.14 h1:nKLJsbVZVBbe9i5VYhWWxv3rZ/63C/tTrweHTDmZBjY= +k8s.io/kubelet v0.28.14/go.mod h1:wGsgJm3PsckoUMbs5r8gCOc7PPXxQcyzNEHbF8U/L8k= +k8s.io/kubernetes v1.28.14 h1:Q0qoY+dKjqAhSrVSAebEMVUK5zfrg9Sz3I/4aHnOCaQ= +k8s.io/kubernetes v1.28.14/go.mod h1:chlmcCDBnOA/y+572cw8dO0Rci1wiA8bm5+zhPdFLCk= +k8s.io/legacy-cloud-providers v0.28.14 h1:PGjSrChY2Z6JL77EJTU9/mgh3ywW2ddgaTSgC4cFPaY= +k8s.io/legacy-cloud-providers v0.28.14/go.mod h1:aJUpkPdYWE/MyV9OyQMf2KQn4FxE3S3MwMIAkhMM8Bg= +k8s.io/mount-utils v0.28.14 h1:WUaFoWulcmWEEZjUvW+iquuCw6imxvh+r65qeRgzPB0= +k8s.io/mount-utils v0.28.14/go.mod h1:ZxAFXgKzcAyi3VTd2pKFlZFswl9Q/cveJ5aptdjQOuc= k8s.io/utils v0.0.0-20211116205334-6203023598ed/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= k8s.io/utils v0.0.0-20230406110748-d93618cff8a2 h1:qY1Ad8PODbnymg2pRbkyMT/ylpTrCM8P2RJ0yroCyIk= k8s.io/utils v0.0.0-20230406110748-d93618cff8a2/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= diff --git a/cluster-autoscaler/vendor/k8s.io/api/admissionregistration/v1alpha1/types.go b/cluster-autoscaler/vendor/k8s.io/api/admissionregistration/v1alpha1/types.go index 575456c83866..27d277927c41 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/admissionregistration/v1alpha1/types.go +++ b/cluster-autoscaler/vendor/k8s.io/api/admissionregistration/v1alpha1/types.go @@ -142,7 +142,7 @@ type ValidatingAdmissionPolicyList struct { // +optional metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` // List of ValidatingAdmissionPolicy. - Items []ValidatingAdmissionPolicy `json:"items,omitempty" protobuf:"bytes,2,rep,name=items"` + Items []ValidatingAdmissionPolicy `json:"items" protobuf:"bytes,2,rep,name=items"` } // ValidatingAdmissionPolicySpec is the specification of the desired behavior of the AdmissionPolicy. @@ -404,7 +404,7 @@ type ValidatingAdmissionPolicyBindingList struct { // +optional metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` // List of PolicyBinding. - Items []ValidatingAdmissionPolicyBinding `json:"items,omitempty" protobuf:"bytes,2,rep,name=items"` + Items []ValidatingAdmissionPolicyBinding `json:"items" protobuf:"bytes,2,rep,name=items"` } // ValidatingAdmissionPolicyBindingSpec is the specification of the ValidatingAdmissionPolicyBinding. diff --git a/cluster-autoscaler/vendor/k8s.io/api/admissionregistration/v1beta1/types.go b/cluster-autoscaler/vendor/k8s.io/api/admissionregistration/v1beta1/types.go index c199702fbd02..9ae3af8f111d 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/admissionregistration/v1beta1/types.go +++ b/cluster-autoscaler/vendor/k8s.io/api/admissionregistration/v1beta1/types.go @@ -158,7 +158,7 @@ type ValidatingAdmissionPolicyList struct { // +optional metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` // List of ValidatingAdmissionPolicy. - Items []ValidatingAdmissionPolicy `json:"items,omitempty" protobuf:"bytes,2,rep,name=items"` + Items []ValidatingAdmissionPolicy `json:"items" protobuf:"bytes,2,rep,name=items"` } // ValidatingAdmissionPolicySpec is the specification of the desired behavior of the AdmissionPolicy. @@ -419,7 +419,7 @@ type ValidatingAdmissionPolicyBindingList struct { // +optional metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` // List of PolicyBinding. - Items []ValidatingAdmissionPolicyBinding `json:"items,omitempty" protobuf:"bytes,2,rep,name=items"` + Items []ValidatingAdmissionPolicyBinding `json:"items" protobuf:"bytes,2,rep,name=items"` } // ValidatingAdmissionPolicyBindingSpec is the specification of the ValidatingAdmissionPolicyBinding. diff --git a/cluster-autoscaler/vendor/k8s.io/api/batch/v1/types.go b/cluster-autoscaler/vendor/k8s.io/api/batch/v1/types.go index 8a28614c0b4d..434e266fde45 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/batch/v1/types.go +++ b/cluster-autoscaler/vendor/k8s.io/api/batch/v1/types.go @@ -170,7 +170,7 @@ type PodFailurePolicyOnExitCodesRequirement struct { // When specified, it should match one the container or initContainer // names in the pod template. // +optional - ContainerName *string `json:"containerName" protobuf:"bytes,1,opt,name=containerName"` + ContainerName *string `json:"containerName,omitempty" protobuf:"bytes,1,opt,name=containerName"` // Represents the relationship between the container exit code(s) and the // specified values. Containers completed with success (exit code 0) are @@ -230,14 +230,14 @@ type PodFailurePolicyRule struct { // Represents the requirement on the container exit codes. // +optional - OnExitCodes *PodFailurePolicyOnExitCodesRequirement `json:"onExitCodes" protobuf:"bytes,2,opt,name=onExitCodes"` + OnExitCodes *PodFailurePolicyOnExitCodesRequirement `json:"onExitCodes,omitempty" protobuf:"bytes,2,opt,name=onExitCodes"` // Represents the requirement on the pod conditions. The requirement is represented // as a list of pod condition patterns. The requirement is satisfied if at // least one pattern matches an actual pod condition. At most 20 elements are allowed. // +listType=atomic // +optional - OnPodConditions []PodFailurePolicyOnPodConditionsPattern `json:"onPodConditions" protobuf:"bytes,3,opt,name=onPodConditions"` + OnPodConditions []PodFailurePolicyOnPodConditionsPattern `json:"onPodConditions,omitempty" protobuf:"bytes,3,opt,name=onPodConditions"` } // PodFailurePolicy describes how failed pods influence the backoffLimit. diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/admission/plugin/validatingadmissionpolicy/controller_reconcile.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/admission/plugin/validatingadmissionpolicy/controller_reconcile.go index b2624694c846..9cd3c01aed34 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/admission/plugin/validatingadmissionpolicy/controller_reconcile.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/admission/plugin/validatingadmissionpolicy/controller_reconcile.go @@ -180,8 +180,9 @@ func (c *policyController) reconcilePolicyDefinitionSpec(namespace, name string, celmetrics.Metrics.ObserveDefinition(context.TODO(), "active", "deny") } - // Skip reconcile if the spec of the definition is unchanged - if info.lastReconciledValue != nil && definition != nil && + // Skip reconcile if the spec of the definition is unchanged and had a + // successful previous sync + if info.configurationError == nil && info.lastReconciledValue != nil && definition != nil && apiequality.Semantic.DeepEqual(info.lastReconciledValue.Spec, definition.Spec) { return nil } diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/cacher/cacher.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/cacher/cacher.go index e34fb498630d..ec5b5b267d2c 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/cacher/cacher.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/cacher/cacher.go @@ -52,7 +52,8 @@ import ( ) var ( - emptyFunc = func(bool) {} + emptyFunc = func(bool) {} + coreNamespaceResource = schema.GroupResource{Group: "", Resource: "namespaces"} ) const ( @@ -552,6 +553,12 @@ func (c *Cacher) Watch(ctx context.Context, key string, opts storage.ListOptions scope.name = selectorName } + // for request like '/api/v1/watch/namespaces/*', set scope.namespace to empty. + // namespaces don't populate metadata.namespace in ObjFields. + if c.groupResource == coreNamespaceResource && len(scope.namespace) > 0 && scope.namespace == scope.name { + scope.namespace = "" + } + triggerValue, triggerSupported := "", false if c.indexedTrigger != nil { for _, field := range pred.IndexFields { diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kubelet.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kubelet.go index e8918472ee8d..5e7f5360b220 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kubelet.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kubelet.go @@ -38,7 +38,7 @@ import ( "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/trace" "k8s.io/client-go/informers" - + utilfs "k8s.io/kubernetes/pkg/util/filesystem" "k8s.io/mount-utils" "k8s.io/utils/integer" netutils "k8s.io/utils/net" @@ -1366,17 +1366,17 @@ func (kl *Kubelet) setupDataDirs() error { if err := os.MkdirAll(kl.getPodsDir(), 0750); err != nil { return fmt.Errorf("error creating pods directory: %v", err) } - if err := os.MkdirAll(kl.getPluginsDir(), 0750); err != nil { + if err := utilfs.MkdirAll(kl.getPluginsDir(), 0750); err != nil { return fmt.Errorf("error creating plugins directory: %v", err) } - if err := os.MkdirAll(kl.getPluginsRegistrationDir(), 0750); err != nil { + if err := utilfs.MkdirAll(kl.getPluginsRegistrationDir(), 0750); err != nil { return fmt.Errorf("error creating plugins registry directory: %v", err) } if err := os.MkdirAll(kl.getPodResourcesDir(), 0750); err != nil { return fmt.Errorf("error creating podresources directory: %v", err) } if utilfeature.DefaultFeatureGate.Enabled(features.ContainerCheckpoint) { - if err := os.MkdirAll(kl.getCheckpointsDir(), 0700); err != nil { + if err := utilfs.MkdirAll(kl.getCheckpointsDir(), 0700); err != nil { return fmt.Errorf("error creating checkpoint directory: %v", err) } } @@ -1466,6 +1466,14 @@ func (kl *Kubelet) initializeModules() error { } } + if sysruntime.GOOS == "windows" { + // On Windows we should not allow other users to read the logs directory + // to avoid allowing non-root containers from reading the logs of other containers. + if err := utilfs.Chmod(ContainerLogsDir, 0750); err != nil { + return fmt.Errorf("failed to set permissions on directory %q: %w", ContainerLogsDir, err) + } + } + // Start the image manager. kl.imageManager.Start() @@ -2013,11 +2021,12 @@ func (kl *Kubelet) SyncTerminatingPod(_ context.Context, pod *v1.Pod, podStatus // catch race conditions introduced by callers updating pod status out of order. // TODO: have KillPod return the terminal status of stopped containers and write that into the // cache immediately - podStatus, err := kl.containerRuntime.GetPodStatus(ctx, pod.UID, pod.Name, pod.Namespace) + stoppedPodStatus, err := kl.containerRuntime.GetPodStatus(ctx, pod.UID, pod.Name, pod.Namespace) if err != nil { klog.ErrorS(err, "Unable to read pod status prior to final pod termination", "pod", klog.KObj(pod), "podUID", pod.UID) return err } + preserveDataFromBeforeStopping(stoppedPodStatus, podStatus) var runningContainers []string type container struct { Name string @@ -2028,7 +2037,7 @@ func (kl *Kubelet) SyncTerminatingPod(_ context.Context, pod *v1.Pod, podStatus var containers []container klogV := klog.V(4) klogVEnabled := klogV.Enabled() - for _, s := range podStatus.ContainerStatuses { + for _, s := range stoppedPodStatus.ContainerStatuses { if s.State == kubecontainer.ContainerStateRunning { runningContainers = append(runningContainers, s.ID.String()) } @@ -2057,7 +2066,7 @@ func (kl *Kubelet) SyncTerminatingPod(_ context.Context, pod *v1.Pod, podStatus // The computation is done here to ensure the pod status used for it contains // information about the container end states (including exit codes) - when // SyncTerminatedPod is called the containers may already be removed. - apiPodStatus = kl.generateAPIPodStatus(pod, podStatus, true) + apiPodStatus = kl.generateAPIPodStatus(pod, stoppedPodStatus, true) kl.statusManager.SetPodStatus(pod, apiPodStatus) // we have successfully stopped all containers, the pod is terminating, our status is "done" @@ -2066,6 +2075,15 @@ func (kl *Kubelet) SyncTerminatingPod(_ context.Context, pod *v1.Pod, podStatus return nil } +// preserveDataFromBeforeStopping preserves data, like IPs, which are expected +// to be sent to the API server after termination, but are no longer returned by +// containerRuntime.GetPodStatus for a stopped pod. +// Note that Kubelet restart, after the pod is stopped, may still cause losing +// track of the data. +func preserveDataFromBeforeStopping(stoppedPodStatus, podStatus *kubecontainer.PodStatus) { + stoppedPodStatus.IPs = podStatus.IPs +} + // SyncTerminatingRuntimePod is expected to terminate running containers in a pod that we have no // configuration for. Once this method returns without error, any remaining local state can be safely // cleaned up by background processes in each subsystem. Unlike syncTerminatingPod, we lack @@ -2532,7 +2550,8 @@ func (kl *Kubelet) HandlePodAdditions(pods []*v1.Pod) { // shutting it down. If the pod hasn't started yet, we know that when // the pod worker is invoked it will also avoid setting up the pod, so // we simply avoid doing any work. - if !kl.podWorkers.IsPodTerminationRequested(pod.UID) { + // We also do not try to admit the pod that is already in terminated state. + if !kl.podWorkers.IsPodTerminationRequested(pod.UID) && !podutil.IsPodPhaseTerminal(pod.Status.Phase) { // We failed pods that we rejected, so activePods include all admitted // pods that are alive. activePods := kl.filterOutInactivePods(existingPods) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/kuberuntime_manager.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/kuberuntime_manager.go index 9854b207fd0c..bdc55b542cba 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/kuberuntime_manager.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/kuberuntime_manager.go @@ -22,6 +22,7 @@ import ( "fmt" "os" "path/filepath" + "runtime" "sort" "time" @@ -64,6 +65,7 @@ import ( "k8s.io/kubernetes/pkg/kubelet/util/cache" "k8s.io/kubernetes/pkg/kubelet/util/format" sc "k8s.io/kubernetes/pkg/securitycontext" + utilfs "k8s.io/kubernetes/pkg/util/filesystem" ) const ( @@ -266,6 +268,14 @@ func NewKubeGenericRuntimeManager( if err := osInterface.MkdirAll(podLogsRootDirectory, 0755); err != nil { klog.ErrorS(err, "Failed to create pod log directory", "path", podLogsRootDirectory) } + + if runtime.GOOS == "windows" { + // On Windows we should not allow other users to read the logs directory + // to avoid allowing non-root containers from reading the logs of other pods. + if err := utilfs.Chmod(podLogsRootDirectory, 0750); err != nil { + klog.ErrorS(err, "Failed to set permissions on pod log directory", "path", podLogsRootDirectory) + } + } } if imageCredentialProviderConfigFile != "" || imageCredentialProviderBinDir != "" { diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/winstats/perfcounter_nodestats.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/winstats/perfcounter_nodestats.go index 992f96d7fbef..c8412f1af2f9 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/winstats/perfcounter_nodestats.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/winstats/perfcounter_nodestats.go @@ -20,10 +20,7 @@ limitations under the License. package winstats import ( - "errors" - "fmt" "os" - "os/exec" "runtime" "strconv" "strings" @@ -33,6 +30,7 @@ import ( "unsafe" cadvisorapi "github.com/google/cadvisor/info/v1" + "github.com/pkg/errors" "golang.org/x/sys/windows" "golang.org/x/sys/windows/registry" "k8s.io/apimachinery/pkg/util/wait" @@ -256,15 +254,21 @@ func (p *perfCounterNodeStatsClient) getCPUUsageNanoCores() uint64 { } func getSystemUUID() (string, error) { - result, err := exec.Command("wmic", "csproduct", "get", "UUID").Output() + k, err := registry.OpenKey(registry.LOCAL_MACHINE, `SYSTEM\HardwareConfig`, registry.QUERY_VALUE) if err != nil { - return "", err + return "", errors.Wrap(err, "failed to open registry key HKLM\\SYSTEM\\HardwareConfig") } - fields := strings.Fields(string(result)) - if len(fields) != 2 { - return "", fmt.Errorf("received unexpected value retrieving vm uuid: %q", string(result)) + defer k.Close() + + uuid, _, err := k.GetStringValue("LastConfig") + if err != nil { + return "", errors.Wrap(err, "failed to read registry value LastConfig from key HKLM\\SYSTEM\\HardwareConfig") } - return fields[1], nil + + uuid = strings.Trim(uuid, "{") + uuid = strings.Trim(uuid, "}") + uuid = strings.ToUpper(uuid) + return uuid, nil } func getPhysicallyInstalledSystemMemoryBytes() (uint64, error) { diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/config/config.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/config/config.go index 090062c46ba9..bcbbaf3005e2 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/config/config.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/config/config.go @@ -71,11 +71,9 @@ type EndpointSliceConfig struct { // NewEndpointSliceConfig creates a new EndpointSliceConfig. func NewEndpointSliceConfig(endpointSliceInformer discoveryinformers.EndpointSliceInformer, resyncPeriod time.Duration) *EndpointSliceConfig { - result := &EndpointSliceConfig{ - listerSynced: endpointSliceInformer.Informer().HasSynced, - } + result := &EndpointSliceConfig{} - endpointSliceInformer.Informer().AddEventHandlerWithResyncPeriod( + handlerRegistration, _ := endpointSliceInformer.Informer().AddEventHandlerWithResyncPeriod( cache.ResourceEventHandlerFuncs{ AddFunc: result.handleAddEndpointSlice, UpdateFunc: result.handleUpdateEndpointSlice, @@ -84,6 +82,8 @@ func NewEndpointSliceConfig(endpointSliceInformer discoveryinformers.EndpointSli resyncPeriod, ) + result.listerSynced = handlerRegistration.HasSynced + return result } @@ -162,11 +162,9 @@ type ServiceConfig struct { // NewServiceConfig creates a new ServiceConfig. func NewServiceConfig(serviceInformer coreinformers.ServiceInformer, resyncPeriod time.Duration) *ServiceConfig { - result := &ServiceConfig{ - listerSynced: serviceInformer.Informer().HasSynced, - } + result := &ServiceConfig{} - serviceInformer.Informer().AddEventHandlerWithResyncPeriod( + handlerRegistration, _ := serviceInformer.Informer().AddEventHandlerWithResyncPeriod( cache.ResourceEventHandlerFuncs{ AddFunc: result.handleAddService, UpdateFunc: result.handleUpdateService, @@ -175,6 +173,8 @@ func NewServiceConfig(serviceInformer coreinformers.ServiceInformer, resyncPerio resyncPeriod, ) + result.listerSynced = handlerRegistration.HasSynced + return result } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/preemption/preemption.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/preemption/preemption.go index 049f53aab457..947b96af7cd0 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/preemption/preemption.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/preemption/preemption.go @@ -362,7 +362,7 @@ func (ev *Evaluator) prepareCandidate(ctx context.Context, c Candidate, pod *v1. Reason: v1.PodReasonPreemptionByScheduler, Message: fmt.Sprintf("%s: preempting to accommodate a higher priority pod", pod.Spec.SchedulerName), } - newStatus := pod.Status.DeepCopy() + newStatus := victim.Status.DeepCopy() updated := apipod.UpdatePodCondition(newStatus, condition) if updated { if err := util.PatchPodStatus(ctx, cs, victim, newStatus); err != nil { diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/internal/queue/scheduling_queue.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/internal/queue/scheduling_queue.go index 0781b275412d..7ab9fccf4392 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/internal/queue/scheduling_queue.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/internal/queue/scheduling_queue.go @@ -47,6 +47,7 @@ import ( "k8s.io/kubernetes/pkg/features" "k8s.io/kubernetes/pkg/scheduler/framework" "k8s.io/kubernetes/pkg/scheduler/framework/plugins/interpodaffinity" + "k8s.io/kubernetes/pkg/scheduler/framework/plugins/names" "k8s.io/kubernetes/pkg/scheduler/internal/heap" "k8s.io/kubernetes/pkg/scheduler/metrics" "k8s.io/kubernetes/pkg/scheduler/util" @@ -1098,11 +1099,25 @@ func (p *PriorityQueue) requeuePodViaQueueingHint(logger klog.Logger, pInfo *fra func (p *PriorityQueue) movePodsToActiveOrBackoffQueue(logger klog.Logger, podInfoList []*framework.QueuedPodInfo, event framework.ClusterEvent, oldObj, newObj interface{}) { activated := false for _, pInfo := range podInfoList { - // Since there may be many gated pods and they will not move from the - // unschedulable pool, we skip calling the expensive isPodWorthRequeueing. - if pInfo.Gated { + // When handling events takes time, a scheduling throughput gets impacted negatively + // because of a shared lock within PriorityQueue, which Pop() also requires. + // + // Scheduling-gated Pods never get schedulable with any events, + // except the Pods themselves got updated, which isn't handled by movePodsToActiveOrBackoffQueue. + // So, we can skip them early here so that they don't go through isPodWorthRequeuing, + // which isn't fast enough to keep a sufficient scheduling throughput + // when the number of scheduling-gated Pods in unschedulablePods is large. + // https://github.com/kubernetes/kubernetes/issues/124384 + // This is a hotfix for this issue, which might be changed + // once we have a better general solution for the shared lock issue. + // + // Note that we cannot skip all pInfo.Gated Pods here + // because PreEnqueue plugins apart from the scheduling gate plugin may change the gating status + // with these events. + if pInfo.Gated && pInfo.UnschedulablePlugins.Has(names.SchedulingGates) { continue } + schedulingHint := p.isPodWorthRequeuing(logger, pInfo, event, oldObj, newObj) if schedulingHint == framework.QueueSkip { // QueueingHintFn determined that this Pod isn't worth putting to activeQ or backoffQ by this event. diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/securitycontext/util.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/securitycontext/util.go index 5895df0c7183..28771b6df27c 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/securitycontext/util.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/securitycontext/util.go @@ -188,7 +188,7 @@ func AddNoNewPrivileges(sc *v1.SecurityContext) bool { var ( // These *must* be kept in sync with moby/moby. - // https://github.com/moby/moby/blob/master/oci/defaults.go#L105-L123 + // https://github.com/moby/moby/blob/master/oci/defaults.go#L105-L124 // @jessfraz will watch changes to those files upstream. defaultMaskedPaths = []string{ "/proc/asound", @@ -201,6 +201,7 @@ var ( "/proc/sched_debug", "/proc/scsi", "/sys/firmware", + "/sys/devices/virtual/powercap", } defaultReadonlyPaths = []string{ "/proc/bus", diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/filesystem/defaultfs.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/filesystem/defaultfs.go index 0ddd2248fa9d..d0150eb010dd 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/filesystem/defaultfs.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/filesystem/defaultfs.go @@ -70,9 +70,8 @@ func (fs *DefaultFs) Rename(oldpath, newpath string) error { return os.Rename(oldpath, newpath) } -// MkdirAll via os.MkdirAll func (fs *DefaultFs) MkdirAll(path string, perm os.FileMode) error { - return os.MkdirAll(fs.prefix(path), perm) + return MkdirAll(fs.prefix(path), perm) } // Chtimes via os.Chtimes diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/filesystem/util_unix.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/filesystem/util_unix.go new file mode 100644 index 000000000000..2dc307cdc3de --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/filesystem/util_unix.go @@ -0,0 +1,34 @@ +//go:build freebsd || linux || darwin +// +build freebsd linux darwin + +/* +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 filesystem + +import ( + "os" +) + +// Chmod is the same as os.Chmod on Linux. +func Chmod(name string, mode os.FileMode) error { + return os.Chmod(name, mode) +} + +// MkdirAll is the same as os.MkdirAll on Linux. +func MkdirAll(path string, perm os.FileMode) error { + return os.MkdirAll(path, perm) +} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/filesystem/util_windows.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/filesystem/util_windows.go new file mode 100644 index 000000000000..ec57e1d44f48 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/filesystem/util_windows.go @@ -0,0 +1,183 @@ +//go:build windows +// +build windows + +/* +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 filesystem + +import ( + "fmt" + "os" + + "k8s.io/klog/v2" + + "golang.org/x/sys/windows" +) + +// On Windows os.Mkdir all doesn't set any permissions so call the Chown function below to set +// permissions once the directory is created. +func MkdirAll(path string, perm os.FileMode) error { + klog.V(6).InfoS("Function MkdirAll starts", "path", path, "perm", perm) + err := os.MkdirAll(path, perm) + if err != nil { + return fmt.Errorf("Error creating directory %s: %v", path, err) + } + + err = Chmod(path, perm) + if err != nil { + return fmt.Errorf("Error setting permissions for directory %s: %v", path, err) + } + + return nil +} + +const ( + // These aren't defined in the syscall package for Windows :( + USER_READ = 0x100 + USER_WRITE = 0x80 + USER_EXECUTE = 0x40 + GROUP_READ = 0x20 + GROUP_WRITE = 0x10 + GROUP_EXECUTE = 0x8 + OTHERS_READ = 0x4 + OTHERS_WRITE = 0x2 + OTHERS_EXECUTE = 0x1 + USER_ALL = USER_READ | USER_WRITE | USER_EXECUTE + GROUP_ALL = GROUP_READ | GROUP_WRITE | GROUP_EXECUTE + OTHERS_ALL = OTHERS_READ | OTHERS_WRITE | OTHERS_EXECUTE +) + +// On Windows os.Chmod only sets the read-only flag on files, so we need to use Windows APIs to set the desired access on files / directories. +// The OWNER mode will set file permissions for the file owner SID, the GROUP mode will set file permissions for the file group SID, +// and the OTHERS mode will set file permissions for BUILTIN\Users. +// Please note that Windows containers can be run as one of two user accounts; ContainerUser or ContainerAdministrator. +// Containers run as ContainerAdministrator will inherit permissions from BUILTIN\Administrators, +// while containers run as ContainerUser will inherit permissions from BUILTIN\Users. +// Windows containers do not have the ability to run as a custom user account that is known to the host so the OTHERS group mode +// is used to grant / deny permissions of files on the hosts to the ContainerUser account. +func Chmod(path string, filemode os.FileMode) error { + klog.V(6).InfoS("Function Chmod starts", "path", path, "filemode", filemode) + // Get security descriptor for the file + sd, err := windows.GetNamedSecurityInfo( + path, + windows.SE_FILE_OBJECT, + windows.DACL_SECURITY_INFORMATION|windows.PROTECTED_DACL_SECURITY_INFORMATION|windows.OWNER_SECURITY_INFORMATION|windows.GROUP_SECURITY_INFORMATION) + if err != nil { + return fmt.Errorf("Error getting security descriptor for file %s: %v", path, err) + } + + // Get owner SID from the security descriptor for assigning USER permissions + owner, _, err := sd.Owner() + if err != nil { + return fmt.Errorf("Error getting owner SID for file %s: %v", path, err) + } + ownerString := owner.String() + + // Get the group SID from the security descriptor for assigning GROUP permissions + group, _, err := sd.Group() + if err != nil { + return fmt.Errorf("Error getting group SID for file %s: %v", path, err) + } + groupString := group.String() + + mask := uint32(windows.ACCESS_MASK(filemode)) + + // Build a new Discretionary Access Control List (DACL) with the desired permissions using + //the Security Descriptor Definition Language (SDDL) format. + // https://learn.microsoft.com/windows/win32/secauthz/security-descriptor-definition-language + // the DACL is a list of Access Control Entries (ACEs) where each ACE represents the permissions (Allow or Deny) for a specific SID. + // Each ACE has the following format: + // (AceType;AceFlags;Rights;ObjectGuid;InheritObjectGuid;AccountSid) + // We can leave ObjectGuid and InheritObjectGuid empty for our purposes. + + dacl := "D:" + + // build the owner ACE + dacl += "(A;OICI;" + if mask&USER_ALL == USER_ALL { + dacl += "FA" + } else { + if mask&USER_READ == USER_READ { + dacl += "FR" + } + if mask&USER_WRITE == USER_WRITE { + dacl += "FW" + } + if mask&USER_EXECUTE == USER_EXECUTE { + dacl += "FX" + } + } + dacl += ";;;" + ownerString + ")" + + // Build the group ACE + dacl += "(A;OICI;" + if mask&GROUP_ALL == GROUP_ALL { + dacl += "FA" + } else { + if mask&GROUP_READ == GROUP_READ { + dacl += "FR" + } + if mask&GROUP_WRITE == GROUP_WRITE { + dacl += "FW" + } + if mask&GROUP_EXECUTE == GROUP_EXECUTE { + dacl += "FX" + } + } + dacl += ";;;" + groupString + ")" + + // Build the others ACE + dacl += "(A;OICI;" + if mask&OTHERS_ALL == OTHERS_ALL { + dacl += "FA" + } else { + if mask&OTHERS_READ == OTHERS_READ { + dacl += "FR" + } + if mask&OTHERS_WRITE == OTHERS_WRITE { + dacl += "FW" + } + if mask&OTHERS_EXECUTE == OTHERS_EXECUTE { + dacl += "FX" + } + } + dacl += ";;;BU)" + + klog.V(6).InfoS("Setting new DACL for path", "path", path, "dacl", dacl) + + // create a new security descriptor from the DACL string + newSD, err := windows.SecurityDescriptorFromString(dacl) + if err != nil { + return fmt.Errorf("Error creating new security descriptor from DACL string: %v", err) + } + + // get the DACL in binary format from the newly created security descriptor + newDACL, _, err := newSD.DACL() + if err != nil { + return fmt.Errorf("Error getting DACL from new security descriptor: %v", err) + } + + // Write the new security descriptor to the file + return windows.SetNamedSecurityInfo( + path, + windows.SE_FILE_OBJECT, + windows.DACL_SECURITY_INFORMATION|windows.PROTECTED_DACL_SECURITY_INFORMATION, + nil, // owner SID + nil, // group SID + newDACL, + nil) // SACL +} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/git_repo/git_repo.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/git_repo/git_repo.go index 995018d90072..b3827b92ad0f 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/git_repo/git_repo.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/git_repo/git_repo.go @@ -261,6 +261,12 @@ func validateVolume(src *v1.GitRepoVolumeSource) error { if err := validateNonFlagArgument(src.Directory, "directory"); err != nil { return err } + if (src.Revision != "") && (src.Directory != "") { + cleanedDir := filepath.Clean(src.Directory) + if strings.Contains(cleanedDir, "/") || (strings.Contains(cleanedDir, "\\")) { + return fmt.Errorf("%q is not a valid directory, it must not contain a directory separator", src.Directory) + } + } return nil } diff --git a/cluster-autoscaler/vendor/k8s.io/mount-utils/mount_helper_unix.go b/cluster-autoscaler/vendor/k8s.io/mount-utils/mount_helper_unix.go index 9193e7c8d2bd..1c603dca7a0a 100644 --- a/cluster-autoscaler/vendor/k8s.io/mount-utils/mount_helper_unix.go +++ b/cluster-autoscaler/vendor/k8s.io/mount-utils/mount_helper_unix.go @@ -61,7 +61,13 @@ func IsCorruptedMnt(err error) bool { underlyingError = err } - return underlyingError == syscall.ENOTCONN || underlyingError == syscall.ESTALE || underlyingError == syscall.EIO || underlyingError == syscall.EACCES || underlyingError == syscall.EHOSTDOWN || underlyingError == syscall.EWOULDBLOCK + return errors.Is(underlyingError, syscall.ENOTCONN) || + errors.Is(underlyingError, syscall.ESTALE) || + errors.Is(underlyingError, syscall.EIO) || + errors.Is(underlyingError, syscall.EACCES) || + errors.Is(underlyingError, syscall.EHOSTDOWN) || + errors.Is(underlyingError, syscall.EWOULDBLOCK) || + errors.Is(underlyingError, syscall.ENODEV) } // MountInfo represents a single line in /proc//mountinfo. diff --git a/cluster-autoscaler/vendor/modules.txt b/cluster-autoscaler/vendor/modules.txt index 0bd44e1b4ffc..90d6cf0d72e4 100644 --- a/cluster-autoscaler/vendor/modules.txt +++ b/cluster-autoscaler/vendor/modules.txt @@ -1104,7 +1104,7 @@ gopkg.in/yaml.v2 # gopkg.in/yaml.v3 v3.0.1 ## explicit gopkg.in/yaml.v3 -# k8s.io/api v0.28.12 => k8s.io/api v0.28.11 +# k8s.io/api v0.28.14 => k8s.io/api v0.28.14 ## explicit; go 1.20 k8s.io/api/admission/v1 k8s.io/api/admission/v1beta1 @@ -1160,10 +1160,10 @@ k8s.io/api/scheduling/v1beta1 k8s.io/api/storage/v1 k8s.io/api/storage/v1alpha1 k8s.io/api/storage/v1beta1 -# k8s.io/apiextensions-apiserver v0.0.0 => k8s.io/apiextensions-apiserver v0.28.11 +# k8s.io/apiextensions-apiserver v0.0.0 => k8s.io/apiextensions-apiserver v0.28.14 ## explicit; go 1.20 k8s.io/apiextensions-apiserver/pkg/features -# k8s.io/apimachinery v0.28.12 => k8s.io/apimachinery v0.28.11 +# k8s.io/apimachinery v0.28.14 => k8s.io/apimachinery v0.28.14 ## explicit; go 1.20 k8s.io/apimachinery/pkg/api/equality k8s.io/apimachinery/pkg/api/errors @@ -1226,7 +1226,7 @@ k8s.io/apimachinery/pkg/watch k8s.io/apimachinery/third_party/forked/golang/json k8s.io/apimachinery/third_party/forked/golang/netutil k8s.io/apimachinery/third_party/forked/golang/reflect -# k8s.io/apiserver v0.28.12 => k8s.io/apiserver v0.28.11 +# k8s.io/apiserver v0.28.14 => k8s.io/apiserver v0.28.14 ## explicit; go 1.20 k8s.io/apiserver/pkg/admission k8s.io/apiserver/pkg/admission/cel @@ -1371,7 +1371,7 @@ k8s.io/apiserver/plugin/pkg/audit/truncate k8s.io/apiserver/plugin/pkg/audit/webhook k8s.io/apiserver/plugin/pkg/authenticator/token/webhook k8s.io/apiserver/plugin/pkg/authorizer/webhook -# k8s.io/client-go v0.28.12 => k8s.io/client-go v0.28.11 +# k8s.io/client-go v0.28.14 => k8s.io/client-go v0.28.14 ## explicit; go 1.20 k8s.io/client-go/applyconfigurations/admissionregistration/v1 k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1 @@ -1697,7 +1697,7 @@ k8s.io/client-go/util/homedir k8s.io/client-go/util/keyutil k8s.io/client-go/util/retry k8s.io/client-go/util/workqueue -# k8s.io/cloud-provider v0.28.12 => k8s.io/cloud-provider v0.28.11 +# k8s.io/cloud-provider v0.28.14 => k8s.io/cloud-provider v0.28.14 ## explicit; go 1.20 k8s.io/cloud-provider k8s.io/cloud-provider/api @@ -1720,7 +1720,7 @@ k8s.io/cloud-provider/volume/helpers # k8s.io/cloud-provider-aws v1.27.0 ## explicit; go 1.20 k8s.io/cloud-provider-aws/pkg/providers/v1 -# k8s.io/component-base v0.28.12 => k8s.io/component-base v0.28.11 +# k8s.io/component-base v0.28.14 => k8s.io/component-base v0.28.14 ## explicit; go 1.20 k8s.io/component-base/cli/flag k8s.io/component-base/codec @@ -1750,7 +1750,7 @@ k8s.io/component-base/tracing k8s.io/component-base/tracing/api/v1 k8s.io/component-base/version k8s.io/component-base/version/verflag -# k8s.io/component-helpers v0.28.12 => k8s.io/component-helpers v0.28.11 +# k8s.io/component-helpers v0.28.14 => k8s.io/component-helpers v0.28.14 ## explicit; go 1.20 k8s.io/component-helpers/apimachinery/lease k8s.io/component-helpers/node/topology @@ -1760,7 +1760,7 @@ k8s.io/component-helpers/scheduling/corev1 k8s.io/component-helpers/scheduling/corev1/nodeaffinity k8s.io/component-helpers/storage/ephemeral k8s.io/component-helpers/storage/volume -# k8s.io/controller-manager v0.28.12 => k8s.io/controller-manager v0.28.11 +# k8s.io/controller-manager v0.28.14 => k8s.io/controller-manager v0.28.14 ## explicit; go 1.20 k8s.io/controller-manager/config k8s.io/controller-manager/config/v1 @@ -1772,16 +1772,16 @@ k8s.io/controller-manager/pkg/features k8s.io/controller-manager/pkg/features/register k8s.io/controller-manager/pkg/leadermigration/config k8s.io/controller-manager/pkg/leadermigration/options -# k8s.io/cri-api v0.28.11 => k8s.io/cri-api v0.28.11 +# k8s.io/cri-api v0.28.14 => k8s.io/cri-api v0.28.14 ## explicit; go 1.20 k8s.io/cri-api/pkg/apis k8s.io/cri-api/pkg/apis/runtime/v1 k8s.io/cri-api/pkg/errors -# k8s.io/csi-translation-lib v0.27.0 => k8s.io/csi-translation-lib v0.28.11 +# k8s.io/csi-translation-lib v0.27.0 => k8s.io/csi-translation-lib v0.28.14 ## explicit; go 1.20 k8s.io/csi-translation-lib k8s.io/csi-translation-lib/plugins -# k8s.io/dynamic-resource-allocation v0.0.0 => k8s.io/dynamic-resource-allocation v0.28.11 +# k8s.io/dynamic-resource-allocation v0.0.0 => k8s.io/dynamic-resource-allocation v0.28.14 ## explicit; go 1.20 k8s.io/dynamic-resource-allocation/resourceclaim # k8s.io/klog/v2 v2.100.1 @@ -1792,7 +1792,7 @@ k8s.io/klog/v2/internal/clock k8s.io/klog/v2/internal/dbg k8s.io/klog/v2/internal/serialize k8s.io/klog/v2/internal/severity -# k8s.io/kms v0.28.12 => k8s.io/kms v0.28.11 +# k8s.io/kms v0.28.14 => k8s.io/kms v0.28.14 ## explicit; go 1.20 k8s.io/kms/apis/v1beta1 k8s.io/kms/apis/v2 @@ -1820,15 +1820,15 @@ k8s.io/kube-openapi/pkg/validation/errors k8s.io/kube-openapi/pkg/validation/spec k8s.io/kube-openapi/pkg/validation/strfmt k8s.io/kube-openapi/pkg/validation/strfmt/bson -# k8s.io/kube-scheduler v0.0.0 => k8s.io/kube-scheduler v0.28.11 +# k8s.io/kube-scheduler v0.0.0 => k8s.io/kube-scheduler v0.28.14 ## explicit; go 1.20 k8s.io/kube-scheduler/config/v1 k8s.io/kube-scheduler/config/v1beta3 k8s.io/kube-scheduler/extender/v1 -# k8s.io/kubectl v0.0.0 => k8s.io/kubectl v0.28.11 +# k8s.io/kubectl v0.0.0 => k8s.io/kubectl v0.28.14 ## explicit; go 1.20 k8s.io/kubectl/pkg/scale -# k8s.io/kubelet v0.28.12 => k8s.io/kubelet v0.28.11 +# k8s.io/kubelet v0.28.14 => k8s.io/kubelet v0.28.14 ## explicit; go 1.20 k8s.io/kubelet/config/v1 k8s.io/kubelet/config/v1alpha1 @@ -1849,7 +1849,7 @@ k8s.io/kubelet/pkg/apis/stats/v1alpha1 k8s.io/kubelet/pkg/cri/streaming k8s.io/kubelet/pkg/cri/streaming/portforward k8s.io/kubelet/pkg/cri/streaming/remotecommand -# k8s.io/kubernetes v1.28.11 +# k8s.io/kubernetes v1.28.14 ## explicit; go 1.20 k8s.io/kubernetes/cmd/kubelet/app k8s.io/kubernetes/cmd/kubelet/app/options @@ -2109,7 +2109,7 @@ k8s.io/kubernetes/pkg/volume/vsphere_volume k8s.io/kubernetes/pkg/windows/service k8s.io/kubernetes/test/utils k8s.io/kubernetes/third_party/forked/golang/expansion -# k8s.io/legacy-cloud-providers v0.0.0 => k8s.io/legacy-cloud-providers v0.28.11 +# k8s.io/legacy-cloud-providers v0.0.0 => k8s.io/legacy-cloud-providers v0.28.14 ## explicit; go 1.20 k8s.io/legacy-cloud-providers/azure k8s.io/legacy-cloud-providers/azure/auth @@ -2151,7 +2151,7 @@ k8s.io/legacy-cloud-providers/gce/gcpcredential k8s.io/legacy-cloud-providers/vsphere k8s.io/legacy-cloud-providers/vsphere/vclib k8s.io/legacy-cloud-providers/vsphere/vclib/diskmanagers -# k8s.io/mount-utils v0.26.0-alpha.0 => k8s.io/mount-utils v0.28.11 +# k8s.io/mount-utils v0.26.0-alpha.0 => k8s.io/mount-utils v0.28.14 ## explicit; go 1.20 k8s.io/mount-utils # k8s.io/utils v0.0.0-20230406110748-d93618cff8a2 @@ -2256,34 +2256,34 @@ sigs.k8s.io/yaml # github.com/aws/aws-sdk-go/service/eks => github.com/aws/aws-sdk-go/service/eks v1.38.49 # github.com/digitalocean/godo => github.com/digitalocean/godo v1.27.0 # github.com/rancher/go-rancher => github.com/rancher/go-rancher v0.1.0 -# k8s.io/api => k8s.io/api v0.28.11 -# k8s.io/apiextensions-apiserver => k8s.io/apiextensions-apiserver v0.28.11 -# k8s.io/apimachinery => k8s.io/apimachinery v0.28.11 -# k8s.io/apiserver => k8s.io/apiserver v0.28.11 -# k8s.io/cli-runtime => k8s.io/cli-runtime v0.28.11 -# k8s.io/client-go => k8s.io/client-go v0.28.11 -# k8s.io/cloud-provider => k8s.io/cloud-provider v0.28.11 -# k8s.io/cluster-bootstrap => k8s.io/cluster-bootstrap v0.28.11 -# k8s.io/code-generator => k8s.io/code-generator v0.28.11 -# k8s.io/component-base => k8s.io/component-base v0.28.11 -# k8s.io/component-helpers => k8s.io/component-helpers v0.28.11 -# k8s.io/controller-manager => k8s.io/controller-manager v0.28.11 -# k8s.io/cri-api => k8s.io/cri-api v0.28.11 -# k8s.io/csi-translation-lib => k8s.io/csi-translation-lib v0.28.11 -# k8s.io/kube-aggregator => k8s.io/kube-aggregator v0.28.11 -# k8s.io/kube-controller-manager => k8s.io/kube-controller-manager v0.28.11 -# k8s.io/kube-proxy => k8s.io/kube-proxy v0.28.11 -# k8s.io/kube-scheduler => k8s.io/kube-scheduler v0.28.11 -# k8s.io/kubectl => k8s.io/kubectl v0.28.11 -# k8s.io/kubelet => k8s.io/kubelet v0.28.11 -# k8s.io/legacy-cloud-providers => k8s.io/legacy-cloud-providers v0.28.11 -# k8s.io/metrics => k8s.io/metrics v0.28.11 -# k8s.io/mount-utils => k8s.io/mount-utils v0.28.11 -# k8s.io/sample-apiserver => k8s.io/sample-apiserver v0.28.11 -# k8s.io/sample-cli-plugin => k8s.io/sample-cli-plugin v0.28.11 -# k8s.io/sample-controller => k8s.io/sample-controller v0.28.11 -# k8s.io/pod-security-admission => k8s.io/pod-security-admission v0.28.11 -# k8s.io/dynamic-resource-allocation => k8s.io/dynamic-resource-allocation v0.28.11 -# k8s.io/kms => k8s.io/kms v0.28.11 +# k8s.io/api => k8s.io/api v0.28.14 +# k8s.io/apiextensions-apiserver => k8s.io/apiextensions-apiserver v0.28.14 +# k8s.io/apimachinery => k8s.io/apimachinery v0.28.14 +# k8s.io/apiserver => k8s.io/apiserver v0.28.14 +# k8s.io/cli-runtime => k8s.io/cli-runtime v0.28.14 +# k8s.io/client-go => k8s.io/client-go v0.28.14 +# k8s.io/cloud-provider => k8s.io/cloud-provider v0.28.14 +# k8s.io/cluster-bootstrap => k8s.io/cluster-bootstrap v0.28.14 +# k8s.io/code-generator => k8s.io/code-generator v0.28.14 +# k8s.io/component-base => k8s.io/component-base v0.28.14 +# k8s.io/component-helpers => k8s.io/component-helpers v0.28.14 +# k8s.io/controller-manager => k8s.io/controller-manager v0.28.14 +# k8s.io/cri-api => k8s.io/cri-api v0.28.14 +# k8s.io/csi-translation-lib => k8s.io/csi-translation-lib v0.28.14 +# k8s.io/kube-aggregator => k8s.io/kube-aggregator v0.28.14 +# k8s.io/kube-controller-manager => k8s.io/kube-controller-manager v0.28.14 +# k8s.io/kube-proxy => k8s.io/kube-proxy v0.28.14 +# k8s.io/kube-scheduler => k8s.io/kube-scheduler v0.28.14 +# k8s.io/kubectl => k8s.io/kubectl v0.28.14 +# k8s.io/kubelet => k8s.io/kubelet v0.28.14 +# k8s.io/legacy-cloud-providers => k8s.io/legacy-cloud-providers v0.28.14 +# k8s.io/metrics => k8s.io/metrics v0.28.14 +# k8s.io/mount-utils => k8s.io/mount-utils v0.28.14 +# k8s.io/sample-apiserver => k8s.io/sample-apiserver v0.28.14 +# k8s.io/sample-cli-plugin => k8s.io/sample-cli-plugin v0.28.14 +# k8s.io/sample-controller => k8s.io/sample-controller v0.28.14 +# k8s.io/pod-security-admission => k8s.io/pod-security-admission v0.28.14 +# k8s.io/dynamic-resource-allocation => k8s.io/dynamic-resource-allocation v0.28.14 +# k8s.io/kms => k8s.io/kms v0.28.14 # k8s.io/noderesourcetopology-api => k8s.io/noderesourcetopology-api v0.27.0 -# k8s.io/endpointslice => k8s.io/endpointslice v0.28.11 +# k8s.io/endpointslice => k8s.io/endpointslice v0.28.14 diff --git a/cluster-autoscaler/version/version.go b/cluster-autoscaler/version/version.go index 6c026d67e510..e3cfa6cb50e4 100644 --- a/cluster-autoscaler/version/version.go +++ b/cluster-autoscaler/version/version.go @@ -17,4 +17,4 @@ limitations under the License. package version // ClusterAutoscalerVersion contains version of CA. -const ClusterAutoscalerVersion = "1.28.6" +const ClusterAutoscalerVersion = "1.28.7"