升级到 1.35
kubelet 1.35 的启动参数有以下改动:
--container-runtime-endpoint: 已弃用,改到了配置文件中--pod-infra-container-image: 不再支持
所以需要修改以下配置(适用于 kubeadm 安装的集群):
修改
/var/lib/kubelet/kubeadm-flags.env-KUBELET_KUBEADM_ARGS="--container-runtime-endpoint=unix:///var/run/containerd/containerd.sock --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.10" +KUBELET_KUBEADM_ARGS=""
修改
/var/lib/kubelet/config.yamlapiVersion: kubelet.config.k8s.io/v1beta1 +featureGates: + GenericWorkload: true authentication: anonymous: enabled: false clusterDNS: - 10.96.0.10 clusterDomain: cluster.local -containerRuntimeEndpoint: "" +containerRuntimeEndpoint: "unix:///var/run/containerd/containerd.sock" cpuManagerReconcilePeriod: 0s crashLoopBackOff: {} evictionPressureTransitionPeriod: 0s
然后更换各个组件的映像。
kube-apiserver, 修改/etc/kubernetes/manifests/kube-apiserver.yaml:- --service-cluster-ip-range=10.96.0.0/12 - --tls-cert-file=/etc/kubernetes/pki/apiserver.crt - --tls-private-key-file=/etc/kubernetes/pki/apiserver.key - image: registry.aliyuncs.com/google_containers/kube-apiserver:v1.34.0 + - --feature-gates=GenericWorkload=true + - --runtime-config=scheduling.k8s.io/v1alpha1=true + image: registry.aliyuncs.com/google_containers/kube-apiserver:v1.35.0 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 8
kube-scheduler, 修改/etc/kubernetes/manifests/kube-scheduler.yaml:- --bind-address=127.0.0.1 - --kubeconfig=/etc/kubernetes/scheduler.conf - --leader-elect=true - image: registry.aliyuncs.com/google_containers/kube-scheduler:v1.34.0 + - --feature-gates=GenericWorkload=true + image: registry.aliyuncs.com/google_containers/kube-scheduler:v1.35.0 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 8
kube-controller-manager, 修改/etc/kubernetes/manifests/kube-controller-manager.yaml:- --service-account-private-key-file=/etc/kubernetes/pki/sa.key - --service-cluster-ip-range=10.96.0.0/12 - --use-service-account-credentials=true - image: registry.aliyuncs.com/google_containers/kube-controller-manager:v1.34.0 + - --feature-gates=GenericWorkload=true + image: registry.aliyuncs.com/google_containers/kube-controller-manager:v1.35.0 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 8
kube-proxy, 运行命令:$ kubectl -n kube-system set image daemonset/kube-proxy kube-proxy=registry.aliyuncs.com/google_containers/kube-proxy:v1.35.0 daemonset.apps/kube-proxy image updated
以上配置同时启用了特性门 GenericWorkload.
重启 kubelet 服务成功以后:
$ kubectl get no
NAME STATUS ROLES AGE VERSION
las0 Ready control-plane 242d v1.35.0
las1 Ready <none> 242d v1.35.0
las2 Ready <none> 242d v1.35.0
las3 Ready <none> 238d v1.35.0
查询 kubelet 特性门是否启用:
$ kubectl get --raw "/api/v1/nodes/las1/proxy/configz" | jq '.kubeletconfig.featureGates'
{
"GenericWorkload": true
}