Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何升级kubernetes暂停容器_Kubernetes_Upgrade - Fatal编程技术网

如何升级kubernetes暂停容器

如何升级kubernetes暂停容器,kubernetes,upgrade,Kubernetes,Upgrade,当我将kubernetes版本1.20.X升级到1.21.1时,所有相关的容器都是最新的。但暂停容器仍在使用中,我无法强制将其更新为最新版本 # docker ps XXX/pause:3.2 # docker images XXX/pause:3.2 XXX/pause:3.4.1 # docker rmi -f XXX/pause:3.2 Error response from daemon: conflict: unable to delete XXX/pause:3.2 (cannot

当我将kubernetes版本1.20.X升级到1.21.1时,所有相关的容器都是最新的。但暂停容器仍在使用中,我无法强制将其更新为最新版本

# docker ps
XXX/pause:3.2
# docker images
XXX/pause:3.2
XXX/pause:3.4.1
# docker rmi -f XXX/pause:3.2
Error response from daemon: conflict: unable to delete XXX/pause:3.2 (cannot be forced) - image is being used by running container

使用
kubeadm
升级集群时,您可能会收到有关
kubelet
手动升级要求的通知:

Components that must be upgraded manually after you have upgraded the control plane with 'kubeadm upgrade apply':
COMPONENT   CURRENT       TARGET
kubelet     1 x v1.20.7   v1.21.1
我已成功创建了
kubeadm
群集版本:
1.20.7-00
,然后将群集升级到当时可用的最新版本:
1.21.1-00
。升级完成后,即使在升级
kubelet
之后,暂停容器仍保留在版本
3.2.0

更新
kubelet
使用特定
pause
容器版本的方法之一是:

  • 修改以下文件:
    • /var/lib/kubelet/kubeadm flags.env
      (例如更改为
      k8s.gcr.io/pause:3.3
KUBELET_KUBEADM_ARGS=“--network plugin=cni--pod infra container image=k8s.gcr.io/pause:3.2”
  • 重新启动kubelet(取决于操作系统)
    • $systemctl重启kubelet
完成这些步骤后,您应该会看到新版本的
pause
容器传递到
kubelet

  • $systemctl status kubelet

kruk@ubuntu:~$systemctl状态kubelet
● kubelet.service-kubelet:Kubernetes节点代理
已加载:已加载(/lib/systemd/system/kubelet.service;已启用;供应商预设:已启用)
输入:/etc/systemd/system/kubelet.service.d
└─10-kubeadm.conf
激活:自2021-05-27星期四13:28:12 UTC起激活(运行);7小时前
文件:https://kubernetes.io/docs/home/
主PID:724(kubelet)
任务:18(限制:9442)
内存:128.6M
CGroup:/system.slice/kubelet.service
└─724/usr/bin/kubelet--pod infra container image=k8s.gcr.io/pause:3.3
5月27日13:29:12 ubuntu kubelet[724]:2021-05-27 13:29:12.125[INFO][5164]ipam.go 1068:成功申请IPs:[172.16.243.205/26]block=172.16.243.192/26 handle=“k8s pod网络。1638A3BA44D1A46F6AD7EADB1519A42CDDA98FAFD0C94A7B67881F3821A5032”主机=“ubuntu”
5月27日13:29:12 ubuntu kubelet[724]:2021-05-27 13:29:12.125[INFO][5164]ipam.go 722:自动分配1个IPV4中的1个:[172.16.243.205/26]handle=“k8s pod network.1638A3BA44D1A46F6AD7EADB1519A42CDDA98FAFD0C94A7B67881F3821A5032”主机=“ubuntu”
5月27日13:29:12 ubuntu kubelet[724]:time=“2021-05-27T13:29:12Z”level=info msg=“发布了主机范围的IPAM锁。”source=“IPAM_plugin.go:369”
在我的测试中,存在的旧容器没有更新为新的
pause
容器。他们停留在版本
3.2
。产生的每个新工作负载,例如
nginx
Deployment
都使用了新的
pause
容器版本:

  • $docker ps

关于该主题的其他资源/参考:


--pod infra container image
(kubelet的)嗨,你能告诉我更多关于你的更新过程吗?您还可以说明什么是
kubelet
参数吗?特别是虫族指出的论点。
CONTAINER ID   IMAGE                  COMMAND                  CREATED       STATUS       PORTS     NAMES
1cc215019335   nginx                  "/docker-entrypoint.…"   7 hours ago   Up 8 hours             k8s_nginx_nginx-6799fc88d8-lhh48_default_58580cf2-ac6c-4d55-9c08-608ce2018fce_1
1638a3ba44d1   k8s.gcr.io/pause:3.3   "/pause"                 7 hours ago   Up 8 hours             k8s_POD_nginx-6799fc88d8-lhh48_default_58580cf2-ac6c-4d55-9c08-608ce2018fce_1