Автор: Адольфо Гарсия Вейтия (Chainguard), Боб Киллен (Google)
Начиная с Kubernetes 1.25, наш реестр образов контейнеров изменился с k8s.gcr.io на Registry.k8s.io. Этот новый реестр распределяет нагрузку между несколькими поставщиками облачных услуг и регионами, действуя как сеть доставки контента (CDN) для образов контейнеров Kubernetes. Это изменение снижает зависимость проекта от одного объекта и обеспечивает более быструю загрузку для большого числа пользователей.
Если вы хотите узнать больше о том, почему мы внесли это изменение, или о некоторых потенциальных проблемах, с которыми вы можете столкнуться, читайте дальше.
k8s.gcr.io размещается в специальном домене Google Container Registry (GCR), созданном специально для проектов Kubernetes. С самого начала проекта это было здорово, и мы благодарны Google за предоставление этих ресурсов, но сегодня есть и другие облачные провайдеры и поставщики, которые хотят разместить изображения, чтобы обеспечить людям лучший опыт на своих платформах. В дополнение к возобновленному обязательству Google пожертвовать 3 миллиона долларов на поддержку инфраструктуры проекта, Amazon объявила о соответствующем пожертвовании во время своего основного доклада Kubecon NA 2022 в Детройте. Это обеспечит лучший опыт для пользователей (ближе серверы = более быстрая загрузка), а также снизит исходящую пропускную способность и затраты на GCR. Registration.k8s.io разделит нагрузку между Google и Amazon, а в будущем за этим последуют и другие провайдеры.
registry.k8s.io этобезопасный blob Редиректор[1],Подключите клиент к ближайшему облачному провайдеру. Суть этого изменения,Средство извлечения изображения из клиента,Может быть перенаправлен на любой из нескольких бэкэндов. Мы ожидаем, что настройки серверной части будут постоянно меняться.,И это произойдет только по мере того, как к ним присоединятся все больше и больше поставщиков облачных услуг.,Справочное зеркало добавляется при публикации зеркала.
С этим изменением механизмы ограничительного контроля (такие как прокси-серверы «посредник» или сетевые политики), ограничивающие доступ к определенным спискам IP/доменов, будут нарушены. В таких сценариях мы рекомендуем вам зеркально отразить образ выпуска в локальном реестре, который вы строго контролируете.
Более подробную информацию об этой стратегии можно найти,ВидетьРаздел стабильности документации реестра.k8s.io[2]。
Ошибка может зависеть от типа среды выполнения контейнера, которую вы используете, и конечной точки, к которой вы перенаправляете, но она должна отображаться, как не удалось создать контейнер с предупреждением FailedCreatePodSandBox.
Ниже приведен пример сообщения об ошибке, показывающий, что развертывание агента невозможно получить из-за неизвестного сертификата:
FailedCreatePodSandBox: Failed to create pod sandbox: rpc error: code = Unknown desc = Error response from daemon: Head “https://us-west1-docker.pkg.dev/v2/k8s-artifacts-prod/images/pause/manifests/3.8”: x509: certificate signed by unknown authority
Если новое зарегистрированное доменное имя недоступно, вы можете вернуться к старому доменному имени для версий кластера ниже 1.25. Имейте в виду, что в конечном итоге вам придется переключиться на новый реестр, поскольку новые теги изображений больше не будут передаваться в GCR.
Реестром, используемым kubeadm для извлечения образов, можно управлять двумя способами:
Установите флаг --image-repository.
kubeadm init --image-repository=k8s.gcr.io
илисуществоватьконфигурация kubeadm[3]ClusterConfiguration середина:
apiVersion: kubeadm.k8s.io/v1beta3
kind: ClusterConfiguration
imageRepository: "k8s.gcr.io"
Образ, используемый kubelet для изолированной программной среды модуля (pasue), можно переопределить, установив флаг --pod-infra-container-image. Например:
kubelet --pod-infra-container-image=k8s.gcr.io/pause:3.5
измениться сложно,В целях обеспечения устойчивого развития проекта,Нам необходимо улучшить нашу зеркальную сервисную платформу. Мы стремимся сделать так, чтобы каждый, кто использует Kubernetes люди живут лучше. Многие участники со всех уголков нашего сообщества на протяжении долгого времени усердно работали над тем, чтобы мы принимали наилучшие возможные решения, выполняли планы и сообщали об этих планах в меру своих возможностей.
Благодарим Аарона Крикенбергера, Арно Меукама, Бенджамина Элдера, Калеба Вудбайна, Даванума Шриниваса, Махамеда Али и Тима Хокина из SIG K8s Infra, Брайана Мак Куина и Сергея Канжелева из SIG Node, Любомира Иванова из SIG Cluster Lifecycle, Адольфо из SIG Release Гарсии Вейтиа, Джереми Рикард, Саша Грюнерт и Стивен Огастус, Боб Киллен и Каслин Филдс из SIG Contribex, Тим Олклер из Совета по реагированию на безопасность. Большое спасибо также нашим друзьям, которые поддерживали связь с нашими партнерами-провайдерами облачных услуг: Джеем Пайпсом из Amazon и Джоном Джонсоном-младшим из Google.
[1]
безопасный blob Редиректор: https://github.com/kubernetes/registry.k8s.io/blob/main/cmd/archeio/docs/request-handling.md
[2]
registry.k8s.io Раздел стабильности документации: https://github.com/kubernetes/registry.k8s.io#stability
[3]
kubeadm Конфигурация: https://kubernetes.io/docs/reference/config-api/kubeadm-config.v1beta3/