Когда развернут microk8s, образы контейнеров не могут быть загружены из частного зеркала реестра.

Вопрос или проблема

Когда microk8s развернут, контейнерные образы не могут быть загружены из частного зеркала реестра (используйте harbor). Информация об ошибке ниже:
введите описание изображения здесь

Проблема одна и та же, независимо от того, используете ли вы https или http. Тем не менее, нормально использовать docker или microk8s ctr для прямой загрузки образа:
введите описание изображения здесь
Нормально использовать docker или microk8s ctr для прямой загрузки образа, и хотя образ может быть загружен нормально таким образом, я заметил, что (команда microk8s ctr) скорость загрузки контейнерных образов очень медленная, и теоретически скорость внутри сети должна быть очень быстрой, близкой к гигабиту.

Моя лабораторная среда:
ОС: ubuntu server 24.04
версия harbor: v2.11.2-201d421d
версия microk8s: V1.31.3
используется сертификат CA Windows

# пользовательская конфигурация запуска для MicroK8s
---
version: 0.1.0
extraKubeletArgs:
  --cluster-domain: dltornado2.com
  --cluster-dns: 10.152.183.10
addons:
  - name: dns
  - name: hostpath-storage
  - name: ingress
  - name: nvidia
  - name: observability
containerdRegistryConfigs:
  # Используйте `https://harbor.dltornado2.com/dockerhub_proxy` как зеркало реестра DockerHub.
  docker.io: |
    [host."harbor.dltornado2.com/dockerhub_proxy"]
    capabilities = ["pull", "resolve"]
  #  override_path = true
  #  ca = "/home/ubuntu/certs.d/docker.io/ca.crt"
  # Используйте `https://hub.geekery.cn` как зеркало реестра DockerHub.
  #docker.io: |
  #  [host."https://hub.geekery.cn"]
  #  capabilities = ["pull", "resolve"]
  #  override_path = true
  # Используйте `https://harbor.dltornado2.com/quay_proxy` как зеркало реестра quay.
  quay.io: |
    [host."https://harbor.dltornado2.com/quay_proxy"]
    capabilities = ["pull", "resolve"]
  #  override_path = true
  #  ca = "/home/ubuntu/certs.d/quay.io/ca.crt"
  # Используйте `https://registry.aliyuncs.com/google_containers` как зеркало реестра gcr.
  registry.k8s.io: |
    [host."https://k8s.m.daocloud.io"]
    capabilities = ["pull", "resolve"]
  #  override_path = true
  #  ca = "/home/ubuntu/certs.d/registry.k8s.io/ca.crt"
  #registry.k8s.io: |
  #  [host."https://k8s.m.daocloud.io"]
  #  capabilities = ["pull", "resolve"]
  #registry.k8s.io: |
  #  [host."https://registry.aliyuncs.com/google_containers"]
  #  capabilities = ["pull", "resolve"]
  #Containerd будет использовать этот прокси при загрузке образов из верхних репозиториев

У меня ушла неделя, и я все еще не решил проблему.

Ответ или решение

Проблема с загрузкой образов контейнеров из локального реестра при использовании MicroK8s и Harbor

Установив MicroK8s в вашем учебном окружении с операционной системой Ubuntu Server 24.04 и реестром Harbor версии v2.11.2, вы столкнулись с серьезной проблемой: контейнерные образы не могут быть загружены из частного реестра, даже несмотря на то, что загрузка возможна с помощью таких инструментов, как Docker или microk8s ctr. Давайте проанализируем возможные причины этой проблемы и предложим решения.

Основные причины проблемы

  1. Настройки конфигурации Containerd:
    Проверьте, корректно ли настроены параметры в файле конфигурации containerd. Судя по вашему коду конфигурации, вы указали различные реестры, однако может быть проблема с тем, как именно они связаны с основным реестром Harbor. Вы можете протестировать возможность соединения с реестром, перемещая блоки и меняя параметры.

  2. Проблемы с SSL-сертификатами:
    Отсутствие корректных SSL-сертификатов может быть причиной, по которой MicroK8s не может установить безопасное соединение с Harbor. Убедитесь, что CA-сертификат, выданный Windows CA, правильно установлен в системе. Если ваш реестр использует самоподписанные сертификаты, добавьте их в конфигурацию containerd.

    # Пример добавления CA
    [host."harbor.dltornado2.com"]
     ca = "/home/ubuntu/certs.d/harbor/ca.crt"
  3. Истекшие или неверные учетные данные:
    Убедитесь, что у MicroK8s есть доступ к правильным учетным данным для доступа к реестру. Проверьте kubeconfig, чтобы убедиться, что создан секрет для хранения учетных данных необходимого реестра.

  4. Сеть и DNS:
    Проверьте сетевую конфигурацию. Убедитесь, что DNS-сервер правильно настроен и может разрешать имя вашего реестра. Возможно, необходимо добавить соответствующие записи в /etc/hosts или настроить внешний DNS.

  5. Настройки сетевого бриджа в MicroK8s:
    Возможно, что настройки сетевого бриджа нарушают соединение. Пересмотрите настройки сетевого интерфейса и убедитесь, что локальные политики безопасности не блокируют трафик между MicroK8s и вашим реестром Harbor.

Решения и рекомендации

  1. Тестируйте соединение:
    Используйте команду curl для проверки доступности реестра из под контейнеров MicroK8s. Это позволит определить, доступен ли реестр из сети контейнера.

    microk8s kubectl run -i --tty --rm debug --image=busybox -- sh
    # Внутри контейнера
    curl -v https://harbor.dltornado2.com
  2. Логирование и диагностика:
    Проверьте журналы MicroK8s и контейнера, чтобы выявить проблемы при попытке загрузить образы.

    microk8s kubectl logs <имя-пода>
  3. Исследуйте альтернативные методы:
    Если загрузка через MicroK8s ctr идет медленно, рассмотрите использование предварительной загрузки образов в MicroK8s. Например, вы можете предварительно загрузить образы в реестр, а затем использовать стандартные команды Kubernetes для развертывания.

  4. Обновление компонентов:
    Проверьте наличие обновлений для MicroK8s и Harbor. Иногда обновление программного обеспечения может решить известные проблемы и повысить производительность.

Заключение

Решение проблемы с загрузкой контейнерных образов из частного реестра в MicroK8s может потребовать внимательного исследования настроек конфигурации и сетевой инфраструктуры. Простое исправление проблемы может значительно упростить вашу работу с контейнерами и ускорить разработку. Не забудьте сделать резервные копии всех изменений и поддерживать конфигурации в актуальном состоянии.

Оцените материал
Добавить комментарий

Капча загружается...