Назад | Перейти на главную страницу

API-сервер Kubernetes не запускается после перезагрузки

Каждый раз, когда я устанавливаю Kubernetes 1.15.3, он отлично работает, пока я не перезагружаю виртуальную машину, а затем она перестанет слушать порт 6443. Своп отключен. / etc / tab содержит только корневой том моей виртуальной машины сервера Ubuntu 18.04. Обратите внимание, используя фланель

cat /proc/swaps
Filename                                Type            Size    Used    Priority

kubectl возвращает только отказ

kubectl get nodes
The connection to the server <myip>:6443 was refused - did you specify the right host or port?

sudo netstat -tulpn

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       
PID/Program name
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      
770/systemd-resolve
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      
1694/sshd
tcp        0      0 127.0.0.1:36957         0.0.0.0:*               LISTEN      
1269/containerd
tcp        0      0 127.0.0.1:10248         0.0.0.0:*               LISTEN      
2720/kubelet
tcp        0      0 127.0.0.1:33385         0.0.0.0:*               LISTEN      
2720/kubelet
tcp6       0      0 :::22                   :::*                    LISTEN      
1694/sshd
tcp6       0      0 :::10250                :::*                    LISTEN      
2720/kubelet
udp        0      0 127.0.0.53:53           0.0.0.0:*                           
770/systemd-resolve

systemctl status kubelet

Oct 21 12:47:23 kubernetes1 kubelet[2720]: E1021 12:47:23.811807    2720 
reflector.go:125] k8s.io/client-go/informers/factory.go:133: Failed to list 
*v1beta1.RuntimeClass: Get https://<MYIP>:6443/apis/nodOct 21 
12:47:23 kubernetes1 kubelet[2720]: E1021 12:47:23.824760    2720 
kubelet.go:2248] node "kubernetes1" not found

ps -ef | grep kube

root      2720     1  0 12:32 ?        00:00:07 /usr/bin/kubelet -- 
bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf -- 
kubeconfig=/etc/kubernetes/kubelet.conf -- 
config=/var/lib/kubelet/config.yaml --cgroup-driver=cgroupfs --network- 
plugin=cni --pod-infra-container-image=k8s.gcr.io/pause:3.1 --resolv- 
conf=/run/systemd/resolve/resolv.conf

Использование фланели

sudo kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml 

Любые идеи? "Interweb" только говорит мне проверить своп, но я проверил его буквально 6 различными способами, и все указывает на то, что он выключен.

Мой файл конфигурации администратора, скопированный в .kube, показывает правильный сервер и правильный порт. API-сервер просто не работает. Кто-нибудь думает?

journalctl -xeu kubelet

Обратите внимание, kubernetes1 - это имя моего главного сервера.

