Рейтинг:0

Ошибка Kubernetes при создании ресурсов PKI: недействительный сертификат

флаг mn

У меня проблема с присоединением моих рабочих узлов к трем настроенным мастерам.Стоит отметить, что я очень мало знаю о сетевой стороне этого (я бы предпочел, чтобы это объяснили, как будто мне пять, чтобы я мог быть уверен, что ничего не пропущу).

Я следил за руководством, расположенным по адресу: https://dockerlabs.collabnix.com/kubernetes/beginners/Install-and-configure-a-multi-master-Kubernetes-cluster-with-kubeadm.html с некоторыми вариациями - IP-адреса разные, а конфигурация для kubeadm.k8s.io/v1alpha3 не поддерживается текущим K8. Я обновился, чтобы использовать kubeadm.k8s.io/v1beta3, хотя два тега из исходной конфигурации не имеют параллелей (apiServerCertSANs и apiServerExtraArgs), и я не знаю, важны ли они. У меня версия Kubectl 1.24.0.

Мастера были инициализированы сообщением:

W0510 09:17:54.102466 8717 initconfiguration.go:306] ошибка распаковки схемы конфигурации. apiServerExtraArgs», неизвестное поле «apiserver-cert-extra-sans» [init] Использование версии Kubernetes: v1.24.0 [preflight] Запуск проверки перед полетом [preflight] Извлечение изображений, необходимых для настройки кластера Kubernetes [предварительная проверка] Это может занять минуту или две, в зависимости от скорости вашего интернет-соединения. [preflight] Вы также можете выполнить это действие заранее, используя «вытягивание образов конфигурации kubeadm» [certs] Использование папки certificateDir «/etc/kubernetes/pki» [certs] Создание сертификата и ключа «ca» [certs] Генерация сертификата и ключа "apiserver" [certs] apiserver, обслуживающий сертификат, подписан для DNS-имен [kubernetes kubernetes.default kubernetes.default.svc kubernetes.default.svc.cluster.local master1] и IP-адресов [10.96.0.1 10.50.0.50 10.50.0.10] [certs] Генерация сертификата и ключа «apiserver-kubelet-client» [certs] Генерация сертификата и ключа «front-proxy-ca» [certs] Генерация сертификата и ключа «front-proxy-client» [certs] Внешний режим etcd: пропуск создания центра сертификации etcd/ca [certs] Внешний режим etcd: пропуск генерации сертификата etcd/server [certs] Внешний режим etcd: пропуск генерации сертификатов etcd/peer [certs] Внешний режим etcd: пропуск создания сертификата etcd/healthcheck-client [certs] Внешний режим etcd: пропуск генерации сертификата apiserver-etcd-client [certs] Генерация ключа «sa» и открытого ключа [kubeconfig] Использование папки kubeconfig «/etc/kubernetes» [kubeconfig] Запись файла kubeconfig «admin.conf» [kubeconfig] Запись файла kubeconfig «kubelet.conf» [kubeconfig] Запись файла kubeconfig «controller-manager.conf» [kubeconfig] Запись файла kubeconfig «scheduler.conf» [kubelet-start] Запись файла среды kubelet с флагами в файл «/var/lib/kubelet/kubeadm-flags.env» [kubelet-start] Запись конфигурации kubelet в файл «/var/lib/kubelet/config.yaml» [kubelet-start] Запуск kubelet [control-plane] Использование папки манифеста «/etc/kubernetes/manifests» [control-plane] Создание статического манифеста пода для «kube-apiserver» [control-plane] Создание статического манифеста пода для «kube-controller-manager» [control-plane] Создание статического манифеста Pod для «kube-scheduler» [wait-control-plane] Ожидание загрузки kubelet плоскости управления в виде статических подов из каталога «/etc/kubernetes/manifests». Это может занять до 4 минут [apiclient] Все компоненты плоскости управления работоспособны через 6,521293 секунды. [upload-config] Хранение конфигурации, используемой в ConfigMap «kubeadm-config», в пространстве имен «kube-system». [kubelet] Создание ConfigMap «kubelet-config» в пространстве имен kube-system с конфигурацией для kubelets в кластере [upload-certs] Пропуск фазы. См. --upload-certs [mark-control-plane] Пометка узла master1 как уровня управления путем добавления меток: [node-role.kubernetes.io/control-plane node.kubernetes.io/exclude-from-external-load-balancers] [mark-control-plane] Пометка узла master1 как плоскости управления путем добавления пометок [node-role.kubernetes.io/master:NoSchedule node-role.kubernetes.io/control-plane:NoSchedule] [загрузочный токен] Использование токена: 1w1x1s.7qwcr1m1e5hj3yp3 [bootstrap-token] Настройка токенов начальной загрузки, информация о кластере ConfigMap, роли RBAC [bootstrap-token] Настроены правила RBAC, позволяющие токенам Node Bootstrap получать узлы [bootstrap-token] Настроены правила RBAC, позволяющие токенам Node Bootstrap публиковать CSR, чтобы узлы могли получать долгосрочные учетные данные сертификата. [bootstrap-token] Настроены правила RBAC, позволяющие контроллеру csrapprover автоматически утверждать CSR из токена начальной загрузки узла. [bootstrap-token] Настроены правила RBAC, чтобы разрешить ротацию сертификатов для всех клиентских сертификатов узлов в кластере. [bootstrap-token] Создание ConfigMap «cluster-info» в пространстве имен «kube-public» [kubelet-finalize] Обновление «/etc/kubernetes/kubelet.conf», чтобы указать на вращающийся сертификат и ключ клиента kubelet. [аддоны] Применяемый необходимый аддон: CoreDNS [аддоны] Применяемый необходимый аддон: kube-proxy

