Naprawienie Kubernetes ImagePullbackoff

Naprawienie Kubernetes ImagePullbackoff

Jeśli pracujesz z Kubernetes od dłuższego czasu, prawdopodobnie napotkałeś stan ImagePulbackoff. Jeśli nie znasz tego problemu, może to być frustrujące. Więc w tym artykule poprowadzisz Cię przez podstawy tego problemu, jak go rozwiązywać, jakie są typowe powody i gdzie zacząć, jeśli się z tym spotkasz.

Jaki jest błąd ImagePullbackoff?

Problem ImagePullbackoff jest spowodowany przez kontener Kubernetes Contener Mime nie jest w stanie pobrać obrazu z publicznego lub prywatnego rejestru kontenera. Kubernetes będzie ciągle ciągnąć obraz z rosnącym opóźnieniem wycofania, na co wskazuje komponent wsteczny. Z każdą próbą Kubernetes zwiększy opóźnienie, dopóki nie spełni pięciominutowego ograniczenia.

Może wydawać się szerokim stwierdzeniem, aby sugerować, że kontener wykonawczy (czy to Docker, Container, czy coś innego) nie odzyskuje obrazu z rejestru, ale spójrzmy na różne przyczyny, które można znaleźć w następnej sekcji.

Poprzednie sekcje przejdą różne powody, dla których kapsuł. Dowiesz się również, jak rozwiązywać problemy i rozwiązać ten przerażający błąd.

Co powoduje wystąpienie błędu ImagePullbackoff?

Oto niektóre z powodów, dla których kapsułka może utknąć w stanie ImagePullbackoff:

  • Obrazek niedostępny
  • Nazwa lub znacznik obrazu jest nieprawidłowy.
  • Używane jest prywatne obraz i istnieje problem z uwierzytelnianiem.
  • Istnieje trudność z siecią.
  • Nazwa rejestru jest niedokładna.
  • Limity stawki dla rejestrów kontenerowych
  • POD nie ma dostępu do obrazu, ponieważ brakuje mu niezbędnych poświadczeń.
  • Ograniczenia stawek rejestru

Jak rozwiązywać problemy z ImagePullbackoff?

Spójrzmy na kilka prawdopodobnych przyczyn wymienionych na liście Bulleted.

1. Obraz kontenera nie jest dostępny lub używana nazwa
Problem jest zwykle generowany, jeśli istnieje literówka lub fakt, że obraz pchnięty do rejestru kontenerów jest nie powiódony, ale masz na myśli obraz, którego nie ma. Spróbujmy odtworzyć to, tworząc kapsułkę z fikcyjną nazwą obrazu. Osiąga to następujące polecenie.

$ kubectl uruchom newApp --image = my_image/my_image: najnowszy

Jak widać, kapsułka jest tworzona.

Jeśli spróbujemy uzyskać szczegółowe informacje na temat komendy GET POD, jak widać poniżej.

$ Kubectl get Pod

Tutaj pokazano, że obraz nie ma i nie jesteśmy w stanie go wyciągnąć.

Możesz skorzystać z polecenia Kubectl Opisz w celu odkrycia podstawowej przyczyny i znalezienia więcej informacji na temat tego problemu. Ponieważ polecenie daje wiele wyjściowych, po prostu wyświetlimy sekcje, które są istotne dla naszej dyskusji. Prawdziwy komunikat o błędzie jest widoczny w następującym wyjściu w ramach zdarzeń w kolumnie wiadomości:

$ Kubectl Opisz Pod newapp

Niektóre sekcje wytworzonego wyniku są następujące po wykonaniu polecenia opisu.

2. Tag nie istnieje
Możliwe, że tagi obrazu, które próbujesz uzyskać, zostały wycofane lub że wpisałeś błędną nazwę znacznika. W niektórych okolicznościach twój kapsuł. Aby odtworzyć ten problem, celowo używaliśmy błędnej nazwy znacznika, opracuj zamiast najnowszych.

$ kubectl uruchom apptwo --Mage = nginx: Lates

Powyższe polecenie utworzyło podany kapsuł.

Następnie otrzymujemy szczegóły POD za pomocą polecenia GET POD.

$ kubectl get Pod

W rezultacie pobiera obraz.

Teraz ponownie używamy polecenia opisu, aby zrozumieć przyczynę tego statusu.

$ kubectl Opisz pod apptwo

W tej sekcji zdarzeń możesz zobaczyć przyczynę błędu ImagePullbackoff.

Powód jest tutaj wyraźnie pokazany dla lepszego zrozumienia.

3. Niewłaściwe poświadczenia i prywatny rejestr obrazu

Tutaj staramy się odtworzyć problem i do tego zjedliśmy zawracanie kapsuły, która próbuje wyciągnąć obraz z prywatnego rejestru.

$ kubectl uruchom appthree --Mage = Docker.io/hiyou/nameoFimage

Powyższe polecenie podaje następujący wynik.

Następnie wykonaliśmy polecenie opisu.

Opisane polecenie pokazuje ogólne szczegóły kapsułki, a także wspomina o przyczynach błędu ImagePullbackoff.

Nie dodaliśmy sekretu do Kubernetes ani nie zawarliśmy odniesienia do niego w definicji POD. Kapsuła ponownie utknie w stanie ImagePullbackoff, a powiadomienie weryfikuje, że dostęp do rejestru zostanie odrzucony:

Możesz utworzyć sekret z poleceniem Kubectl poniżej, aby naprawić ten błąd. Komenda Kubectl jest używana, aby stworzyć sekret rejestru Docker (prywatny).

4. Limity stawki rejestru

Jeśli zweryfikujesz niektóre z swoich poświadczeń, takie jak URL Registry, Szczegóły i nazwa znacznika, możesz uzyskać ImagePullbackoff z powodu ograniczeń szybkości rejestru. Możesz teraz ciągnąć tylko 100 pojemników co sześć godzin na Docker Hub. Jeśli podasz szczegóły logowania, wzrośnie to do 200 przyciągania co sześć godzin. W żywej klastrze z licznymi często rozmieszczonymi kapsułami można szybko osiągnąć ten limit.

Będziesz musiał poczekać, aż czapka zostanie osiągnięta po określonym limicie czasu. Kubernetes powinien teraz być w stanie z powodzeniem wyciągnąć obraz i uruchomić kapsuły.

Zastanów się nad użyciem rejestru w klastrze wraz z proxy, aby buforować swoje odpowiednie obrazy. Może to pomóc pozostać w ograniczeniach stawek, zmniejszając liczbę razy na serwerach Dockera.

Wniosek

Gdy węzeł nie wyciągnie obrazu, Kubernetes Pods Wejdź do stanu ImagePulbackoff. Kubelet będzie próbował regularnie ciągnąć, więc tymczasowe problemy nie wymagają żadnej ręcznej interwencji. W tym artykule omówiono ImagePullbackoff i trzy potencjalne źródła problemu. Chociaż może istnieć kilka przyczyn, odczyt komunikatu o błędzie może szybko ujawnić prawdziwą przyczynę problemu. Jeśli zbadasz i postępujesz zgodnie z powyższymi procedurami, rozwiązanie tego problemu powinno być proste.