0

У меня есть кластер кубернетов, размещенный Google Cloud, на котором я запускаю 4 небольших службы. По какой-то причине некоторые из моих контейнеров просто разбились и не могут быть восстановлены из-за отсутствия доступных IP-адресов в сети. Почему это должно быть?Google Cloud/Kubernetes - Ошибка добавления контейнера в сеть, нет доступных IP-адресов

Глядя на мои квоты Google, у меня достаточно IP-адресов. Это произошло раньше, и единственный способ, которым я смог его решить, - уничтожить кластер и воссоздать его. Это странно, потому что службы работают нормально, а затем эта проблема возникает случайно.

Здесь ошибка:

Error syncing pod, skipping: failed to "SetupNetwork" for "myapp" with SetupNetworkError: "Failed to setup network for pod \"myapp(8ba3a1aa-8ed4-11e6-9d08-42010af0015a)\" using network plugins \"kubenet\": Error adding container to network: no IP addresses available in network: kubenet; Skipping pod"

Стручок, который не удался перезапущен в 70 раз, это может быть возможно, что IP-адрес не отпускается обратно в бассейн? Я не сетевой парень, так что простите мое невежество;)

ответ

2

Эта ошибка связана с частными IP-адресами, которыми управляет kubenet. Похоже, это может быть связано с Кубернетом Issue #34278.

Вы можете проверить, не является ли эта проблема, просмотрев файл /var/lib/cni/networks/kubenet/, чтобы узнать, содержит ли он IP-адреса, которые фактически не используются.

+0

Спасибо, это определенно похоже на проблему. Вы знаете, есть ли обходной путь? –

+0

Вы можете выполнить итерацию по каждому из этих файлов и подтвердить, что содержимое соответствует текущему запущенному контейнеру докеров. Если нет, удалите их. Изнутри каталога '/ var/lib/cni/networks/kubenet', что-то вроде:' for hash в $ (tail -n +1 * | grep '^ [A-Za-z0-9] * $' | cut -c 1-8); do, если [-z $ (docker ps -a | grep $ hash | awk '{print $ 1}')]; затем grep -ir $ hash ./; Fi; done', чтобы просмотреть все файлы, которые были пропущены. –

+0

Как только вы подтвердите, что список выглядит нормально, вы можете удалить эти файлы: 'для хеша в $ (tail -n +1 * | grep '^ [A-Za-z0-9] * $' | cut -c 1-8); do, если [-z $ (docker ps -a | grep $ hash | awk '{print $ 1}')]; затем grep -irl $ hash ./; Fi; сделано | xargs rm' –