Kubernetes utknął na tworzeniu kontenerów

99

Kapsuła w moim klastrze Kubernetes utknęła w „ContainerCreating” po uruchomieniu tworzenia. Jak wyświetlić dzienniki dla tej operacji, aby zdiagnozować przyczynę zablokowania? kubectl logswydaje się nie działać, ponieważ kontener musi być w stanie nieoczekiwanym.

four43
źródło
kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/… to dokumentacja możliwych faz. Niestety nie obejmuje ContainerCreating...
Xiong Chiamiov

Odpowiedzi:

125

kubectl describe podswyświetli listę wszystkich zdarzeń związanych z kapsułą, w tym wyciąganie obrazów, uruchamianie pojemników. To może być pomocne.

Sreekanth Pothanis
źródło
5
co jeśli pojemnik utknie w ContainerCreating bez żadnych zdarzeń? dla mnie wydarzenia są wyświetlane jako „Brak wydarzeń”.
Bob
1
Wydaje się, że niektóre wydarzenia mogą trochę potrwać. Na przykład przekroczenie limitu czasu próby zamontowania dysku dla mnie zajmuje około 2 minut, zanim pojawi się jako zdarzenie.
jwadsack
8
Dzieje się tak, gdy używasz sekretów i nie można ich znaleźć (jak literówka w yaml lub zapomniałeś go wcześniej utworzyć). W przypadku prawie wszystkich innych możliwych błędów pojawia się stan CrashLoopback lub Error, ale w przypadku sekretów po prostu utknie w narzędziu ContainerCreating, jeśli opisujesz kapsułę, na końcu zobaczysz komunikat informujący, że sekret nie został znaleziony, ale ledwo mówi nic o tym problemie.
Danius
Tak, zwykle nie masz żadnych wydarzeń, zanim on zacznie coś robić.
erikbwork
Zdarzyło mi się dziś rano i była to literówka na ścieżce hosta dla woluminu. Lepsza klawiatura.
Joe Block
4

W moim przypadku dostęp dokera do Internetu został zablokowany. Zostało to rozwiązane za pomocą proxy ( za pomocą komentarza sandylss ):

  1. minikube stop
  2. minikube delete
  3. export http_proxy=http://user:pass@ip:port
  4. export https_proxy=http://user:pass@ip:port
  5. export no_proxy=192.168.99.0/24
  6. minikube start --logtostderr --v=0 --bootstrapper=localkube --vm-driver hyperv 
      --hyperv-virtual-switch "Primary Virtual Switch" --docker-env HTTP_PROXY=$http_proxy \
      --docker-env HTTPS_PROXY=$https_proxy --docker-env NO_PROXY=$no_proxy
    
  7. export no_proxy=$no_proxy,$(minikube ip)
  8. export NO_PROXY=$no_proxy,$(minikube ip)

Następnie, aby sprawdzić, czy doker ma dostęp do Internetu, uruchom:

$ docker pull tutum/hello-world

w klastrze (połącz się z klastrem za pomocą minikube ssh); zatrzymaj proces, jeśli rozpocznie się pobieranie.

Moim drugim problemem było wolne połączenie z Internetem. Ponieważ wymagane zdjęć dokowane są rzędu 100MB, oba pojemniki dokowane i Kubernetes strąki pozostał \pausei ContainerCreatingstwierdza, przez 30 minut.

Aby sprawdzić, czy doker pobiera obrazy, uruchom:

$ ls -l /var/lib/docker/tmp

w klastrze, który pokazuje pobierane pliki obrazu tymczasowego, w przeciwnym razie puste.

Jeśli rozwijasz się w minikube i korzystasz z VPN, doker może korzystać z VPN przez skrzypek . Oznacza to, że doker będzie podłączony do ip: portu skrzypka, a skrzypek zostanie podłączony do sieci VPN. W przeciwnym razie VPN nie będzie współdzielony między hostem a maszyną wirtualną minikube.

użytkownik477273
źródło
Ten błąd mnie dzisiaj ugryzł. Nadal nie jestem pewien, co go spowodowało. W jednej chwili wszystko działało dobrze, a w następnej kolejności problem pojawił się. Dziękuję za poprawkę. To zadziałało dla mnie.
Jim
0

Raz go trafiłem, ponieważ moje deklaracje zasobów były przypadkowo bardzo małe.

zasoby: limity: procesor: 1000m pamięć: 1024M żądania: procesor: 1000m pamięć: 1024M

vs

zasoby: limity: procesor: 1000m pamięć: 1024m żądania: procesor: 1000m pamięć: 1024m

kapitalizacja tego m robi bardzo dużą różnicę w wykorzystaniu zasobów. Utknąłem na ContainerCreating, ponieważ nie dałem wystarczająco dużo pamięci do mojego kontenera.

Luis Felipe Moura Pereira De S
źródło