news 2026/4/23 16:27:48

【Kubernetes】K8s 1.35 配置 Docker 作为容器运行时

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【Kubernetes】K8s 1.35 配置 Docker 作为容器运行时

Kubernetes 1.24 移除了对 Docker 的直接支持,并且新版 K8s 主推更轻量的 Containerd,但 Docker 凭借其强大的生态依然是许多人的首选。本文将通过 cri-dockerd 这个 ‘适配器’,让 Kubernetes 中重新用上 Docker!

  • 操作系统:Ubuntu 24.04.2 LTS
  • Docker:29.1.3
  • cri-dockerd:0.3.14.3
  • Kubernetes:1.35.0
  • 下方仅一个主节点为例(其中主节点 hostname 为 master,可根据实际情况修改)

1、准备工作

1.1、查看操作系统版本

# 查看操作系统版本 cat /etc/os-release

1.2、关闭防火墙

  • 若有防火墙需要关闭

1.3、关闭 swap 分区

# 查看 swap 分区是否存在 free -h # 关闭当前会话的 swap,重启后无效 swapoff -a # 永久关闭 swap ,需重启 sed -ri 's/.*swap.*/#&/' /etc/fstab # 查看 swap 分区已关闭 free -h

1.4、配置内核

# 加载内核模块 modprobe overlay modprobe br_netfilter # 配置 sysctl 参数 cat <<EOF | tee /etc/modules-load.d/k8s.conf overlay br_netfilter EOF cat <<EOF | tee /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1 net.ipv4.ip_forward = 1 EOF # 应用配置 sysctl --system

1.5、安装必要工具

# 安装必要工具 apt install -y apt-transport-https ca-certificates curl gnupg lsb-release

2、安装 Docker

# 信任 Docker 的 GPG 公钥 sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg sudo chmod a+r /etc/apt/keyrings/docker.gpg # 写入软件源信息 echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \ "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null # 安装 docker-ce apt update apt install -y docker-ce docker-ce-cli containerd.io # 创建 Docker 配置文件 mkdir -p /etc/docker # 配置 Docker 使用 systemd 作为 cgroup 驱动 cat <<EOF | sudo tee /etc/docker/daemon.json { "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" }, "storage-driver": "overlay2", "registry-mirrors": [ "https://docker.mirrors.ustc.edu.cn" ] } EOF # 启动 Docker systemctl enable docker systemctl start docker # 验证 Docker 安装 docker version

3、安装 cri-dockerd

# 下载 wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.21/cri-dockerd_0.3.21.3-0.ubuntu-jammy_amd64.deb # 安装 dpkg -i cri-dockerd_0.3.21.3-0.ubuntu-jammy_amd64.deb # 新版本的 cri-dockerd 包通常会自动配置好 systemd 服务 systemctl status cri-docker.service # 如果服务未运行或未启用,请手动启动 systemctl daemon-reload systemctl enable cri-docker.service systemctl enable --now cri-docker.socket

4、安装 Kubernetes

4.1、配置阿里云仓库进行安装

# 添加 Kubernetes GPG 密钥 curl -fsSL https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.35/deb/Release.key | gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg # 添加 Kubernetes 仓库 echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.35/deb/ /" | tee /etc/apt/sources.list.d/kubernetes.list # 安装 kubelet、kubeadm、kubectl apt-get update apt-get install -y kubelet kubeadm kubectl # 锁定版本,防止被自动更新破坏 apt-mark hold kubelet kubeadm kubectl

4.2、配置 kubelet 使用 cri-dockerd

sudo tee /etc/default/kubelet <<-'EOF' KUBELET_EXTRA_ARGS="--cgroup-driver=systemd --container-runtime-endpoint=unix:///var/run/cri-dockerd.sock" EOF # 重启 kubelet systemctl daemon-reload systemctl restart kubelet

4.3、查看/下载所需的镜像

# 查看/下载所需的镜像 kubeadm config images list --kubernetes-version=v1.35.0 --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers # 使用参数 --cri-socket 指定使用 cri-dockerd kubeadm config images pull --kubernetes-version=v1.35.0 --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers --cri-socket unix:///var/run/cri-dockerd.sock

