关注K8S的同学都知道Kubernetes官方已经宣布从 v1.20版本之后,放弃对docker的容器运行时的支持,具体见链接
https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.20.md#deprecation
这个消息,其实并没有听起来那么吓人,请参考K8S的官方解释
https://kubernetes.io/blog/2020/12/02/dont-panic-kubernetes-and-docker/
在 Kubernetes 集群中,有一个称为”容器运行时”的东西,负责提取和运行容器映像。Docker 是该运行时的热门选择,其他常见选项包括Containerd和 CRI-O。
Docker 的设计并非旨在嵌入 Kubernetes 中。而站在更广泛的角度来看,我们日常称之为"Docker"的技术实际上是一个完整的容器技术堆栈,它本身就是一个高级容器运行时。此外,Docker 还包含了许多 UX 增强功能,使得我们在进行开发工作时很容易与之交互,但这些 UX 增强功能对于 Kubernetes 来说并不是必需的。
在常规应用中,Docker 不符合 CRI(Container Runtime Interface容器运行时接口)规范,用户使用 Kubernetes 集群必须借助另一个名为 Dockershim 的中间件工具来获取其真正需要的内容,该工具已被容器化。这意味着,官方必须要在 Docker 和 Kubernetes 之间再多走一步,这无疑增加了复杂性与成本。
实际上,Kubernetes 早在 v1.23 发行版中就已将 Dockershim 从 Kubelet 中删除,从而删除了对 Docker 作为容器运行时的支持。
因此,作为用户,接下来,只需要将容器运行时从 Docker 更改为另一个受支持的容器运行时即可。
实际上,在开发中使用的 Docker 安装与 Kubernetes 集群中的 Docker 运行时无关。
或许这样说,依旧让很多人感到困惑。简而言之, Docker 生成的镜像实际上是一个 OCI (Open Container Initiative)镜像,使用Docker生成的镜像仍然可以在Kubernetes集群中使用。任何与 OCI 兼容的镜像,对于 Kubernetes 而言,都是一样的。
对于CRI和OCI在K8S中的位置,请仔细研究下图。
编译环境:Power9+Ubuntu 18.04 ppc64le+Go 1.16
export DEBIAN_FRONTEND=noninteractive
apt-get update -y
apt-get -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade -yq
apt-get -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" install -yq build-essential btrfs-tools libseccomp-dev unzip pkg-config
从官网下载 https://golang.org/dl/ ppc64le 架构,并配置好Go语言环境,包括GO_HOME ,GO_ROOT
wget https://github.com/protocolbuffers/protobuf/releases/download/v3.7.1/protoc-3.7.1-linux-ppcle_64.zip
unzip ./protoc-3.7.1-linux-ppcle_64.zip -d protoc-3.7.1
mv ./protoc-3.7.1/bin/protoc /usr/local/bin
go get github.com/opencontainers/runc
cd $GOPATH/src/github.com/opencontainers/runc
make
make install
go get github.com/containerd/containerd
cd $GOPATH/src/github.com/containerd/containerd
make
make install
make integration
cp ./containerd.service /etc/systemd/system/
chmod 700 /etc/systemd/system/containerd.service
systemctl enable containerd.service
service containerd start
service containerd status
containerd config default > /etc/containerd/config.toml
如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!
赞0
添加新评论0 条评论