k8s 运行时 docker
时间: 2025-01-04 09:18:13 浏览: 52
### 如何在 Kubernetes (k8s) 中配置和使用 Docker 作为容器运行时
尽管 Kubernetes 已经逐步转向其他容器运行时,如 containerd,并且从 1.20 版本起不再直接支持 Docker[^5],仍然可以借助 `cri-dockerd` 来实现这一目标。以下是具体的操作方法:
#### 修改 Kubelet 配置文件
当 kubelet.conf 文件内未指定任何关于容器运行时的具体参数时,为了使 Kubernetes 能够识别并利用 Docker 进行工作负载的管理,需按照特定流程调整设置以启用 Docker 作为容器运行时[^2]。
对于大多数 Linux 发行版,默认情况下,kubelet 将查找位于 `/etc/kubernetes/kubelet.conf` 的配置文件来获取启动选项。此时应编辑此文件或通过命令行传递相应的标志位给 kubelet,告知其采用 Docker 并指明 socket 地址通常为 unix:///var/run/docker.sock[^4]。
#### 安装 cri-dockerd
由于官方已停止对原生 Docker API 的支持,因此需要安装额外组件——即 `cri-dockerd`,这是一个适配层,使得旧版本中的 Docker 可继续充当 CRI(Container Runtime Interface)的一部分发挥作用。该工具会监听标准的 gRPC 接口并将请求转发至底层的 Docker Engine 实现交互操作。
```bash
# 下载并解压最新稳定版 cri-dockerd
wget https://github.com/Mirantis/cri-dockerd/releases/latest/download/cri-dockerd-linux-amd64.tar.gz
tar zxvf cri-dockerd-linux-amd64.tar.gz -C /usr/local/bin/
# 创建 systemd 单元文件以便服务自启
cat <<EOF | sudo tee /etc/systemd/system/cri-docker.service
[Unit]
Description=CRI interface for Docker
After=docker.service
Requires=docker.service
[Service]
ExecStart=/usr/local/bin/cri-dockerd
Restart=always
[Install]
WantedBy=multi-user.target
EOF
# 启动并设置开机自动加载
sudo systemctl daemon-reload
sudo systemctl enable --now cri-docker.service
```
完成上述步骤之后,重启整个节点上的 kubelet 服务确保更改生效即可让集群内的 Pod 开始基于 Docker 执行。
阅读全文
相关推荐


