4.4、初始化 master

# 初始化集群时配置参数 --cri-socket 指定使用 cri-dockerd kubeadm init --apiserver-advertise-address=172.16.15.105 --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers --kubernetes-version=v1.35.0 --service-cidr=10.96.0.0/16 --pod-network-cidr=10.244.0.0/16 --cri-socket unix:///var/run/cri-dockerd.sock # 根据日志信息提示操作,执行下方命令 mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config export KUBECONFIG=/etc/kubernetes/admin.conf

4.5、部署 Calico 网络插件

# 安装 Calico kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.30.3/manifests/calico.yaml

4.6、创建测试 pod

# 测试运行 pod kubectl run nginx-pod --image=nginx:latest --port=80 kubectl get pod kubectl describe pod nginx-pod # 报错:0/1 nodes are available: 1 node(s) had untolerated taint(s). no new claims to deallocate, preemption: 0/1 nodes are available: 1 Preemption is not helpful for scheduling. # 原因:当前仅一个 master 节点,需要去掉污点/配置容忍才能调度 # 允许 Master 节点调度 Pod kubectl taint nodes master node-role.kubernetes.io/control-plane-

4.7、工作节点

  • 工作节点部署同主节点类似,步骤 4.3 及以后无需执行,使用 “kubeadm join xxx” 命令加入主节点即可
  • 在 Worker 节点上执行 join 命令,同样需要加上 --cri-socket 参数
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 12:16:10

选择画面中加一个自定义按钮

效果代码实现REPORT ztest_button." 引入这个表是为了能够使用 sscrfields 结构 TABLES: sscrfields. " 定义一个功能文本结构 DATA: functxt TYPE smp_dyntxt." --- 【关键步骤】声明按钮 --- " 这行代码告诉系统&#xff1a;我要在工具栏上启用第 1 个功…

作者头像 李华
网站建设 2026/4/23 12:15:55

【课程设计/毕业设计】基于SpringBoot + Vue的医院预约挂号系统的设计与实现基于SpringBoot社区医疗预约挂号平台的设计与实现【附源码、数据库、万字文档】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/4/23 13:57:43

ArcGIS数据库文件和普通文件添加字段的区别

普通的shp文件添加字段时&#xff0c;如果字段类型是数字类型的&#xff0c;例如短整型&#xff0c;则在添加字段时&#xff0c;就会自动赋予其属性值为0。则在进行属性界定时&#xff0c;若要赋予0值为特殊含义&#xff0c;就很不方便。而数据库中的矢量数据&#xff0c;添加字…

作者头像 李华
网站建设 2026/4/23 10:12:35

[STM32C0] 【STM32C092RC 测评】+08 定时器1输出可变脉宽

今天对脉冲宽度进行测试&#xff1a;一&#xff1a;PWM脉宽知识分享&#xff1a; PWM&#xff08;脉冲宽度调制&#xff09;的脉冲宽度是指在一个周期内信号处于高电平&#xff08;或有效状态&#xff09;的时间长度&#xff0c;通常用时间单位&#xff08;如微秒μs、毫秒ms&a…

作者头像 李华
网站建设 2026/4/23 10:11:31

[STM32C0] 【STM32C092RC 测评】+ 03 板载串口2输出测试

一&#xff1a;通用同步/异步收发器(USART) 这些设备嵌入四个通用同步/异步接收器/发送器&#xff0c;其通信速度高达6 Mbit/s。 它们提供CTS、RTS和RS485 DE信号的硬件管理、多处理器通信模式、同步SPI通信和单线半双工通信。 双工通信模式。有些还支持智能卡通信(ISO7816)、I…

作者头像 李华
网站建设 2026/4/23 10:11:31

基于springboot的医院资源管理系统(11635)

有需要的同学&#xff0c;源代码和配套文档领取&#xff0c;加文章最下方的名片哦 一、项目演示 项目演示视频 二、资料介绍 完整源代码&#xff08;前后端源代码SQL脚本&#xff09;配套文档&#xff08;LWPPT开题报告&#xff09;远程调试控屏包运行 三、技术介绍 Java…

作者头像 李华