K8 мастер-узел не удалось создать PodSandbox для пода

Вопрос или проблема

У меня есть кластер k8, который я настроил на обычной машине. У меня возникают проблемы с мастером ноды. Во-первых, в каталоге /etc/systemd/system не было kubelet.service и kubelet.service.d – я создал ссылки из /lib/systemd/system, и стало немного лучше. По крайней мере, kubelet работает на порту 6443 без сбоев, но это небезопасно, потому что сертификат, который создает kubeadm init, не является публичным:

curl –insecure https://10.0.23.87:6443
{
“kind”: “Status”,
“apiVersion”: “v1”,
“metadata”: {},
“status”: “Failure”,
“message”: “forbidden: User “system:anonymous” cannot get path “/””,
“reason”: “Forbidden”,
“details”: {},
“code”: 403
}

Но затем kubectl возвращает сбои с возвратом:

Nov 15 17:50:00 ip-10-0-23-87 kubelet[1032]: I1115 17:50:00.918250 1032 scope.go:117] “RemoveContainer” containerID=”48022387cb1c2e671733ef12decc0e581fd6654b38e80c726dc2c914d9d23390″
Nov 15 17:50:00 ip-10-0-23-87 kubelet[1032]: E1115 17:50:00.918451 1032 pod_workers.go:1301] “Ошибка синхронизации пода, пропуск” err=”не удалось “StartContainer” для “kube-flannel” с CrashLoopBackOff: “back-off 5m0s перезапуск неудавшегося контейнера=>
Nov 15 17:50:05 ip-10-0-23-87 kubelet[1032]: E1115 17:50:05.028937 1032 log.go:32] “Запуск PodSandbox из службы выполнения завершился неудачей” err=”rpc ошибка: код = Неизвестно описание = не удалось настроить сеть для песочницы “f7475b86099fccfacd614fcb781dde9caf4ac04cb9>
Nov 15 17:50:05 ip-10-0-23-87 kubelet[1032]: E1115 17:50:05.029017 1032 kuberuntime_sandbox.go:72] “Не удалось создать песочницу для пода” err=”rpc ошибка: код = Неизвестно описание = не удалось настроить сеть для песочницы “f7475b86099fccfacd614fcb781dde9caf4>
Nov 15 17:50:05 ip-10-0-23-87 kubelet[1032]: E1115 17:50:05.029049 1032 kuberuntime_manager.go:1170] “CreatePodSandbox для пода завершился неудачей” err=”rpc ошибка: код = Неизвестно описание = не удалось настроить сеть для песочницы “f7475b86099fccfacd614fcb781dde9caf>
Nov 15 17:50:05 ip-10-0-23-87 kubelet[1032]: E1115 17:50:05.029109 1032 pod_workers.go:1301] “Ошибка синхронизации пода, пропуск” err=”не удалось “CreatePodSandbox” для “coredns-7c65d6cfc9-5l67k_kube-system(c73362ad-a2f3-4e46-bfa9-a742a3d94f24)” wit>
Nov 15 17:50:06 ip-10-0-23-87 kubelet[1032]: I1115 17:50:06.917942 1032 scope.go:117] “RemoveContainer” containerID=”f6d7b4388986d0bc5895b158bb4ee976baf0c8d80b3a7ea7521d9c5288769f22″
Nov 15 17:50:06 ip-10-0-23-87 kubelet[1032]: E1115 17:50:06.918140 1032 pod_workers.go:1301] “Ошибка синхронизации пода, пропуск” err=”не удалось “StartContainer” для “kube-controller-manager” с CrashLoopBackOff: “back-off 5m0s перезапуск неудавшегося>
Nov 15 17:50:11 ip-10-0-23-87 kubelet[1032]: I1115 17:50:11.918298 1032 scope.go:117] “RemoveContainer” containerID=”48022387cb1c2e671733ef12decc0e581fd6654b38e80c726dc2c914d9d23390″
Nov 15 17:50:11 ip-10-0-23-87 kubelet[1032]: E1115 17:50:11.918516 1032 pod_workers.go:1301] “Ошибка синхронизации пода, пропуск” err=”не удалось “StartContainer” для “kube-flannel” с CrashLoopBackOff: “back-off 5m0s перезапуск неудавшегося контейнера=>
строки 1-23/23 (КОНЕЦ)

Что я заметил, так это то, что в Docker нет контейнеров:

ubuntu@ip-10-0-23-87:~$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

Кто-нибудь имеет идею, где копнуть?

Спасибо заранее!

Ответ или решение

Ситуация, описанная вами, указывает на несколько потенциальных проблем в вашем кластере Kubernetes, особенно на мастер-узле. Давайте разберем каждую из них и возможные пути их решения.

1. Ошибка доступа по сертификатам

Вы упомянули, что используете curl для подключения к серверу API на порту 6443 с флагом --insecure, и получаете ошибку 403 Forbidden. Это связано с тем, что вы использовали анонимный доступ, и Kubernetes запрещает его. Чтобы устранить эту проблему:

  • Убедитесь, что у вас есть необходимые сертификаты и конфигурации kubeconfig для доступа к API-серверу от имени пользователя.
  • Попробуйте использовать команду kubectl с правильным контекстом и учетными данными:
    kubectl get nodes --kubeconfig=/path/to/your/kubeconfig

2. Процесс kubelet

Проблемы с kubelet могут быть вызваны его неправильной настройкой:

  • Убедитесь, что файлы kubelet.service и kubelet.service.d созданы корректно. Ключевая точка здесь – наличие всех необходимых параметров в конфигурации.
  • Проверьте журналы kubelet на наличие дополнительных ошибок, которые могут указывать на неверные настройки или проблемы с сетью. Ваша команда journalctl -u kubelet -f может помочь обнаружить более конкретные ошибки.

3. Проблемы с сетью

Ошибка failed to setup network for sandbox указывает на проблемы с сетевыми настройками контейнеров. Это может быть связано с сетевым плагином (например, flannel):

  • Убедитесь, что сетевой плагин правильно установлен и настроен. Если вы используете flannel, выполните следующие действия:
    1. Убедитесь, что flannel установлен, и его Pods запускаются без ошибок.
    2. Проверьте конфигурацию flannel. В частности, обратите внимание на IP-адреса и CIDR. Если сеть конфликтует с существующими сетевыми настройками, это приведет к сбоям.

4. Проверка состояния контейнеров

Согласно вашей команде docker ps -a, на вашем узле нет запущенных контейнеров. Это может быть связано с тем, что kubelet не может запускать Pods, как вы и описали:

  • Убедитесь, что Docker правильно работает на вашем хосте. Попробуйте перезагрузить сервис Docker с помощью:
    sudo systemctl restart docker
  • Проверьте, что все зависимости установлены и правильно сконфигурированы. Для Kubernetes часто необходимы cgroup и другие системные настройки, которые могут влиять на производительность kubelet.

5. Обновление и совместимость

Программное обеспечение Kubernetes и Docker должно быть совместимым по версиям:

  • Убедитесь, что используемые версии Kubernetes и Docker совместимы. Иногда новые версии могут вносить изменения, которые приводят к несовместимости.

Заключение

Исходя из представленного, необходимо проверить настройки доступа через API, исправить конфигурацию kubelet, убедиться в работоспособности сетевого плагина и корректности работы Docker. Если все вышеперечисленные шаги не решают проблему, стоит рассмотреть возможность переустановки компонентов кластера, чтобы устранить потенциальные ошибки установки.

Оцените материал
Добавить комментарий

Капча загружается...