k8s1.18版本升级到1.23(containerd方式)

网友投稿 313 2022-09-12

k8s1.18版本升级到1.23(containerd方式)

作者:李毓

概述

自从官方从1.20摒弃docker以来,一直没有升级1.2X的版本。趁着春节后这段假期研究了一下1.18升级到1.23的步骤。约定:系统:ubuntu:18.04.1k8s版本:二进制已经安装好的1.18.19进系统查看一下root@harbor:~# kubectl get nodesNAME STATUS ROLES AGE VERSION192.168.3.61 Ready master 48d v1.18.19root@ubuntu:~# lsb_release -aNo LSB modules are available.Distributor ID: UbuntuDescription: Ubuntu 18.04.1 LTSRelease: 18.04Codename: bionic

下载1.23的二进制文件

覆盖掉/usr/bin/里面的二进制文件(按照实际目录来决定)

这个时候暂时先不要启动

修改一系列的配置文件

修改vi /etc/systemd/system/kube-apiserver.service 删除 --kubelet-\ 增加2个参数 --service-account-issuer=kubernetes.default.svc \ --service-account-signing-key-file=/etc/kubernetes/ssl/ca-key.pem \ 修改 vi /etc/systemd/system/kubelet.service 增加参数 --container-runtime=remote \ --runtime-request-timeout=15m \ --container-runtime-endpoint=unix:///run/containerd/containerd.sock \ 修改 vi /var/lib/kubelet/config.yaml (优化可选项) cgroupDriver: cgroupfs 改成 cgroupDriver: systemd 修改 vi /etc/docker/daemon.json (这是优化docker选项,可以不用改,因为我的机器上有harbor,顺手就改了。) "exec-opts": ["native.cgroupdriver=cgroupfs"] 改成 "exec-opts": ["native.cgroupdriver=systemd"]

修改完毕后,重新启动。

systemctl daemon-reload && systemctl restart kube-apiserver && systemctl restart kube-controller-manager && systemctl restart kube-scheduler

查看是否升级成功

root@ubuntu:~# kubectl get nodes NAME STATUS ROLES AGE VERSION 192.168.3.61 Ready master 29d v1.23.3

说明已经升级成功了

我们再查看pod的状态

root@ubuntu:~# kubectl get pods -A NAMESPACE NAME READY STATUS RESTARTS AGE kube-system calico-kube-controllers-648bc85d9-qz6pq 0/1 ContainerCreating 0 78m kube-system calico-node-bgcbk 0/1 Init:0/2 0 78m kube-system coredns-848bd88f-crwxp 0/1 ContainerCreating 7 (21h ago) 29d

发现pod都没起来,这是因为k8s没使用docker的情况下拉取私有仓库会失败。如果是公有仓库不会有这个问题,但是实际生产情况下,还是用harbor居多。这里解决一下。

解决私有仓库无法访问:

更改containerd 的config.toml文件可通过命令:containerd config default> /etc/containerd/config.toml 生成默认配置文件!

编辑该文件,需要自定义两处地方:

sandbox_image = "harbor.XXXX.cn:8443/xxxx/k8s.gcr.io/pause:3.2"

插入这一段

[plugins."io.containerd.grpc.v1.cri".registry] [plugins."io.containerd.grpc.v1.cri".registry.mirrors] [plugins."io.containerd.grpc.v1.cri".registry.mirrors."harbor.xxxx.cn:8443"] endpoint = ["https://harbor.xxxx.cn:8443"] [plugins."io.containerd.grpc.v1.cri".registry.configs] [plugins."io.containerd.grpc.v1.cri".registry.configs."harbor.xxxx.cn:8443".tls] [plugins."io.containerd.grpc.v1.cri".registry.configs."harbor.xxxx.cn:8443".auth] username = "zhangsan" password = "zhangsan@123"

具体文件可以参考我这段

[plugins."io.containerd.grpc.v1.cri".cni] bin_dir = "/opt/cni/bin" conf_dir = "/etc/cni/net.d" max_conf_num = 1 conf_template = "" [plugins."io.containerd.grpc.v1.cri".registry] [plugins."io.containerd.grpc.v1.cri".registry.mirrors] [plugins."io.containerd.grpc.v1.cri".registry.mirrors."harbor.xxxx.cn:8443"] endpoint = ["https://harbor.xxxx.cn:8443"] [plugins."io.containerd.grpc.v1.cri".registry.configs] [plugins."io.containerd.grpc.v1.cri".registry.configs."harbor.xxxx.cn:8443".tls] [plugins."io.containerd.grpc.v1.cri".registry.configs."harbor.xxxx.cn:8443".auth] username = "zhangsan" password = "zhangsan@123" [plugins."io.containerd.xxxx.v1.opt"] path = "/opt/containerd" [plugins."io.containerd.xxxx.v1.restart"] interval = "10s" [plugins."io.containerd.metadata.v1.bolt"] content_sharing_policy = "shared" [plugins."io.containerd.monitor.v1.cgroups"] no_prometheus = false [plugins."io.containerd.runtime.v1.linux"] shim = "containerd-shim" runtime = "runc" runtime_root = "" no_shim = false shim_debug = false [plugins."io.containerd.runtime.v2.task"] platforms = ["linux/amd64"] [plugins."io.containerd.service.v1.diff-service"] default = ["walking"] [plugins."io.containerd.snapshotter.v1.devmapper"] root_path = "" pool_name = "" base_image_size = "" async_remove = false

重启 contanierd

systemctl daemon-reloadsystemctl restart containerdsystemctl enabled containerd

查看pod状态

root@ubuntu:~# kubectl get pods -A NAMESPACE NAME READY STATUS RESTARTS AGE kube-system calico-kube-controllers-b4f7f97b-jp6d9 1/1 Running 0 14m kube-system calico-node-lm8b2 1/1 Running 0 14m kube-system coredns-75ffb4d4df-7t2s9 1/1 Running 0 14m

我们可以验证一下在关闭docker的情况,集群是否会崩溃。

说明现在K8S集群连接的是containerd。

大功告成了!

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:一站式数据开发平台有哪些解决方案?(好用的专业数据建模工具)
下一篇:综合数据平台是什么?数据平台解决方案一文说清
相关文章

 发表评论

暂时没有评论,来抢沙发吧~