Ваша плоскость управления Kubernetes успешно инициализирована!

Но все три перечислены в узлах (по общему признанию, как NotReady, но я считаю, что это потому, что я не развернул что-то вроде Calico), и я дошел до того, что попытался добавить рабочие узлы. запуск предоставленной команды соединения сначала приводит к ошибке:

[preflight] Запуск проверки перед полетом [предварительная проверка] Чтение конфигурации из кластера... [preflight] FYI: вы можете посмотреть этот файл конфигурации с помощью «kubectl -n kube-system get cm kubeadm-config -o yaml» Предварительная проверка фазы выполнения ошибки: Не выполнено одно или несколько условий для размещения нового экземпляра плоскости управления.

[сбой загрузки сертификата для ЦС: не удалось загрузить файл сертификата /etc/kubernetes/pki/ca.crt: открыть /etc/kubernetes/pki/ca.crt: нет такого файла или каталога, ошибка загрузки ключа для учетной записи службы: не удалось загрузить файл закрытого ключа /etc/kubernetes/pki/sa.key: открыть /etc/kubernetes/pki/sa.key: нет такого > > файла или каталога, ошибка при загрузке сертификата для ЦС переднего прокси-сервера: не удалось t загрузить файл сертификата /etc/kubernetes/pki/front-proxy-ca.crt: открыть /etc/kubernetes/pki/front-proxy-ca.crt: такого файла или каталога нет]

Убедитесь, что:

  • Кластер имеет стабильный адрес controlPlaneEndpoint.
  • Предоставляются сертификаты, которые должны быть общими для экземпляров плоскости управления.

Чтобы увидеть трассировку стека этой ошибки, выполните с параметром --v=5 или выше.

Чтобы исправить это, я скопировал сертификаты с одного из мастеров на рабочий по адресу /etc/кубернетес/пки/ Затем я снова запустил соединение и получил следующую ошибку:

[preflight] Запуск проверки перед полетом [предварительная проверка] Чтение конфигурации из кластера... [preflight] FYI: вы можете посмотреть этот файл конфигурации с помощью «kubectl -n kube-system get cm kubeadm-config -o yaml» [preflight] Выполнение предварительных проверок перед инициализацией нового экземпляра плоскости управления Предварительная проверка фазы выполнения ошибки: [предварительная проверка] Произошли некоторые фатальные ошибки: [ОШИБКА ExternalEtcdClientCertificates]: /etc/etcd/ca.pem не существует [ОШИБКА ExternalEtcdClientCertificates]: /etc/etcd/kubernetes.pem не существует [ОШИБКА ExternalEtcdClientCertificates]: /etc/etcd/kubernetes-key.pem не существует [preflight] Если вы знаете, что делаете, вы можете сделать нефатальную проверку с помощью --ignore-preflight-errors=... Чтобы увидеть трассировку стека этой ошибки, выполните с параметром --v=5 или выше.

Снова скопировал сертификаты с мастера по адресу /и т.д./и т.д./ . Наконец, я получаю эту ошибку:

[preflight] Запуск проверки перед полетом [предварительная проверка] Чтение конфигурации из кластера... [preflight] FYI: вы можете посмотреть этот файл конфигурации с помощью «kubectl -n kube-system get cm kubeadm-config -o yaml» [preflight] Выполнение предварительных проверок перед инициализацией нового экземпляра плоскости управления [preflight] Извлечение изображений, необходимых для настройки кластера Kubernetes [предварительная проверка] Это может занять минуту или две, в зависимости от скорости вашего интернет-соединения. [preflight] Вы также можете выполнить это действие заранее, используя «вытягивание образов конфигурации kubeadm» [certs] Использование папки certificateDir «/etc/kubernetes/pki» [certs] Использование существующего сертификата и ключа «front-proxy-client» фаза выполнения ошибки control-plane-prepare/certs: ошибка при создании ресурсов PKI: не удалось записать или проверить сертификат «apiserver»: сертификат apiserver недействителен: x509: сертификат действителен для kubernetes, kubernetes.default, kubernetes.default.svc, kubernetes .default.svc.cluster.local, master2, а не worker1 Чтобы увидеть трассировку стека этой ошибки, выполните с параметром --v=5 или выше.

Если я копирую сертификаты с данного мастера, они отображаются как действительные для этого мастера (мастер2 выше). Как генерировать/использовать сертификаты для рабочего процесса, поскольку кажется, что они генерируются командой INIT, а не командой JOIN?

В качестве потенциального решения я рассмотрел внутреннее отключение SSL, как в этом сообщении https://stackoverflow.com/questions/60970744/how-to-run-kubernetes-без-ssl-сети но я не могу найти соответствующие разделы в моем YAML для внесения поправок. Я бы предпочел работать с SSL, если могу, но я открыт для того, чтобы отключить его, если это необходимо.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.