Вопрос или проблема
Я пытаюсь установить Kubernetes (kubectl) на Ubuntu 16.04 (x64), следуя инструкциям здесь. Я нахожусь за прокси на работе, и я уверен, что это причина неудачи. Я знаю, что существует множество связанных вопросов, но я уже попробовал все предложения, которые смог найти. Любая помощь будет очень признательна.
В настоящее время я застрял на стадии выполнения apt update. Это не удается с ошибкой:
W: Репозиторий 'https://apt.kubernetes.io kubernetes-xenial Release' не имеет файла Release.
N: Данные из такого репозитория не могут быть проверены и, следовательно, их использование может быть небезопасным.
N: См. man-страницу apt-secure(8) для деталей о создании репозиториев и настройке пользователей.
E: Не удалось получить https://apt.kubernetes.io/dists/kubernetes-xenial/main/binary-amd64/Packages проверка серверного сертификата не удалась. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none
Я попробовал несколько вещей:
Обновил мой apt.conf
(в /etc/apt/apt.conf
) с помощью
Acquire::https::packages.cloud.google.com::Verify-Peer "false";
Также попробовал указать вышеуказанное как аргумент командной строки:
sudo apt-get update -o Acquire::https::packages.cloud.google.com::Verify-Peer=false
Я попытался запустить apt-get update
с --allow-unauthenticated
и --allow-insecure-repositories
, но почему-то apt-secure
все еще игнорирует все эти инструкции. Я прочел man-страницу для apt-secure
, но не нашел ничего неправильного с указанием опций.
Я обновил ключи с помощью:
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 6A030B21BA07F4FB
Я обновил мои CA-сертификаты. Я выполнил – sudo rm /var/lib/apt/lists/*
, чтобы удалить все списки.
Содержимое /etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/ kubernetes-xenial main
Иногда может возникать проблема перенаправления.
Использование источника ниже решит эту проблему.
deb http://packages.cloud.google.com/apt/ kubernetes-xenial main
Обновление от 2024.3.28: используйте новый URL.
deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.28/deb/ /
Получите gpg
ключ, если он отсутствует:
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.28/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
Официальный документ находится здесь. Он работает для меня.
Цитата из Установка kubeadm:
Примечание: Устаревшие репозитории пакетов (apt.kubernetes.io и yum.kubernetes.io) были устаревшими и замороженными начиная с 13 сентября 2023 года. Использование новых репозиториев пакетов, размещенных на pkgs.k8s.io, настоятельно рекомендуется и обязательно для установки версий Kubernetes, выпущенных после 13 сентября 2023 года. Устаревшие репозитории и их содержимое могут быть удалены в любой момент в будущем без дополнительного уведомления. Новые репозитории пакетов предоставляют загрузки для версий Kubernetes начиная с v1.24.0.
Для Амога и Гуру,
Причина, по которой это больше не работает, начиная с 31 января 2024 года, заключается в том, что K8s изменил расположение репозиториев. См. https://kubernetes.io/blog/2023/08/15/pkgs-k8s-io-introduction/#how-to-migrate
Чтобы справиться с этим, я:
1.) удалил старый источник
который был: /etc/apt/sources.list.d/apt_kubernetes_io.list
который содержал
deb https://apt.kubernetes.io/ kubernetes-xenial main
2.) добавил новый источник
См. их инструкции выше, но краткая версия:
echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.28/deb/ /" | sudo tee /etc/apt/sources.list.d/kubernetes.list
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.28/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
sudo apt-get update
заметьте, что новые репозитории зависят от версии, и вам нужно правильно установить версию. Вышеуказанное для v1.28
Для последней версии ubuntu, где команда deb не найдена
sudo apt-add-repository 'deb http://packages.cloud.google.com/apt/ kubernetes-xenial main
И для любых ошибок с пакетами добавьте gpg ключ
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
и затем выполните
sudo apt-get update
Я пробовал множество способов, включая xenial и другие релизы, но ничего не сработало.
Наконец, я получил стабильное обновление из документации Kubernetes.
ШАГ1: Замените определение репозитория apt, чтобы apt указывал на новый репозиторий вместо репозитория, размещенного на Google. Убедитесь, что вы заменили минорную версию Kubernetes в команде ниже на минорную версию, которую вы в настоящий момент используете:
echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.28/deb/ /" | sudo tee /etc/apt/sources.list.d/kubernetes.list
ШАГ2: Загрузите публичный ключ подписи для репозиториев пакетов Kubernetes. Один и тот же ключ подписи используется для всех репозиториев, поэтому вы можете игнорировать версию в URL:
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.28/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
ШАГ3: Обновите индекс пакетов apt:
sudo apt update
И это сработало.
.
Ответ или решение
При установке Kubernetes на Ubuntu 16.04 (x64) могут возникнуть проблемы, особенно если вы работаете за прокси-сервером, как в вашем случае. Рассмотрим вашу ситуацию детально и предложим решение, опираясь на последние изменения в инфраструктуре Kubernetes.
Анализ проблемы:
-
Ошибка сертификата:
Сообщение об ошибке, которое вы видите, связано с проверкой сертификата сервера, указывающей на проблемы с вашим сетевым соединением или сертификацией CA. Это частая проблема при работе за прокси-сервером, который не упоминает о необходимости проверки SSL-сертификатов. -
Депрекация репозитория:
Старый репозиторийapt.kubernetes.io
был заморожен и устарел с 13 сентября 2023 года. Все новые версии Kubernetes теперь доступны через пакеты, хранящиеся в новом репозиторииpkgs.k8s.io
.
Решение:
-
Удаление старого репозитория:
Удалите ранее добавленный источник в/etc/apt/sources.list.d/kubernetes.list
, содержащий:deb https://apt.kubernetes.io/ kubernetes-xenial main
-
Добавление нового репозитория:
Согласно текущей документации Kubernetes, выполните следующие шаги:-
Добавьте новый источник:
echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.28/deb/ /" | sudo tee /etc/apt/sources.list.d/kubernetes.list
-
Скачайте и установите открытый ключ GPG для подписывания пакетов:
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.28/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
-
-
Обновление индексных файлов пакетов:
После настройки нового репозитория и ключа GPG, выполните команду:sudo apt update
Эти шаги должны помочь преодолеть возникшие проблемы с установкой Kubernetes на вашей системе Ubuntu 16.04. Убедитесь, что вы правильно настроили параметры прокси для apt
, если они необходимы, добавив их в /etc/apt/apt.conf
в формате:
Acquire::http::Proxy "http://your-proxy-server:port/";
Acquire::https::Proxy "http://your-proxy-server:port/";
Переход на новый репозиторий не только решает ваши текущие проблемы с SSL, но и гарантирует совместимость с новыми выпусками Kubernetes в будущем. Убедитесь, что у вас установлены все последние обновления системы, поскольку Ubuntu 16.04 уже устарела и может иметь уязвимости или проблемы совместимости.