使用kubeoperator安装的k8s 版本1.20.14 将节点上的容器运行时从 Docker Engine 改为 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的更多相关文章
- 使用kubeoperator安装的k8s集群以及采用的containerd容器运行时,关于采用的是cgroup 驱动还是systemd 驱动的说明
使用kubeoperator安装的k8s集群,默认使用的是systemd驱动 # kubectl get cm -n kube-system NAME DATA AGE calico-config 4 ...
- kubernetes/k8s CRI分析-容器运行时接口分析
关联博客:kubernetes/k8s CSI分析-容器存储接口分析 概述 kubernetes的设计初衷是支持可插拔架构,从而利于扩展kubernetes的功能.在此架构思想下,kubernetes ...
- 使用kubeoperator安装的k8s集群配置Ingress规则有关说明
单独创建一个nginx 在 Deployment 里创建一个nginx工作负载,镜像用:nginx:alpine,并配置service为ClusterIP,然后添加Ingress规则 本地主机host ...
- 笔记本1050ti显卡安装最新驱动版本 (415.27) 记录 NVIDIA显卡GeForce系列 (Ubuntu18.04)
在Linux上安装驱动,这事情多半是跑CUDA程序的人才会搞的,多年前学CUDA时为这一步骤头疼的很,现如今已经比较熟悉了,今日给出一些记录. 首先,在NVIDIA官方网站上找到驱动下载页面: htt ...
- KubeOperator安装好后默认会占用80端口,替换成其他端口
使用KubeOperator安装好k8s后,然后修改如下的配置文件,最后重启应用即可 重启:koctl restart
- 用 edgeadm 一键安装边缘 K8s 集群和原生 K8s 集群
背景 目前,很多边缘计算容器开源项目在使用上均存在一个默认的前提:用户需要提前准备一个标准的或者特定工具搭建的 Kubernetes 集群,然后再通过特定工具或者其他方式在集群中部署相应组件来体验边缘 ...
- K8S 使用Kubeadm搭建单个Master节点的Kubernetes(K8S)~本文仅用于测试学习
01.集群规划 系统版本:CentOS Linux release 7.6.1810 (Core) 软件版本:kubeadm.kubernetes-1.15.docker-ce-18.09 硬件要求: ...
- 在Ubuntu 14.04 64bit上安装Markdown和绘图软件Haroopad
简介 Haroopad:一款让你欲罢不能的Markdown编辑器 身为大程序员,我本来是不需要 Markdown 编辑器的,但是 Haroopad 让我简直欲罢不能,不能再爱更多.跨平台,代码高亮,V ...
- python安装二进制k8s高可用 版本1.13.0
一.所有安装包.脚本.脚本说明.下载链接:https://pan.baidu.com/s/1kHaesJJuMQ5cG-O_nvljtg 提取码:kkv6 二.脚本安装说明 1.脚本说明: 本实验为三 ...
随机推荐
- 广西省行政村边界shp数据/广西省乡镇边界/广西省土地利用分类数据/广西省气象数据/降雨量分布数据/太阳辐射数据
数据下载链接:数据下载链接 广西壮族自治区,地处中国南部,北回归线横贯中部,属亚热带季风气候区.南北以贺州--东兰一线为界,此界以北属中亚热带季风气候区,以南属南亚热带季风气候区. 数据范围:全 ...
- IO流原理及流的分类
IO原理 I/O是Input/Output的缩写, I/O技术是非常实用的技术,用于 处理设备之间的数据传输.如读/写文件,网络通讯等. Java程序中,对于数据的输入/输出操作以"流(st ...
- 攻防世界MISC进阶区 61-63
61.肥宅快乐题 得到swf文件,但是用PotPlayer打不开,用浏览器应该可以打开,打开后可以在npc的对话中看到一段base64 解密后就可以得到flag 62.warmup 得到一张png和一 ...
- 用户数据交互 Scanner
# 用户交互 Scanner ``` java package study5ran2yl.study; import java.util.Scanner; public class demo09 { ...
- nginx服务器配置传递给下一层的信息的一些参数-设置哪些跨域的域名可访问
http { server_tokens off; #隐藏nginx版本 proxy_headers_hash_max_size 51200; proxy_headers_hash_bucket_si ...
- 2022-07-13 第六组 润土 Java01学习笔记
1.数据类型: 基本数据类型: 整型: byte 字节型 -128-127 1个字节 short 短整型 2个字节 int 整型 4个字节 long 长整型 8个字节 浮点型: float 单精度 4 ...
- HBase学习(一) 基本概念和安装基本命令
HBase学习(一) 一.了解HBase 官方文档:https://hbase.apache.org/book.html 1.1 HBase概述 HBase 是一个高可靠性.高性能.面向列.可伸缩的分 ...
- 创建私有CA,我就用openSSL
目录 简介 搭建root CA 生成root CA 使用CRL 使用OSCP 总结 简介 一般情况下我们使用的证书都是由第三方权威机构来颁发的,如果我们有一个新的https网站,我们需要申请一个世界范 ...
- 使用 Azure 静态 Web 应用服务免费部署 Hexo 博客
一.前言 最近在折腾 Hexo 博客,试了一下 Azure 的静态 Web 应用服务,发现特别适合静态文档类型的网站,而且具有免费额度,支持绑定域名.本文只是以 Hexo 作为示例,其他类型的框架也是 ...
- SQL语句编写
mybatis插入数据 下面的item.avatarUrl取出的是java实体类里面的属性,所有需要大写 插入的SQL: INSERT INTO `one` VALUES(1,"第一个&qu ...