官方文档: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. 2022省选前联考 AVL树/平衡树

    题目描述 pks 得到了一棵 \(N\) 个节点,权值为 \(1\sim N\) 的 \(AVL\) 树,他觉得这棵树太大了,于是他想要删掉一些节点使得最后剩下的树恰好有 \(K\) 个节点.如果 p ...

  2. Linux sed工具的使用

    基础知识 - 行编辑工具: 一行一行处理文件内容 - 全屏编辑工具:一次性将文件所有内容加载到内存中 sed编辑器: Stream Editor 工作原理: 逐行处理文件内容,一次读取一行内容到模式空 ...

  3. Linux快捷方式创建模板

    1.创建快捷方式文件 sudo gedit /usr/share/applications/Navicat.desktop 模板: [Desktop Entry] Name=Navicat Exec= ...

  4. 如何用 身份证OCR 接口进行快速开发

    最近公司项目有一个身份证文字识别的小需求,想着如果用现成的API就可以大大提高开发效率,在网上的API商店搜索了一番,发现了 APISpace,它里面的身份证OCR非常符合我的开发需求.   身份证O ...

  5. Webpack干货系列 | 在 Webpack 5 集成 ESLint 的方法

    程序员优雅哥(youyacoder)简介:十年程序员,呆过央企外企私企,做过前端后端架构.分享vue.Java等前后端技术和架构. 本文摘要:主要讲解运用Webpack 5 中集成 ESLint 的方 ...

  6. 使用 Azure 静态 Web 应用服务免费部署 Hexo 博客

    一.前言 最近在折腾 Hexo 博客,试了一下 Azure 的静态 Web 应用服务,发现特别适合静态文档类型的网站,而且具有免费额度,支持绑定域名.本文只是以 Hexo 作为示例,其他类型的框架也是 ...

  7. TCP通信的客户端代码实现和TCP通信的服务器代码实现

    TCP通信的客户端代码实现 package com.yang.Test.ServerStudy; import java.io.*; import java.net.Socket; /** * TCP ...

  8. canal-1.1.5实时同步MySQL数据到Elasticsearch

    一.环境准备 1.jkd 8+ 2.mysql 5.7+ 3.Elasticsearch 7+ 4.kibana 7+ 5.canal.adapter 1.1.5 二.部署 一.创建数据库CanalD ...

  9. C#静态类、静态成员、静态方法

    一.作用 静态类和非静态类重要的区别是在于静态类不能被实例化,也就是说不能使用  new 关键字创建静态类类型的变量,防止程序员写代码来实例化该静态类或者在类的内部声明任何实例字段或方法. 用于存放不 ...

  10. Kettle需求场景复现

    前置说明 遍历文件夹下的文件,读取所有的sheet页(指定的sheet)落库 读取execl文件和csv文件,获得文件中sheet/csv数据,进行落库,并增加字段实现更新: 如果execl中存在两个 ...