Oct 22 02:28:59 kubernetes1 kubelet[2720]: E1022 02:28:59.521057    2720 kubelet.go:2248] node "kubernetes1" not found
Oct 22 02:28:59 kubernetes1 kubelet[2720]: E1022 02:28:59.610016    2720 reflector.go:125] k8s.io/kubernetes/pkg/kubelet/config/apiserver.go:47: Failed to list *v1.Pod: Get https://<myip>:6443/api/v1/podsOct 22 02:28:59 kubernetes1 kubelet[2720]: E1022 02:28:59.621170    2720 kubelet.go:2248] node "kubernetes1" not found
Oct 22 02:28:59 kubernetes1 kubelet[2720]: E1022 02:28:59.721293    2720 kubelet.go:2248] node "kubernetes1" not found
Oct 22 02:28:59 kubernetes1 kubelet[2720]: E1022 02:28:59.810053    2720 reflector.go:125] k8s.io/kubernetes/pkg/kubelet/kubelet.go:444: Failed to list *v1.Service: Get https://<myip>:6443/api/v1/servicesOct 22 02:28:59 kubernetes1 kubelet[2720]: E1022 02:28:59.823444    2720 kubelet.go:2248] node "kubernetes1" not found
Oct 22 02:28:59 kubernetes1 kubelet[2720]: E1022 02:28:59.923615    2720 kubelet.go:2248] node "kubernetes1" not found
Oct 22 02:29:00 kubernetes1 kubelet[2720]: E1022 02:29:00.010365    2720 reflector.go:125] k8s.io/kubernetes/pkg/kubelet/kubelet.go:453: Failed to list *v1.Node: Get https://<myip>:6443/api/v1/nodes?fieldOct 22 02:29:00 kubernetes1 kubelet[2720]: E1022 02:29:00.023809    2720 kubelet.go:2248] node "kubernetes1" not found
Oct 22 02:29:00 kubernetes1 kubelet[2720]: E1022 02:29:00.123954    2720 kubelet.go:2248] node "kubernetes1" not found
Oct 22 02:29:00 kubernetes1 kubelet[2720]: E1022 02:29:00.210384    2720 reflector.go:125] k8s.io/client-go/informers/factory.go:133: Failed to list *v1beta1.RuntimeClass: Get https://<myip>:6443/apis/nodOct 22 02:29:00 kubernetes1 kubelet[2720]: E1022 02:29:00.225717    2720 kubelet.go:2248] node "kubernetes1" not found
Oct 22 02:29:00 kubernetes1 kubelet[2720]: E1022 02:29:00.325890    2720 kubelet.go:2248] node "kubernetes1" not found
Oct 22 02:29:00 kubernetes1 kubelet[2720]: E1022 02:29:00.410429    2720 reflector.go:125] k8s.io/client-go/informers/factory.go:133: Failed to list *v1beta1.CSIDriver: Get https://<myip>:6443/apis/storagOct 22 02:29:00 kubernetes1 kubelet[2720]: E1022 02:29:00.425998    2720 kubelet.go:2248] node "kubernetes1" not found
Oct 22 02:29:00 kubernetes1 kubelet[2720]: E1022 02:29:00.526126    2720 kubelet.go:2248] node "kubernetes1" not found
Oct 22 02:29:00 kubernetes1 kubelet[2720]: E1022 02:29:00.610341    2720 reflector.go:125] k8s.io/kubernetes/pkg/kubelet/config/apiserver.go:47: Failed to list *v1.Pod: Get https://<myip>:6443/api/v1/podsOct 22 02:29:00 kubernetes1 kubelet[2720]: E1022 02:29:00.626218    2720 kubelet.go:2248] node "kubernetes1" not found

Из-за отсутствия подтверждения OP я публикую его как Community Wiki.

Ошибка типа:

Get registry-1.docker.io/v2: dial tcp: lookup registry-1.docker.io on [::1]:53: read udp [::1]:55820->[::1]:53: read: connection refused.

Означает, что виртуальная машина не может получить доступ к репозиторию Docker. Я обнаружил несколько похожих проблем, например этот.

Я опубликую несколько действий, которые могут помочь решить эту проблему:

1. Перезапустите докер и кубелет, используя:

$ service docker restart
$ systemctl restart kubelet

2. Добавьте сервер имен вручную

- SSH to the master
- sudo vi /etc/resolv.conf
- add "nameserver 8.8.8.8" and save this change.
- Eventually restart docker and kubelet

3. Переустановите докер или установите последнюю версию.

4. Использование докера за прокси

Если вы используете какой-либо прокси, отметьте этот руководство.

РЕДАКТИРОВАТЬ:

Основываясь на информации от OP, кажется, что проблема была вызвана Netplan это утилита для настройки сети в системе Linux. Он принудительно использовал другую конфигурацию сети, потому что Docker не мог извлекать образы.

После переустановки ОС и Kubernetes 1.15.5 проблема связана с DNS. Образы докеров не загружались, потому что сервер докеров не мог разрешиться после перезапуска.

Ранее я пытался изменить файл resolv.conf напрямую, как упоминалось выше, но Ubuntu хочет управлять файлом resolv.conf с помощью netplan. Внесение изменений вручную и перезагрузка выглядит так, как будто это приводит к игнорированию этих изменений.

Если я изменяю netplan yaml и запускаю netplan apply, он помещает 127.0.0.53 в resolv.conf и запускает локальный прокси-сервер DNS, который затем правильно перенаправляет на настроенный мною DNS-сервер bind9. Я ожидаю увидеть свои DNS-серверы в resolv.conf, и это вызвало проблему.

Не изменяйте файл resolv.conf непосредственно в Ubuntu. Используйте netplan.