k8s docker 弃用_弃用docker之后你的k8s用哪种容器runtime?
在k8s取消内置dockershim代码,取消了对docker的支持后,用户无非重新选择一个运行时,不必过度惊慌!现有的各种运行中,containerd必然成为大家后续的选择,docker也将会将一些功能复制到containerd,这里为大家介绍下containerd以及k8s如何使用containerd作为容器运行时。docker本身也是调用containerd进行容器管理。conta...
在k8s取消内置dockershim代码,取消了对docker的支持后,用户无非重新选择一个运行时,不必过度惊慌!
现有的各种运行中,containerd必然成为大家后续的选择,docker也将会将一些功能复制到containerd,这里为大家介绍下containerd以及k8s如何使用containerd作为容器运行时。docker本身也是调用containerd进行容器管理。
containerd也是行业标准的容器运行时,由docker捐献,具有简单性,健壮性和可移植性等特点。可作为Linux和Windows的守护程序使用,可以管理其主机系统的完整容器生命周期:镜像传输和存储,容器执行和监控,低级存储和网络附件等。
containerd是CNCF毕业项目
containerd旨在嵌入到更大的系统中,而不是由开发人员或最终用户直接使用。
containerd部署
•部署
这里选用centos8 yum安装
yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repoyum install -y containerd.iomkdir -p /etc/containerdcontainerd config default > /etc/containerd/config.toml
•启用systemd作为cgroup driver
修改/etc/containerd/config.toml
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc] ... [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options] SystemdCgroup = true
kubeadm使用containerd
对于k8s来说只需要指定kubelet参数
--container-runtime-endpoint=unix:///run/containerd/containerd.sock
对于kubeadm来说指定参数cri-socket
kubeadm init --image-repository=registry.aliyuncs.com/google_containers --cri-socket=/run/containerd/containerd.sock --node-name=192.168.9.235
或指定配置
nodeRegistration: criSocket: /run/containerd/containerd.sock
对于国内同学来说需要注意,我们通常通过--pod-infra-container-image为kubelet指定pause镜像地址,这里需要注意该参数的说明
--pod-infra-container-image string The image whose network/ipc namespaces containers in each pod will use. This docker-specific flag only works when container-runtime is set to docker. (default "k8s.gcr.io/pause:3.2")
只针对docker生效,所以我们无法修改pause镜像的地址,必须要使用名为k8s.gcr.io/pause:3.2的镜像,当我们使用containerd时,需要先拉好镜像。
ctr --namespace k8s.io image pull registry.aliyuncs.com/google_containers/pause:3.2ctr --namespace k8s.io image tag registry.aliyuncs.com/google_containers/pause:3.2 k8s.gcr.io/pause:3.2
containerd的管理
crictl
crictl 是 CRI 兼容的容器运行时命令行接口。你可以使用它来检查和调试 Kubernetes 节点上的容器运行时和应用程序。crictl 和它的源代码在 cri-tools 代码库。可以从 cri-tools的发布页面[1] 获取
crictl可以通过以下方式指定配置
•通过设置全局选项标志--runtime-endpoint(-r)和--image-endpoint(-i)•通过设置环境变量CONTAINER_RUNTIME_ENDPOINT和IMAGE_SERVICE_ENDPOINT•通过在配置文件中设置端点 --config=/etc/crictl.yaml
配置示例:
/etc/crictl.yamlruntime-endpoint: unix:///run/containerd/containerd.sockimage-endpoint: unix:///run/containerd/containerd.socktimeout: 10debug: true
其他功能大家看help都能get到要点
ctr
ctr是用于与containerd守护程序进行交互,用于不受支持的调试和管理功能的客户端。因为不受支持,所以不能保证命令,选项和操作的向后兼容性。它可以实现一些cri不支持的功能,例如上面提到的tag功能。ctr还有namespace概念,对于crictl默认namespace是k8s.io
--namespace 与命令一起使用的名称空间
查看命名空间
ctr ns lsNAME LABELSdefaultk8s.io
命名空间之间镜像/容器时不可见的,所以不指定命名空间ctr命令就不能看到k8s的容器和镜像。
扫描关注我:
引用链接
[1]
cri-tools的发布页面: https://github.com/kubernetes-sigs/cri-tools/releases
更多推荐
所有评论(0)