Поскольку состояние этого кластера, как именно он был развернут, а также выходные сообщения kubectl
, kubelet
неизвестны, я попытаюсь дать некоторые шаги по устранению неполадок и обстоятельства, которые могут привести к решению некоторых из проблемы, которые встречаются здесь.
- Kubeadm
- Фланель
- Kubelet
- Репродукция
- Дополнительные ссылки
Kubeadm
Первым делом идет процесс подготовки кластера Kubernetes с kubeadm
:
Проверьте все требования и шаги с официальной документацией:
При вызове команды $ kubeadm init
обязательно добавьте такие параметры, как:
--apiserver-advertise-address=IP_ADDRESS_OF_MASTER_NODE
--pod-network-cidr=POD_NETWORK_CIDR_WITH_ACCORDANCE_TO_CNI
Предоставление кластера без параметра --pod-network-cidr
может привести к проблемам, связанным с CNI.
Для Flannel по умолчанию сетевой модуль pod равен 10.244.0.0/16
.
После kubeadm init
вам необходимо применить один из множества CNI (например, фланелевой или ситцевый), поскольку инструмент kubeadm
не делает это автоматически.
Проверьте, все ли узлы находятся в Ready
состоянии с помощью команды:
$ kubectl get nodes -o wide
Вывод этой команды должен выглядеть следующим образом:
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
k1 Ready master 69m v1.17.3 10.156.0.29 <none> Ubuntu 18.04.4 LTS 5.0.0-1031-gcp docker://19.3.7
k2 Ready <none> 65m v1.17.3 10.156.0.30 <none> Ubuntu 18.04.4 LTS 5.0.0-1031-gcp docker://19.3.7
k3 Ready <none> 63m v1.17.3 10.156.0.35 <none> Ubuntu 18.04.4 LTS 5.0.0-1031-gcp docker://19.3.7
Дополнительно вы можете $ kubectl describe node NAME_OF_THE_NODE
, чтобы получить более подробную информацию о каждом из узлов.
Фланель
Существует официальная документация по устранению неполадок, связанных с фланелью: Github.com: фланелевое устранение неполадок
Сообщение, полученное от kubelet
:
Предупреждение FailedCreatePodSandBox 34m kubelet, slave-узел Не удалось создать изолированную программную среду pod: rp c ошибка: code = Unknown des c = не удалось настроить контейнер изолированной программной среды "26cdaf3170806455a4731218d20c482b85e683 p532632532632532632632432632432432632432432432432432432432432432432432432432432432441 "label-demo": networkPlugin cni не удалось настроить модуль "label-demo_default" сеть: open /run/flannel/subnet.env: нет такого файла или каталога
Сообщает, что отсутствует файл subnet.env
на узле, который должен был запланировать модуль sandbox
.
Кроме того, проверьте, правильно ли работают фланелевые модули. Вы можете проверить это с помощью:
$ kubectl get pods -A
$ kubectl get pods -n kube-system
Кроме того, вы можете проверить журналы этих модулей, выполнив команду: $ kubectl logs NAME_OF_FLANNEL_CONTAINER
Kubelet
Вы можете проверить kubelet
журналы (по системному адресу) с помощью:
$ systemctl status kubelet
$ journalctl -u kubelet
Воспроизведение
Мне удалось воспроизвести ошибку, с которой вы столкнулись, и это происходило, когда:
--pod-network-cidr=CIDR
не использовалось с $ kubeadm init
- Фланельный CNI был применен после
$ kubeadm init
без --pod-network-cidr
Дополнительные ссылки:
Существует статья, посвященная устранению неполадок в сети: Kubernetes.feisky.xyz: Сеть .
Пожалуйста, дайте мне знать, если у вас есть другие вопросы