Ошибка загрузки начального этапа инициализации kubeadm - PullRequest
0 голосов
/ 12 марта 2020

Я новичок в kubernetes и хочу настроить HA HA Kubernetes после успешного завершения примеров с мини-кубом и одним главным кластером kubernetes. Для этой цели я использую AWS EC2 экземпляры и AWS балансировщик нагрузки приложения. Я не хочу использовать KOPS или любой другой инструмент для установки. Я хочу получить руки с kubeadm. Я следовал ниже шагов

  1. Создал самозаверяющий сертификат ca.crt и ca.key для использования для kubernetes
  2. Установил этот сертификат как Root CA на моем экземпляре Ubuntu
  3. Скопировал эти ca.crt и ca.key в / etc / kubernetes / pki
  4. Создал новый сертификат для aws loadbalancer и подписал его вышеупомянутым ca.crt. С этим сертификатом создан Aws балансировщик нагрузки приложения
  5. Я также создал набор записей в AWS Route53 для сопоставления доменных имен. Я также убедился, что это сопоставление доменных имен работает. (т. е. master.k8son aws .com правильно разрешается в aws балансировщик нагрузки)
  6. Сейчас я использую kubeadm init

    kubeadm init --pod-network-cidr=192.168.0.0/20
    --service-cidr=192.168.16.0/20 --node-name=10.0.0.13  --control-plane-endpoint "master.k8sonaws.com:443"  --upload-certs --v=8 --apiserver-bind-port=443 --apiserver-cert-extra-sans=master.k8sonaws.com,i-0836dd4dc6609a924
    
  7. Эта команда успешно завершает этап загрузки и конфигурирования. Конечная точка проверки работоспособности возвращается успешно, но после этого ее ошибка на этапе загрузки-конфигурации

    configmaps запрещена: пользователь "system: anonymous" не может создать ресурс "configmaps" в группе API "" в пространстве имен " kube-system "

Здесь я не могу понять, почему kubeadm передает анонимного пользователя для вызова API. Как я могу решить эту проблему

Ответы [ 2 ]

2 голосов
/ 12 марта 2020

Сертификат в файле kubeconfig, используемый для создания ConfigMap, не имеет правильных групп. Я бы сказал, не создавайте CA и Cert для kubernetes самостоятельно. Просто используйте kubeadm init, и kubeadm будет обрабатывать генерацию ca и cert. После того, как ваш кластер kubernetes запущен и работает, вы можете использовать тот же ca для создания сертификата самостоятельно и использовать его в aws балансировщике нагрузки.

0 голосов
/ 13 марта 2020

Я нашел решение этой проблемы после того, как попробовал много разных вещей в течение 2 дней. Проблема в том, что aws балансировщик нагрузки не передает сертификат клиента бэкэнд-серверу при использовании прослушивателя https. И проблема в том, что Aws не задокументировал этот факт, или я не получил эти документы, если они там есть.

Способ решения этой проблемы - использование прослушивателя плоскости HTTP с использованием того же порта 443. Таким образом, SSL-терминация осуществляется резервным сервером. В моем случае это не угроза безопасности, так как и мой балансировщик нагрузки, и внутренние серверы являются внутренними и не подвержены общедоступным c ip.

...