如何更新镜像文件

本文档介绍 Kubernetes 集群中各类镜像的更新方法,包括 Kubelet、静态 POD、CoreDNS 和 Calico 等组件。


更新 Kubelet 使用的镜像

配置文件位置

Kubelet 的配置文件位于 /var/lib/kubelet/kubeadm-flags.env

修改配置文件中的 pod-infra-container-image 参数:

# Kubernetes 1.26 及更早版本的示例;1.27+ 不再支持这些旧参数。
# 新版本请在 KubeletConfiguration 中设置 containerRuntimeEndpoint,
# 并通过 kubeadm 的 imageRepository 或 Pod 配置指定 pause 镜像。
KUBELET_KUBEADM_ARGS="--container-runtime=remote --container-runtime-endpoint=unix:///var/run/containerd/containerd.sock --pod-infra-container-image=internal.com:5000/pause:3.7"

修改完成后,重启 kubelet 使配置生效:

systemctl restart kubelet

更新静态 POD 的镜像

静态 POD 配置目录

静态 POD 的配置文件位于 /etc/kubernetes/manifests 目录下

在该目录下有以下几个静态 POD 的配置文件:

  • kube-apiserver.yaml
  • kube-controller-manager.yaml
  • kube-scheduler.yaml
  • etcd.yaml

image.png

更新方法

只需修改配置文件中的 image 字段,Kubelet 会自动检测变化并使用新镜像重新创建 POD。


更新 CoreDNS 和 Calico 的镜像

只需修改对应 Deployment 和 DaemonSet 的镜像地址即可:

CoreDNS

image.png

Calico

image.png image.png


证书更新

重要提示

证书更新后需要重启静态 POD 才能生效!

官方文档

官方证书说明

证书更新步骤

# 1. 检查证书有效性
kubeadm certs check-expiration
 
# 2. 备份证书信息
mkdir -p /data/k8s-backup/etc/kubernetes/
mkdir -p /data/k8s-backup/.kube/
 
cp -rf /etc/kubernetes/ /data/k8s-backup/etc/kubernetes/
cp $HOME/.kube/config /data/k8s-backup/.kube/config
 
# 3. 更新证书
kubeadm certs renew all
 
# 4. 更新后检查证书日期
kubeadm certs check-expiration
 
# 5. 重启静态 POD(通过移动 manifests 目录)
mv /etc/kubernetes/manifests/ /data/k8s-backup/manifests
 
# 6. 等待 20s 静态 POD 停止后重新迁移回去
sleep 20
mv /data/k8s-backup/manifests /etc/kubernetes/manifests/
 
# 7. 更新 kubeconfig 文件
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config

多节点集群注意事项

上述方法需要在所有控制节点运行,确保证书更新完整。


相关链接


返回: Kubernetes