日志

关于容器管理工具docker crictl ctr(附代理配置)

docker 基于containerd,但是镜像独立管理
k8s已废弃对docker容器的使用,不过可以手动指定docker作为基础容器,这时docker的本地镜像k8s可以直接使用

crictl k8s的容器运行时管理工具,如果k8s基于containerd镜像由ctr管理,namespace=k8s.io
可以直接使用crictl拉取镜像供k8s使用
crictl pull imagexxxxxx

ctr containerd的管理工具
通常K8s使用containerd作为基础容器,相关容器与镜像都在namespace k8s.io中
使用ctr拉取k8s所需镜像
ctr -n k8s.io i pull imagexxxxx

如果k8s在设置了镜像代理也拉取不了镜像时可以设置会话http代理,然后执行上面的命令手动拉取到本地给k8s使用。

Docker

vi /etc/docker/daemon.json

{
  "registry-mirrors": [
        "https://dhub.kubesre.xyz",
        "https://docker.1panel.live",
        "https://docker.nju.edu.cn",
	"https://registry.aliyuncs.com"
  ]
}

#重启
sudo service docker restart

Docker允许http访问创建

自建仓库有时只能http请求
1./etc/docker/daemon.json添加insecure-registries
echo '{ "insecure-registries":["registry.dev.scntsc.com:80"] }' > /etc/docker/daemon.json

systemctl daemon-reload
systemctl restart kubelet

ps:deamon.json存在则加入 insecure-registries
    操作仓库时也必需指定80端口,否则可能又请求443去了

Containerd

# 指定config_path
vi /etc/containerd/config.toml
config_path = "/etc/containerd/certs.d"

# 重启容器
sudo systemctl restart containerd

# 创建docker.io代理
mkdir -p /etc/containerd/certs.d/docker.io
cat > /etc/containerd/certs.d/docker.io/hosts.toml << EOF
server = "https://docker.io"

[host."https://dhub.kubesre.xyz"]
  capabilities = ["pull", "resolve"]

[host."https://docker.1panel.live"]
  capabilities = ["pull", "resolve"]

[host."https://docker.nju.edu.cn"]
  capabilities = ["pull", "resolve"]

[host."https://registry.aliyuncs.com"]
  capabilities = ["pull", "resolve"]
EOF

# docker.elastic.co,registry.k8s.io同理

注意:对于nerdctl命令来说,会自动使用/etc/containerd/certs.d目录下的配置镜像加速,但是对于ctr命令,需要指定--hosts-dir=/etc/containerd/certs.d。举个栗子:ctr i pull --hosts-dir=/etc/containerd/certs.d registry.k8s.io/sig-storage/csi-provisioner:v3.5.0,如果要确定此命令是否真的使用了镜像加速,可以增加--debug=true参数,譬如:
ctr --debug=true i pull --hosts-dir=/etc/containerd/certs.d registry.k8s.io/sig-storage/csi-provisioner:v3.5.0

ps:其实不是很好用,ctr要指定hosts-dir,k8s以containerd为容器时也无法生效,不如:K8s容器镜像代理,不过kube-systemt等一些基础pod还是需要ctr手动拉,不然”k8s容器代理“也无法正常运行

参考来源:https://blog.csdn.net/IOT_AI/article/details/131975562

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注