Kubernetes containerd - не удалось получить изображение из частного реестра

Я установил kubernetes V1.20.1 с containerd вместо Docker. Теперь мне не удалось вытащить образы Docker из моего частного реестра (Harbour).

Я уже изменил /etc/containerd/config.toml вот так:

[plugins."io.containerd.grpc.v1.cri".registry]
  [plugins."io.containerd.grpc.v1.cri".registry.mirrors]
    [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
      endpoint = ["https://registry-1.docker.io"]
    [plugins."io.containerd.grpc.v1.cri".registry.mirrors."registry.foo.com"]
      endpoint = ["https://registry.foo.com"]
  [plugins."io.containerd.grpc.v1.cri".registry.configs]
    [plugins."io.containerd.grpc.v1.cri".registry.configs."registry.foo.com"]
      [plugins."io.containerd.grpc.v1.cri".registry.configs."registry.foo.com".auth]
        username = "admin"
        password = "Harbor12345"

Но это не сработало. Вытягивание не удалось с сообщением:

Failed to pull image "registry.foo.com/library/myimage:latest": rpc error: code = Unknown
desc = failed to pull and unpack image "registry.foo.com/library/myimage:latest": failed to 
resolve reference "registry.foo.com/library/myimage:latest": unexpected status code 
[manifests latest]: 401 Unauthorized

Реестр My Harbour доступен через HTTPS с сертификатом Let's Encrypt. Так что https здесь не должно быть проблемой.

Даже если я попытаюсь создать docker-secret, это не сработает:

kubectl create secret docker-registry registry.foo.com --docker-server=https://registry.foo.com --docker-username=admin --docker-password=Harbor12345 [email protected]

Кто-нибудь может привести мне пример того, как настроить частный реестр в Kubernetes с помощью containerd?


person Ralph    schedule 05.01.2021    source источник


Ответы (1)


Установите imagePullSecrets в спецификации модуля / развертывания:

apiVersion: v1
kind: Pod
metadata:
  name: private-reg
spec:
  containers:
  - name: private-reg-container
    image: <your-private-image>
  imagePullSecrets:
  - name: registry.foo.com

Дополнительная информация: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/

person Dávid Molnár    schedule 05.01.2021
comment
Я получаю это, работая с «Стручком». Но это не сработало с «Развертыванием». - person Ralph; 05.01.2021
comment
хорошо - это сработало после того, как я создал секрет для соответствующего пространства имен. Есть ли способ добавить imagePullScrets в глобальную область, чтобы мне не нужен был секрет для каждого пространства имен? - person Ralph; 05.01.2021
comment
Поды могут ссылаться на секреты только в том же пространстве имен: kubernetes.io/docs/concepts / configuration / secret / # details Однако, если вы используете такие решения, как Rancher, вы можете настроить секрет на уровне проекта, и все пространства имен в этом проекте будут иметь доступ к секрету. - person Dávid Molnár; 05.01.2021