k8s集群,CRI-Docker部署条件及方法

CRI-Docker部署条件及方法

CRI-Docker使用条件

在 Kubernetes 1.20 及以上版本,kubeadm 默认使用 containerd 作为容器运行时(Container Runtime Interface, CRI),而不再默认使用 Docker。
因此,安装 CRI-Docker(即 Docker 的 CRI 接口)是可选的,除非你明确需要使用 Docker 作为容器运行时。

  • 为什么不需要安装 cri-docker(默认使用 containerd)?
    从 Kubernetes 1.20 开始,Kubernetes 默认使用 containerd 作为容器运行时,而不是传统的 Docker。在这种情况下,不再需要安装 cri-docker,因为 containerd 已经完全兼容 CRI 并可以直接与 kubelet 进行交互。
    如果你使用的是 Kubernetes 1.20 或更高版本,kubeadm 会自动配置并使用 containerd,因此你无需单独安装 Docker 作为 CRI,除非你需要使用 Docker 的功能。
  • 使用 Docker 作为 CRI(需要安装 cri-docker)
    如果你希望在 Kubernetes 中继续使用 Docker 作为容器运行时,则需要安装 cri-docker。cri-docker 是 Docker提供的一个兼容 CRI 的接口,使 Docker 能够作为 Kubernetes 的容器运行时。

安装 cri-docker 的步骤:

1. 卸载旧版 Docker:
# 如果你之前安装了 Docker,首先卸载它:
sudo yum remove docker docker-common docker-snapshot

2. 安装 cri-docker:
# 安装 Docker 和 cri-docker:

# 下载 Docker CRI 插件
curl -sSL https://github.com/Mirantis/cri-dockerd/releases/download/v0.2.0/cri-dockerd-0.2.0-amd64.tar.gz -o cri-dockerd.tar.gz

# 解压并安装
tar -xvzf cri-dockerd.tar.gz
sudo mv cri-dockerd /usr/local/bin/

# 安装 Docker
sudo yum install -y docker

3. 启动 cri-docker 服务:

# 启动并启用 cri-docker 服务,使其在系统启动时自启:
sudo systemctl enable --now cri-docker

4. 修改 kubelet 配置文件:
配置 kubelet 使用 Docker 作为容器运行时。编辑 /etc/systemd/system/kubelet.service.d/10-kubeadm.conf 文件,修改 KUBELET_EXTRA_ARGS 参数:

# 编辑 kubelet 配置
sudo vi /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
在 KUBELET_EXTRA_ARGS 行添加 --container-runtime=docker

KUBELET_EXTRA_ARGS=--container-runtime=docker --container-runtime-endpoint=unix:///var/run/cri-dockerd.sock

5. 重启 kubelet 服务:

# 修改完配置后,重启 kubelet 服务:
sudo systemctl daemon-reload
sudo systemctl restart kubelet

6. 检查是否使用 Docker:
# 查看 kubelet 当前使用的容器运行时:
kubectl get node <node-name> -o jsonpath='{.status.nodeInfo.containerRuntimeVersion}'

如果配置正确,输出应该类似于:
docker://20.10.7
### 使用 Sealos 部署 Kubernetes 并与 CRI-Docker 集成 #### 安装准备 为了确保顺利部署,需先完成一系列准备工作。这包括但不限于关闭防火墙和 SELinux、配置主机名解析以及设置时间同步[^2]。 ```bash sudo systemctl stop firewalld && sudo systemctl disable firewalld sudo setenforce 0 sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config echo "192.168.56.10 master" | sudo tee -a /etc/hosts echo "192.168.56.11 node1" | sudo tee -a /etc/hosts echo "192.168.56.12 node2" | sudo tee -a /etc/hosts timedatectl set-timezone Asia/Shanghai chronyc sources -v ``` #### 下载并初始化 Sealos 工具包 获取最新版的 Sealos 文件,并将其放置于 `/usr/local/bin` 路径下以便全局调用。接着赋予执行权限给 sealos 可执行文件。 ```bash wget https://github.com/labring/sealos/releases/download/v4.1.3/sealos_4.1.3_linux_amd64.tar.gz tar zxvf sealos_*.gz -C /usr/local/bin/ chmod +x /usr/local/bin/sealos ``` #### 设置 Docker 作为默认容器运行时 尽管推荐采用 Containerd 来提高性能和资源利用效率[^3],但在某些场景中仍可能偏好使用 Docker。为此,在启动集群之前应指定 `--container-runtime=docker` 参数来告知 Sealos 使用 Docker 运行时。 ```bash sealos init --master 192.168.56.10 --node 192.168.56.11,192.168.56.12 \ --passwd your_password_here \ --version v1.24.0 \ --pkg-url https://hub.fastgit.org/labring/kubernetes/releases/download/v1.24.0/kube-v1.24.0-linux-amd64.tar.gz \ --container-runtime=docker ``` 上述命令中的参数解释如下: - `--master`: 主节点 IP 地址。 - `--node`: 所有工作节点的 IP 列表(逗号分隔)。 - `--passwd`: SSH 密码用于连接各个节点。 - `--version`: 指定要安装的 Kubernetes 版本。 - `--pkg-url`: 自定义下载地址链接至所需版本的 Kubernetes 包。 - `--container-runtime=docker`: 明确指出使用 Docker 作为容器引擎。 #### 启动集群服务 一旦成功初始化之后,则可以通过下面这条简单的指令让整个集群运作起来: ```bash sealos apply ``` 此时应该能够通过 `kubectl get nodes` 查看到所有的节点都处于 Ready 状态了。 #### 验证集群健康状况 最后一步就是验证集群的状态是否正常。可以尝试创建一个小的应用程序 Pod 或者直接查询现有的系统 Pods 是否都在稳定运行当中。 ```bash kubectl run nginx --image=nginx:latest --port=80 kubectl expose pod/nginx --type="NodePort" kubectl get pods,services ``` 如果一切顺利的话,现在就已经拥有了一个基于 DockerKubernetes 生产环境!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值