如何将kubernetes集群与镜像注册表连接起来



Hi我已经部署了3个节点的kubernetes集群(一个主节点,两个工作节点(,如下所示:

kubectl get nodes
NAME                 STATUS   ROLES           AGE    VERSION
master.domain.com    Ready    control-plane   161m   v1.24.4
worker1.domain.com   Ready    <none>          154m   v1.24.4
worker2.domain.com   Ready    <none>          153m   v1.24.4

我使用了cri-o容器运行时,尝试创建一些pod,但由于以下事件而失败:

Events:
Type     Reason     Age                From               Message
----     ------     ----               ----               -------
Normal   Scheduled  40s                default-scheduler  Successfully assigned default/nginx to worker2.domain.com
Normal   BackOff    26s                kubelet            Back-off pulling image "nginx"
Warning  Failed     26s                kubelet            Error: ImagePullBackOff
Normal   Pulling    11s (x2 over 32s)  kubelet            Pulling image "nginx"
Warning  Failed     2s (x2 over 27s)   kubelet            Failed to pull image "nginx": rpc error: code = Unknown desc = Error reading manifest latest in registry.hub.docker.com/nginx: unauthorized: authentication required
Warning  Failed     2s (x2 over 27s)   kubelet            Error: ErrImagePull

吊舱定义文件如下:

apiVersion: v1
kind: Pod
metadata:
name: nginx
labels:
app: frontend
spec:
containers:
- name: nginx
image: nginx

和我用mysql而不是nginx尝试的一样,我在mysql pod中得到了下面的事件,看起来它可以提取图像,但不能运行pod:

Type     Reason     Age                   From               Message
----     ------     ----                  ----               -------
Normal   Scheduled  23m                   default-scheduler  Successfully assigned default/mysql to worker1.domain.com
Normal   Pulled     22m                   kubelet            Successfully pulled image "mysql" in 54.067277637s
Normal   Pulled     22m                   kubelet            Successfully pulled image "mysql" in 18.227802182s
Normal   Pulled     21m                   kubelet            Successfully pulled image "mysql" in 13.511077504s
Normal   Created    20m (x4 over 22m)     kubelet            Created container mysql
Normal   Started    20m (x4 over 22m)     kubelet            Started container mysql
Normal   Pulled     20m                   kubelet            Successfully pulled image "mysql" in 11.998942705s
Normal   Pulling    20m (x5 over 23m)     kubelet            Pulling image "mysql"
Normal   Pulled     20m                   kubelet            Successfully pulled image "mysql" in 13.68976309s
Normal   Pulled     18m                   kubelet            Successfully pulled image "mysql" in 16.584670292s
Warning  BackOff    3m12s (x80 over 22m)  kubelet            Back-off restarting failed container

以下是POD状态:

NAME    READY   STATUS             RESTARTS        AGE
mysql   0/1     CrashLoopBackOff   8 (4m51s ago)   23m
nginx   0/1     ImagePullBackOff   0               3m26s

您实际上不需要任何额外的配置就可以从公共映像注册表中提取映像

容器/映像库用于从注册表中提取映像。目前,它支持Docker模式2/version 1和模式2/version 2。它还通过了所有Docker和Kubernetes测试。

cri容器图像

因此,只要提到具有正确URI的图像,它就会起作用。

最新更新