前言
这回把容器换成containerd了。containerd和docker的关系简单理解就是containerd是docker的一个零件。
k8s官方换掉docker的原因我的理解:1.兼容docker麻烦;2.影响性能;3.商业原因(钱)。
官方文档
装containerd
有两种(二进制和yum)方式,我两种都用了,推荐yum。
yum -y install yum-utils
yum clean all
yum makecache
#添加yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#装containerd
yum install containerd.io -y
#生成默认配置文件
containerd config default > /etc/containerd/config.toml
生成完配置文件开始替换镜像、加速这些东西。
首先替换containerd默认的sand_box镜像,这个必须换,不然拉不下来镜像,编辑/etc/containerd/config.toml:
sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.2"
然后配置私有仓库和拉取镜像的镜像仓库,还是编辑/etc/containerd/config.toml,看我写法:
insecure_skip_verify = true 意为跳过证书认证。
[plugins."io.containerd.grpc.v1.cri".registry]
config_path = ""
[plugins."io.containerd.grpc.v1.cri".registry.auths]
[plugins."io.containerd.grpc.v1.cri".registry.configs]
[plugins."io.containerd.grpc.v1.cri".registry.configs."私有仓库ip".tls]
insecure_skip_verify = true
[plugins."io.containerd.grpc.v1.cri".registry.headers]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
endpoint = ["镜像仓库地址"]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."私有仓库ip:端口"]
endpoint = ["http://私有仓库ip:端口"]
如果照着我的配完了,还是有http和https的问题,就看看这俩:Kubernetes with containerd : http: server gave HTTP response to HTTPS client - Stack Overflowhttps://stackoverflow.com/questions/65724285/kubernetes-with-containerd-http-server-gave-http-response-to-https-client
如果这帮不了你,那就重启看看。
阿里云镜像地址获取方法看这张图:
这个私有仓库非https的问题我整了很久,照我这么配一定是可以的,因为我通了。
最后启动:systemctl enable containerd && systemctl restart containerd。
得装个客户端,不然用起来麻烦,nerdctl,具体怎么装我忘了记了,但是得装个网络插件,
到https://github.com/containernetworking/plugins/releases下载最新版本CNI插件,解压放在/opt/cni/bin目录中。
mkdir -p /opt/cni/bin/
tar zxf cni-plugins-linux-amd64-v0.9.1.tgz -C /opt/cni/bin/
整好了。
总结
目前yum仓库就这一个版本,够用了,确实得装个nerdctl用。