更换k8s容器运行时环境为docker

devtools/2025/3/3 5:59:46/

更换k8s容器运行时环境为docker

k8s-V1.24之后容器运行时默认是containerd,若想改为熟悉的docker作为运行时,需要做以下操作

  1. 在每个节点安装containerd、docker;

  2. 每个节点安装cri-docker

  3. 调整kubelet配置并重启验证。

1.安装docker、containerd服务

# 安装docker和containerd
# 二进制包下载地址:https://download.docker.com/linux/static/stable/x86_64/
# wget https://download.docker.com/linux/static/stable/x86_64/docker-24.0.2.tgz
​
#解压
tar xf docker-*.tgz 
#拷贝二进制文件
cp docker/* /usr/bin/
#创建containerd的service文件,并且启动
cat >/etc/systemd/system/containerd.service <<EOF
[Unit]
Description=containerd container runtime
Documentation=https://containerd.io
After=network.target local-fs.target
​
[Service]
ExecStartPre=-/sbin/modprobe overlay
ExecStart=/usr/bin/containerd
Type=notify
Delegate=yes
KillMode=process
Restart=always
RestartSec=5
LimitNPROC=infinity
LimitCORE=infinity
LimitNOFILE=1048576
TasksMax=infinity
OOMScoreAdjust=-999
​
[Install]
WantedBy=multi-user.target
EOF
​
# 设置开机自启
systemctl enable --now containerd.service
systemctl status containerd.service
​
#准备docker的service文件
cat > /etc/systemd/system/docker.service <<EOF
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service docker.socket containerd.service
Wants=network-online.target
Requires=docker.socket containerd.service
​
[Service]
Type=notify
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always
StartLimitBurst=3
StartLimitInterval=60s
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
Delegate=yes
KillMode=process
OOMScoreAdjust=-500
​
[Install]
WantedBy=multi-user.target
EOF
​
​
#准备docker的socket文件
cat > /etc/systemd/system/docker.socket <<EOF
[Unit]
Description=Docker Socket for the API
​
[Socket]
ListenStream=/var/run/docker.sock
SocketMode=0660
SocketUser=root
SocketGroup=docker
​
[Install]
WantedBy=sockets.target
EOF
​
​
#创建docker组
groupadd docker
#启动docker
systemctl enable --now docker.socket  && systemctl enable --now docker.service
#验证
docker info
​
# 配置加速器
mkdir /etc/docker/ -pv
cat >/etc/docker/daemon.json <<EOF
{"exec-opts": ["native.cgroupdriver=systemd"],"registry-mirrors": ["https://docker.m.daocloud.io","https://docker.mirrors.ustc.edu.cn","http://hub-mirror.c.163.com"],"max-concurrent-downloads": 10,"log-driver": "json-file","log-level": "warn","log-opts": {"max-size": "10m","max-file": "3"},"data-root": "/var/lib/docker"
}
EOF
systemctl daemon-reload 
systemctl stop docker
systemctl restart docker

2.安装cri-docker

# 由于1.24以及更高版本不支持docker所以安装cri-docker,kubelet可以通过cri-docker间接编排容器
# 下载cri-docker 
# wget  https://mirrors.chenby.cn/https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.3/cri-dockerd-0.3.3.amd64.tgz
​
# 解压cri-docker
tar xvf cri-dockerd-*.amd64.tgz 
cp -r cri-dockerd/  /usr/bin/
chmod +x /usr/bin/cri-dockerd/cri-dockerd
​
# 写入启动配置文件
cat >  /usr/lib/systemd/system/cri-docker.service <<EOF
[Unit]
Description=CRI Interface for Docker Application Container Engine
Documentation=https://docs.mirantis.com
After=network-online.target firewalld.service
Wants=network-online.target
Requires=cri-docker.socket
​
[Service]
Type=notify
ExecStart=/usr/bin/cri-dockerd/cri-dockerd --network-plugin=cni --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.7
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always
​
StartLimitBurst=3
StartLimitInterval=60s
​
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
​
TasksMax=infinity
Delegate=yes
KillMode=process
​
[Install]
WantedBy=multi-user.target
EOF
​
# 写入socket配置文件
cat > /usr/lib/systemd/system/cri-docker.socket <<EOF
[Unit]
Description=CRI Docker Socket for the API
PartOf=cri-docker.service
​
[Socket]
ListenStream=%t/cri-dockerd.sock
SocketMode=0660
SocketUser=root
SocketGroup=docker
​
[Install]
WantedBy=sockets.target
EOF
​
# 进行启动cri-docker
systemctl daemon-reload 
systemctl enable cri-docker --now
systemctl restart cri-docker
systemctl status cri-docker

3.调整kubelet配置,并重启验证

#注释掉原来的配置,改为:--container-runtime-endpoint=unix:///run/cri-dockerd.sock \
cat /etc/systemd/system/kubelet.service
[Unit]
Description=Kubernetes Kubelet
Documentation=https://github.com/GoogleCloudPlatform/kubernetes
​
[Service]
WorkingDirectory=/var/lib/kubelet
ExecStartPre=/bin/mount -o remount,rw '/sys/fs/cgroup'
ExecStart=/opt/kube/bin/kubelet \--config=/var/lib/kubelet/config.yaml \
#  --container-runtime-endpoint=unix:///run/containerd/containerd.sock \--container-runtime-endpoint=unix:///run/cri-dockerd.sock \--hostname-override=10.10.10.3 \--kubeconfig=/etc/kubernetes/kubelet.kubeconfig \--root-dir=/var/lib/kubelet \--v=2
Restart=always
RestartSec=5
​
[Install]
WantedBy=multi-user.target
​
systemctl daemon-reload
systemctl restart kubelet
​
# 验证:
[root@10-3 down]# kubectl get node -owide
NAME         STATUS   ROLES    AGE   VERSION    INTERNAL-IP   EXTERNAL-IP   OS-IMAGE                    KERNEL-VERSION                       CONTAINER-RUNTIME
10.10.10.3   Ready    master   26h   v1.27.16   10.10.10.3    <none>        openEuler 22.03 (LTS-SP3)   5.10.0-182.0.0.95.oe2203sp3.x86_64   docker://24.0.5
k8s-node01   Ready    node     8h    v1.27.16   10.10.10.4    <none>        openEuler 22.03 (LTS-SP3)   5.10.0-182.0.0.95.oe2203sp3.x86_64   docker://24.0.5#删除节点上的历史容器
crictl rm -f `crictl ps -aq`


http://www.ppmy.cn/devtools/163805.html

相关文章

FFmpeg使用H.266/H.264/H.265编解码视频教程

以下是使用 FFmpeg 压缩视频的完整操作步骤&#xff0c;涵盖常用场景和参数优化&#xff1a; 1. 安装 FFmpeg 确保已安装最新版 FFmpeg&#xff08;若已按此前步骤编译支持 H.266&#xff0c;可直接使用&#xff09;&#xff1a; bash 复制 sudo apt install ffmpeg # Ubuntu/…

微软宣布 Windows 11 将不再免费升级:升级需趁早

大家都知道如果你现在是Windows 10 系统&#xff0c;其实可以免费升级到正版 Windows 11&#xff0c;只要你的电脑配置满足 TPM2.0要求。 而最近微软已经公布了 Windows 10 的最后支持时间&#xff0c;也就是今年10月14日&#xff0c;在这之后微软将不再对Windows 10负责&#…

给wordpress仪表盘添加自定义图标

wordpress后台仪表盘默认的图标是wordpress自带的&#xff0c;如果要将图片修改为自己的&#xff0c;只需要在function.php文件中加入以下代码。 function wdp_custom_logo() { echo <style type"text/css"> #wpadminbar #wp-admin-bar-wp-logo > .ab-ite…

家政一城一店融合小程序怎么开通,需要哪些资质?

手把手教你开通洗衣洗鞋团购上门融合小程序&#xff01; ⚠️ 抖音新规重大调整&#xff01;2025年起家政洗护必须"一城一店" &#xff08;全国仅限365家连锁资质&#xff0c;地级市单店垄断&#xff01;&#xff09; &#x1f4a1; 开通秘籍三步走&#xff1a; ✅…

Python毕业设计选题:基于django+vue的疫情数据可视化分析系统

开发语言&#xff1a;Python框架&#xff1a;djangoPython版本&#xff1a;python3.7.7数据库&#xff1a;mysql 5.7数据库工具&#xff1a;Navicat11开发软件&#xff1a;PyCharm 系统展示 管理员登录 管理员功能界面 用户管理 员工管理 疫情信息管理 检测预约管理 检测结果…

GNN入门与实践——基于GraphSAGE在Cora数据集上的节点分类研究

Hi&#xff0c;大家好&#xff0c;我是半亩花海。本文介绍了图神经网络&#xff08;GNN&#xff09;中的一种重要算法——GraphSAGE&#xff0c;其通过采样邻居节点和聚合信息&#xff0c;能够高效地处理大规模图数据&#xff0c;并通过一个完整的代码示例&#xff08;包括数据…

docker container 修改 Mounts

docker container 修改 Mounts 原创 mob64ca12f212462024-05-12 06:11:57©著作权 文章标签docker重启Docker文章分类Docker云计算阅读数332 给大家分享了关于【Docker】的学习资料&#xff1a; https://edu.51cto.com/course/34009.html Docker容器修改Mounts 在Dock…

UCRP4320-通用认知无线电平台

1、产品描述 UCRP4320平台以XILINX XCZU19EG SOC处理器为核心&#xff0c;搭配两片ADI ADRV9009射频集成芯片&#xff0c;可选配集成Jetson Xavier NX人工智能处理模块&#xff0c;应用于智能信号处理与生成。UCRP4320提供了瞬时带宽高达200MHz的4收4发射频通道。通过时钟参考…