Как исправить ошибку NetworkUnavailable:True в узле Kubernetes
2 ответа
Чтобы получить дополнительную информацию о вашей проблеме, вы можете получить журналы из StackDriver-> Logging -> Loggs viewer, пользователь "Расширенный фильтр" и выполнить поиск по "Status NetworkUnavailable: True Message error" или "RouteController не удалось создать маршрут. "
Обычно это происходит, когда компонент K8s решает, что ваша сеть недоступна. Например,
- в ситце есть код, который переключает это «истина» или «ложь»
- в antrea, другом провайдере CNI, может произойти то же самое
ОБЫЧНО это означает, что ваш провайдер CNI «не готов».
Так почему же поставщик CNI может не установить NetworkUnavailable: false?
- На вашем узле, на котором работает CNI, отсутствует какая-либо сетевая технология, от которой зависит CNI (например, возможно, OVS (antreA) или BGP (calico) не работает в вашей версии Linux, или вы не установили эти драйверы на свой компьютер с Windows).
- Возможно, ваш поставщик CNI не может получить доступ к API-серверу Kubernetes для обновления метаданных условий узла. Это может быть ошибка, связанная с RBAC (вы увидите это в журналах поставщиков CNI)... https://github.com/projectcalico/calico/issues/7996 .
В любом случае вы можете попытаться запустить модуль вручную и проверить, работает ли «CNI, но на узле просто ложное состояние». В этом случае либо:
- контейнер не сможет «создать», потому что контейнеру не удалось получить IP-адрес от CNI или
- контейнер будет успешным, и в этом случае у вас есть ошибка метаданных в вашем кластере, то есть какой-то компонент неточно обновляет состояние узла.
В самом Kubernetes предстоит проделать работу по улучшению документации по этому «состоянию узла» и упрощению ее интерпретации в будущем (https://kubernetes.io/docs/concepts/architecture/nodes/#condition).