官方文档:https://kubernetes.io/zh-cn/docs/tasks/administer-cluster/migrating-from-dockershim/change-runtime-containerd/

背景描述:

1.当前k8s版本是 v1.20.14,使用kubeoperator进行安装的,但是使用kubeoperator不能对k8s进行大版本升级

2.安装的容器运行时是dockershim-> Docker Engine,调用路径如下:

3.鉴于k8s版本1.24以后推荐容器运行时使用containerd,因此需要一个测试环境,把现有k8s集群中使用的dockershim-> Docker Engine 换成 containerd

注意:

1.官方提供的还有:将 Docker Engine 节点从 dockershim 迁移到 cri-dockerd。地址:https://kubernetes.io/zh-cn/docs/tasks/administer-cluster/migrating-from-dockershim/migrate-dockershim-dockerd/

意味着,在k8s1.24版本以上也能继续使用Docker Engine,只不过需要把原先的dockershim替换成cri-dockerd。

1、检查状态并停止服务
systemctl daemon-reload
systemctl stop docker
systemctl disable docker
systemctl stop kubelet
systemctl stop containerd.io # 没安装 systemctl status kubelet.service || systemctl status docker.service 2、升级并配置containerd # 默认好像没安装,因此不用升级,直接进行安装
# yum update -y containerd.io-1.4.12 yum install -y yum-utils
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache fast yum -y install containerd.io #版本:1.6.6 直接生产默认配置文件:containerd config default > /etc/containerd/config.toml #在/etc/containerd/config.toml 中 注释 disabled_plugins 这一行 ==》 这一步不用做 #sed -i '/disabled_plugins/s/^/#/' /etc/containerd/config.toml 配置代理 设置本地、service和pod的段为no_proxy =》 这一步不用做 mkdir /etc/systemd/system/containerd.service.d cat > /etc/systemd/system/containerd.service.d/http_proxy.conf << EOF
[Service]
Environment="HTTP_PROXY=http://10.2.13.41:8888/"
Environment="HTTPS_PROXY=http://10.2.13.41:8888/"
Environment="NO_PROXY=xx.com,10.95.0.0/16,10.96.0.0/16,cluster.local,localhost"
EOF # 重启containerd 设置自启动
systemctl daemon-reload
systemctl restart containerd # systemctl start containerd
systemctl enable containerd.service # 查看状态
systemctl status containerd -l # 查看代理是否配置成功
systemctl show --property=Environment containerd 3、修改kubelet使用containerd的配置文件:
sed -i 's/"\(.\+\)"/"\1 --container-runtime=remote --container-runtime-endpoint=unix:\/\/\/run\/containerd\/containerd\.sock"/g' /var/lib/kubelet/kubeadm-flags.env 编辑文件 /var/lib/kubelet/kubeadm-flags.env,将 containerd 运行时添加到标志中:
--container-runtime=remote 和 --container-runtime-endpoint=unix:///run/containerd/containerd.sock"。 kubectl edit no develop-master-1 kubectl edit no develop-worker-1
kubectl edit no develop-worker-2 更改 kubeadm.alpha.kubernetes.io/cri-socket 值,将其从 /var/run/dockershim.sock 改为你所选择的 CRI 套接字路径 (例如:unix:///run/containerd/containerd.sock)。 # 重启服务并查看状态
systemctl daemon-reload
systemctl start kubelet
systemctl status kubelet.service -l # crictl配置
cat <<EOF | sudo tee /etc/crictl.yaml
runtime-endpoint: unix:///run/containerd/containerd.sock
image-endpoint: unix:///run/containerd/containerd.sock
timeout: 0
debug: false
EOF 查看升级前组件版本:
ctr -v && crictl -v
查看镜像:
ctr namespaces list
ctr -n k8s.io container list # kubectl get nodes -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
develop-master-1 Ready control-plane,etcd,master,worker 187d v1.20.14 192.168.2.163 <none> CentOS Linux 7 (Core) 3.10.0-1160.49.1.el7.x86_64 docker://20.10.7
develop-worker-1 Ready worker 187d v1.20.14 192.168.2.164 <none> CentOS Linux 7 (Core) 3.10.0-1160.49.1.el7.x86_64 docker://20.10.7
develop-worker-2 Ready worker 187d v1.20.14 192.168.2.165 <none> CentOS Linux 7 (Core) 3.10.0-1160.49.1.el7.x86_64 containerd://1.6.6

问题:

1.使用yum方式安装containerd后,需要生产默认配置文件

containerd config default > /etc/containerd/config.toml
systemctl restart containerd

然后需要修改里面的默认的sandbox_image ,以及镜像仓库等。

尚未解决的问题:配置私有镜像仓库时需要配置拉取镜像使用的用户名和密码,这个还不知道怎么配置

2.之前的pod在启动时,有些公共镜像拉取不下来,这是因为containerd拉取镜像的时候必须是全路径的,也就是说必须带上仓库地址

后续情况:

问题1的私有仓库账号密码没法解决,已经回滚仍使用docker了。

使用kubeoperator安装的k8s 版本1.20.14 将节点上的容器运行时从 Docker Engine 改为 containerd的更多相关文章

  1. 使用kubeoperator安装的k8s集群以及采用的containerd容器运行时,关于采用的是cgroup 驱动还是systemd 驱动的说明

    使用kubeoperator安装的k8s集群,默认使用的是systemd驱动 # kubectl get cm -n kube-system NAME DATA AGE calico-config 4 ...

  2. kubernetes/k8s CRI分析-容器运行时接口分析

    关联博客:kubernetes/k8s CSI分析-容器存储接口分析 概述 kubernetes的设计初衷是支持可插拔架构,从而利于扩展kubernetes的功能.在此架构思想下,kubernetes ...

  3. 使用kubeoperator安装的k8s集群配置Ingress规则有关说明

    单独创建一个nginx 在 Deployment 里创建一个nginx工作负载,镜像用:nginx:alpine,并配置service为ClusterIP,然后添加Ingress规则 本地主机host ...

  4. 笔记本1050ti显卡安装最新驱动版本 (415.27) 记录 NVIDIA显卡GeForce系列 (Ubuntu18.04)

    在Linux上安装驱动,这事情多半是跑CUDA程序的人才会搞的,多年前学CUDA时为这一步骤头疼的很,现如今已经比较熟悉了,今日给出一些记录. 首先,在NVIDIA官方网站上找到驱动下载页面: htt ...

  5. KubeOperator安装好后默认会占用80端口,替换成其他端口

    使用KubeOperator安装好k8s后,然后修改如下的配置文件,最后重启应用即可 重启:koctl restart

  6. 用 edgeadm 一键安装边缘 K8s 集群和原生 K8s 集群

    背景 目前,很多边缘计算容器开源项目在使用上均存在一个默认的前提:用户需要提前准备一个标准的或者特定工具搭建的 Kubernetes 集群,然后再通过特定工具或者其他方式在集群中部署相应组件来体验边缘 ...

  7. K8S 使用Kubeadm搭建单个Master节点的Kubernetes(K8S)~本文仅用于测试学习

    01.集群规划 系统版本:CentOS Linux release 7.6.1810 (Core) 软件版本:kubeadm.kubernetes-1.15.docker-ce-18.09 硬件要求: ...

  8. 在Ubuntu 14.04 64bit上安装Markdown和绘图软件Haroopad

    简介 Haroopad:一款让你欲罢不能的Markdown编辑器 身为大程序员,我本来是不需要 Markdown 编辑器的,但是 Haroopad 让我简直欲罢不能,不能再爱更多.跨平台,代码高亮,V ...

  9. python安装二进制k8s高可用 版本1.13.0

    一.所有安装包.脚本.脚本说明.下载链接:https://pan.baidu.com/s/1kHaesJJuMQ5cG-O_nvljtg 提取码:kkv6 二.脚本安装说明 1.脚本说明: 本实验为三 ...

随机推荐

  1. 记一次requests请求乱码的问题

    太懒了,直接说原因吧: 请求返回的内容含有emoji表情 我的解决办法是替换掉emoji字符: 安装库:pip install emoji 替换:emoji.demojize(CONTENT) 注意, ...

  2. 千万不要把Request传递到异步线程里面!有坑!

    你好哇,我是歪歪. 前几天在网上冲浪的时候看到一篇技术文章,讲的是他把一个 request 请求传递到了线程池里面,然后遇到了一个匪夷所思的情况. 他写了这篇文章,把自己针对这个问题的探索过程分享了出 ...

  3. centos7更改中文

    这是在CentOS7中设置,CentOS6的是在 .etc/sysconfig/i18n 配置文件下.在root用户下操作,使用 locale 命令查看语言环境,看到 LANG=en_US.utf8 ...

  4. AtCoder Beginner Contest 260 F - Find 4-cycle

    题目传送门:F - Find 4-cycle (atcoder.jp) 题意: 给定一个无向图,其包含了S.T两个独立点集(即S.T内部间的任意两点之间不存在边),再给出图中的M条边(S中的点与T中的 ...

  5. HMS Core Discovery第16期回顾|与虎墩一起,玩转AI新“声”态

    HMS Core 在AI领域最新的技术能力有哪些?本期Discovery直播以<与虎墩一起,玩转AI新"声"态>为主题,邀请了HMS Core 机器学习服务产品经理.机 ...

  6. 叫高二上一调?简要题解 (ACD)

    A. 电压机制 题意转换为所有奇环的并排除掉所有偶环留下的边的个数 . 建出 DFS 树,然后只有返祖边可能构成环 . 于是类似树上差分,\(odd_u\) 统计奇环,\(even_u\) 统计偶环 ...

  7. 万答#3,MGR最佳配置参考,PFS里的监测指标要全开吗,mysqld进程占用内存过高怎么排查

    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 问题1,有推荐的MGR运行最佳配置参考吗 在「3306π」社区广州站5月22日的分享会上,万里数据库CTO娄帅给出了他建议 ...

  8. 无痕模式下 this.StorageManager.setItem) 本地存储丢失

    在无痕模式下,存的this.StorageManager.setItem("recharge", JSON.stringify(recharge))本地存储会丢失,所以我们改成使用 ...

  9. es5 es6 新增

    es5的新特性 对于数组和字符串都进行了加强 map 遍历 es6的新特性 数组的增强 find 查找findIndex 查找下标 字符的增强 includes 是否包含 (包含返回true 不包含返 ...

  10. Java 断点下载(下载续传)服务端及客户端(Android)代码

    原文: Java 断点下载(下载续传)服务端及客户端(Android)代码 - Stars-One的杂货小窝 最近在研究断点下载(下载续传)的功能,此功能需要服务端和客户端进行对接编写,本篇也是记录一 ...