Установка Kubernetes на Ubuntu - при перезагрузке было отказано в подключении к серверу

Я могу успешно установить Kubernetes на сервер Ubuntu 16 и перевести главный узел в состояние готовности. Но если я перезагружаюсь / перезагружаюсь, я получаю сообщение об ошибке в заголовке при попытке использовать KUBECTL,

Нужно ли вводить следующие команды, данные при запуске KUBEADM INIT в мой профиль, чтобы сохранить?

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

Я следовал рецепту в кулинарной книге О'Рейли Кубернетеса, а также использовал документы Google K8S и Serverfault.

Я могу успешно запустить все системные модули и успешно запустить и мастера, и одного работника. Но они не сохраняются после перезагрузки.

NAMESPACE     NAME                                 READY     STATUS    RESTARTS   AGE
kube-system   etcd-k8s-master                      1/1       Running   0          1m
kube-system   kube-apiserver-k8s-master            1/1       Running   0          2m
kube-system   kube-controller-manager-k8s-master   1/1       Running   0          2m
kube-system   kube-dns-86f4d74b45-phphd            3/3       Running   0          3m
kube-system   kube-proxy-25mtq                     1/1       Running   0          3m
kube-system   kube-scheduler-k8s-master            1/1       Running   0          2m
kube-system   weave-net-rfb6z                      2/2       Running   0          50s

NAME          STATUS     ROLES     AGE       VERSION
k8s-master    Ready      master    9m        v1.10.3
k8s-worker1   Ready     <none>     14s       v1.10.3

2 ответа

Я не проверял журналы. Ubuntu 16.04 регистрирует через systemd, поэтому, когда я не забываю проверить журналы через journalctl, сразу стало ясно, что Kubernetes жалуется, что своп включен. При первоначальной установке я отключил своп на каждом сервере - но я не изменил /etc/fstab, чтобы навсегда отключить своп.

Прежде всего проверьте, работает ли ваш кластер:

$ ps aux | grep apiserver
$ ps aux | grep etcd
$ docker ps

Вы должны увидеть все необходимые процессы kubernetes, работающие как kube-proxy, kube-apiserver, kube-controller-manager, kube-scheduler, etcd,

Если кластер готов, вы можете попробовать получить доступ kube-apiserver с помощью kubectl инструмент.

По умолчанию kubectl берет свою конфигурацию из файла $HOME/.kube/config

Поведение по умолчанию можно изменить, установив переменную среды KUBECONFIG,
kubectl прочитать все файлы конфигурации, перечисленные в этой переменной, и объединить их параметры конфигурации.
Таким образом, вы можете иметь конфигурацию для нескольких кластеров в отдельных файлах для удобства обслуживания.
В этом случае вы должны установить KUBECONFIG переменная в профиле пользователя, чтобы убедиться, что она имеет правильное значение после следующего входа в систему.

Другой способ использовать определенный файл конфигурации - установить --kubeconfig аргумент в командной строке

$ kubectl --kubeconfig config_file_path <other_command_line_arguments>

Вы можете проверить доступную конфигурацию (конфиденциальная информация будет подавлена), выполнив следующую команду:

# kubectl config view

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

$ kubectl config --kubeconfig=config-demo use-context exp-scratch <other_command_line_arguments>

Проверьте документацию для деталей.

Когда вы создаете кластер с помощью команды kubeadm init добавляет конфигурацию соединения для kubectl в файл /etc/kubernetes/admin.conf

-rw-------   1 root root 5446 May 1 11:11 admin.conf

Вы можете указать это как kubectl Конфигурационный файл напрямую, если вы используете учетную запись root.
Чтобы использовать его с другой учетной записью пользователя, необходимо скопировать его в $HOME/.kube/config файл и сделать его доступным для пользователя.

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

Достаточно сделать это только один раз для каждой учетной записи пользователя, которую вы планируете использовать для управления кластером. Это обычный файл, и он не исчезает после перезагрузки, поэтому вы все равно должны иметь доступ к работающему кластеру Kubernetes kubectl команда.

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

Другие вопросы по тегам