Рейтинг:1

Как добавить пользовательские SSL-сертификаты в кластер Kubernetes

флаг de

У меня есть кластер Kubernetes с 2 главными и 3 рабочими узлами, также у меня есть отдельный Хапрокси сервер с общедоступный IP-адрес.

По умолчанию kubeadm генерирует все сертификаты, необходимые для кластера, и сохраняет сертификаты в /etc/kubernetes/pki.

Согласно документации, мы можем поместить один или несколько пользовательских сертификатов и соответствующих ключей в /etc/kubernetes/pki и выполнить инициализация кубеадм Команда для создания остальных сертификатов. https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-certs/

Поскольку мой кластер уже запущен и работает, команда инициализации завершится ошибкой предварительной проверки.

Поэтому я выполнил следующие шаги для создания сертификатов и конфигураций Kubernetes.

компакт-диск /etc/kubernetes/pki/
sudo rm ca.key ca.crt

sudo openssl genrsa -out ca.key 2048
sudo openssl req -x509 -new -nodes -key ca.key -subj "/CN=My Local CA" -days 10000 -out ca.crt

фаза инициализации sudo kubeadm сертифицирует все --control-plane-endpoint "haproxy_IP:6443"

компакт-диск /etc/kubernetes/
sudo rm admin.conf контроллер-менеджер.conf kubelet.conf scheduler.conf

фаза инициализации sudo kubeadm kubeconfig all --control-plane-endpoint "haproxy_IP:6443"

sudo rm $HOME/.kube/config
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

Теперь я получаю ошибки ниже

kubectl получить узлы

Ошибка с сервера (InternalError): ошибка на сервере ("") помешала успешному выполнению запроса.

openssl s_client -connect haproxy_IP:6443

ПОДКЛЮЧЕН(00000005)
написать: errno = 0
---
нет доступного однорангового сертификата
---
Имена ЦС сертификата клиента не отправлены
---
Рукопожатие SSL прочитало 0 байт и записало 315 байт
Проверка: ОК
---
Новый, (НЕТ), Шифр ​​(НЕТ)
Безопасное повторное согласование НЕ поддерживается
Сжатие: НЕТ
Расширение: НЕТ
ALPN не согласован
Предварительные данные не были отправлены
Подтвердите код возврата: 0 (хорошо)

kubectl получить узлы --v=7

09:41:50.597844 31816 request.go:943] Получен ответ Retry-After 1s для попытки 8 на https://haproxy_IP:6443/api?timeout=32s
09:41:51.598061 31816 round_trippers.go:422] ПОЛУЧИТЬ https://haproxy_IP:6443/api?timeout=32s
09:41:51.598112 31816 round_trippers.go:429] Заголовки запроса:
09:41:51.598219 31816 round_trippers.go:433] Принять: application/json, */*
09:41:51.598504 31816 round_trippers.go:433] Агент пользователя: kubectl/v1.20.4 (linux/amd64) kubernetes/e87da0b
09:41:51.602249 31816 round_trippers.go:448] Статус ответа: через 3 миллисекунды
09:41:51.602301 31816 request.go:943] Получен ответ Retry-After 1s для попытки 9 на https://haproxy_IP:6443/api?timeout=32s
09:41:52.602523 31816 round_trippers.go:422] ПОЛУЧИТЬ https://haproxy_IP:6443/api?timeout=32s
09:41:52.602558 31816 round_trippers.go:429] Заголовки запроса:
09:41:52.602572 31816 round_trippers.go:433] Агент пользователя: kubectl/v1.20.4 (linux/amd64) kubernetes/e87da0b
09:41:52.602585 31816 round_trippers.go:433] Принять: application/json, */*
09:41:52.605922 31816 round_trippers.go:448] Статус ответа: через 3 миллисекунды
09:41:52.605980 31816 request.go:943] Получен ответ Retry-After 1s для попытки 10 на https://haproxy_IP:6443/api?timeout=32s
09:41:53.606187 31816 round_trippers.go:422] ПОЛУЧИТЬ https://haproxy_IP:6443/api?timeout=32s
09:41:53.610028 31816 round_trippers.go:429] Заголовки запроса:
09:41:53.610048 31816 round_trippers.go:433] Принять: application/json, */*
09:41:53.610059 31816 round_trippers.go:433] Агент пользователя: kubectl/v1.20.4 (linux/amd64) kubernetes/e87da0b
09:41:53.612676 31816 round_trippers.go:448] Статус ответа: через 2 миллисекунды
09:41:53.612837 31816 cached_discovery.go:121] пропущено кэширование информации об обнаружении из-за ошибки на сервере (""), что предотвратило выполнение запроса
09:41:53.613146 31816 helpers.go:216] объект ответа сервера: [{
  "метаданные": {},
  "статус": "Отказ",
  "message": "ошибка на сервере (\"\") помешала успешному выполнению запроса",
  "причина": "Внутренняя ошибка",
  "подробности": {
    "причины": [
      {
        "причина": "Неожиданный ответ сервера"
      }
    ],
    "повторить после секунды": 1
  },
  "код": 500
}]
F0413 09:41:53.613294 31816 helpers.go:115] Ошибка сервера (InternalError): ошибка на сервере ("") помешала успешному выполнению запроса

Если я перезагрузить новый сертификат и файлы конфигурации с моими предыдущими сертификатами и файлами конфигурации, затем все работает отлично без каких-либо проблем.

Поэтому я подозреваю, что что-то упустил в своем подходе.

Высоко ценим идеи или подобный опыт, связанный с этой проблемой.

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

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