kubectl соединяется с удаленным кластером с нуля - PullRequest
0 голосов
/ 12 мая 2018

Я создал локальный кластер Kubernetes, используя ansible .Все работает, но сейчас я пытаюсь подключить мой kubectl к кластеру (в виртуальных машинах).

Мой кластер работает на https://IP:6443

Сначала я получил:

$ kubectl get pods
The connection to the server localhost:8080 was refused - did you specify the right host or port?

Итак, я попытался это решение :

kubectl config set-credentials kubeuser/IP --username=kubeuser --password=kubepassword
kubectl config set-cluster IP --insecure-skip-tls-verify=true --server=https://IP:6443
kubectl config set-context default/IP/kubeuser --user=kubeuser/IP --namespace=default --cluster=IP
kubectl config use-context default/IP/kubeuser

и попробовал еще раз:

$ kubectl get pods
Error from server (Forbidden): pods is forbidden: User "system:anonymous" cannot list pods in the namespace "default"

Я понимаю, что мне нужно создать кластеризацию, но я все еще продолжаюдля этого нужна первоначальная "админ-собственность"?Какой шаг я пропускаю или делаю неправильно, чтобы я мог получить доступ к своему кластеру с помощью kubectl и получить свои модули?

1 Ответ

0 голосов
/ 14 мая 2018

Kubectl - это инструмент командной строки для удаленного управления кластером Kubernetes.

Kubectl использует файл конфигурации, который необходимо подключить к кластеру. Вполне возможно, что ваш конфигурационный файл несовместим из-за большого количества серьезных или незначительных изменений. Если дальнейший анализ проблем не дает хороших результатов, попробуйте выполнить команду rm -f ~ / .kube / config и запустить ее с нуля.

Как я вижу, вы подозреваете, что проблема связана с самозаверяющими сертификатами. Может потребоваться обновление корневого центра сертификации (ЦС) кластера на клиентах, а затем обновление локального списка для действующих сертификатов.

Перейдите в локальный каталог CA, проверьте, существует ли файл ca.crt, затем скопируйте его на клиенты. Для клиентов выполните следующие операции:

sudo cp ca.crt /usr/local/share/ca-certificates/kubernetes.crt
sudo update-ca-certificates

Я согласен с предложением Мэтью Л. Даниэля:

cluster: тег принимает имя файла сертификата CA или «встроенную» base-ed версию PEM вы можете увидеть с помощью:

kubectl config set-cluster $foo --certificate-authority=... --embed-certs=true

или вы можете обмануть и использовать --insecure-skip-tls-verify=true для переключения от проверки CA для тестирования вещей

Если у вас нет сертификата, сгенерированного во время установки Kubernetes, я предлагаю начать с Документация Kubernetes TLS . Вы можете взглянуть на облачных провайдеров Kubernetes, таких как GKE или AKS - они дают возможность создавать конфигурационный файл Kubernetes удаленно со всеми включенными сертификатами, а затем загружать его в локальный каталог ~ / .kube. Возможно, это решит некоторые проблемы с конфигурацией, если вы примете ее для локальной установки. Это работает как шарм и экономит много времени. Если вы все еще не решили, укажите здесь kubectl config view, чтобы мы могли помочь вам с вашей проблемой. (Пожалуйста, удалите конфиденциальные данные из него перед публикацией здесь.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...