在线做头像网站,张家界网站建设的公司,桂林漓江门票多少钱一张,做网站不给钱在本系列的上一篇文章中#xff0c;我们讨论了什么是 CRI 和 OCI#xff0c;Docker、containerd、CRI-O 之间的区别以及它们的架构等。最近#xff0c;我们得知 Docker 即将从 kubernetes 中弃用#xff01;#xff08;查看 kubernetes 官方的这篇文章#xff09;那么让我… 在本系列的上一篇文章中我们讨论了什么是 CRI 和 OCIDocker、containerd、CRI-O 之间的区别以及它们的架构等。最近我们得知 Docker 即将从 kubernetes 中弃用查看 kubernetes 官方的这篇文章那么让我们更深入地谈谈为什么会这样 为什么从 K8s 1.24 开始 dokershim 被弃用了
在 1.24 版中Kubernetes 将不再支持 Docker 作为容器运行时。Docker 正在逐步淘汰取而代之的是使用为 Kubernetes 构建的容器运行时接口 (CRI) 的运行时。如果您是 Kubernetes 最终用户您不会注意到太大的差异。这并不意味着 Docker 已死也不意味着您不能或不应该将其用作开发工具。Docker 仍然是创建容器的有用工具并且由其生成的映像可docker build用于您的 Kubernetes 集群。如果您希望创建集群则必须进行某些调整以避免集群故障。由于 Docker 将从 K8s 1.24 开始弃用因此您必须过渡到其他兼容的容器运行时之一例如 containerd 或 CRI-O。只需确保您选择的运行时支持 Docker 守护程序的当前设置例如日志记录。 人们听到这个消息时为什么会惊慌失措
正在考虑两种环境这会引起一些混乱。Kubernetes 集群中有一个称为容器运行时的组件负责获取和运行容器映像。尽管 Docker 是该运行时的流行选择但它并不打算集成到 Kubernetes 中这会带来问题。
将来还会使用 Dockerfiles 吗
此修改适用于在不同环境中使用 Docker 的开发人员。Kubernetes 集群内的 Docker 运行时独立于开发 Docker 安装。Docker 在修改之前的所有方面对开发人员仍然很有价值。Docker 生成 OCI开放容器计划镜像它并不是真正特定于 Docker 的镜像。无论使用何种工具创建Kubernetes 都会以相同的方式对待任何符合 OCI 标准的镜像。containerd 和 CRI-O 都能够提取和运行此类镜像。
如何从 Docker 切换到 containerd 和 CRI-O
步骤 1Cordon 和 Drain 节点
$ kubectl cordon Node name
$ kubectl drain Node Name --ignore-daemonsets
第 2 步停止服务
$ systemctl stop kubelet
$ systemctl stop docker步骤 3删除 Docker可选
apt purge docker-ce docker-ce-cli或者
yum remove docker-ce docker-ce-cli一、从 Docker 迁移到 containerd
步骤 4配置 containerd
禁用 /etc/containerd/config.toml 中的 disabled_plugins 行以启用 CRI 接口。
#disabled_plugins [cri]注意如果还没有默认的 containerd 配置文件您可以创建一个新的
containerd config default /etc/containerd/config.toml然后重新启动containerd
systemctl restart containerd步骤 5更改运行时 在 /var/lib/kubelet/kubeadm-flags.env 中添加这 2 个 containerd 运行时标志
--container-runtimeremote
--container-runtimeendpointunix:///run/containerd/containerd.sock步骤 6现在可以启动 kubelet
systemctl start kubelet步骤 7测试您的 containerd 运行时
kubectl get nodes -o wide现在你可以解除你的节点的封锁
kubectl uncordon Node您已经完成了 二、从 Docker 迁移到 CRI-O
接着上面第三步开始
步骤 4CRI-O 存储库和安装
$ add-apt-repository ppa:projectatomic/ppa
$ apt update
$ apt install -y cri-o-1.15
步骤 5配置 CRI-O 和内核 创建文件99-kubernetes-crio.conf
vi /etc/sysctl.d/99-kubernetes-crio.conf并添加以下几行
net.bridge.bridge-nf-call-iptables 1
net.ipv4.ip_forward 1
net.bridge.bridge-nf-call-ip6tables 1将更改应用到内核
sysctl -a
验证crio.conf并编辑cri-o以使用 Docker 注册表
打开文件crio.conf
vim /etc/crio/crio.conf检查配置中 conmon 的路径是否准确如果不准确请运行以下命令
which conmon将输出添加到crio.conf文件
# Path to the conmon binary, used for monitoring the OCI runtime.
conmon /usr/bin/conmon还要确保“注册表”选项被注释掉
registries [quay.io,docker.io,
]步骤 6现在您可以启动 CRI-O
$ systemctl enable crio
$ systemctl start crio步骤 7配置并启动 kubelet 编辑vi /etc/default/kubelet它看起来应该像这样
KUBELET_EXTRA_ARGS--feature-gatesAllAlphafalse --container-runtimeremote --cgroup-driversystemd --container-runtime-endpointunix:///var/run/crio/crio.sock --runtime-request-timeout5m然后启动 kubelet
systemctl start kubelet步骤 8现在您可以取消封锁您的节点
kubectl uncordon Node您已经完成了
概括
最后我想补充一点Docker 从 Kubernetes 中被弃用并不意味着您不能使用 Docker。这只是意味着 Docker 将不再被用作 Kubernetes 中的默认引擎这完全取决于您在选择特定容器运行时时的需求因为它们每个都有自己的优点。