Один под в кластере Kubernetes аварийно завершает работу, а другой - нет - PullRequest
2 голосов
/ 09 июля 2020

Как ни странно, один под в кластере кубернетов вылетает, а другой нет!

codingjediweb-6d77f46b56-5mffg   0/1     CrashLoopBackOff   3          81s
codingjediweb-6d77f46b56-vcr8q   1/1     Running            0          81s

У них обоих должен быть одинаковый образ, и оба должны работать. В чем может быть причина?

Я подозреваю, что у сбойного модуля старый образ, но я не знаю почему. Это потому, что я исправил проблему и ожидал, что код будет работать (который находится на одном из модулей).

Возможно ли, что разные модули имеют разные изображения? Есть ли способ проверить, какой модуль и какой образ запускает? Есть ли способ "гриппа sh" старого изображения или принудительной загрузки K8S, даже если у него есть кеш?

ОБНОВЛЕНИЕ

После предложения Феймена я посмотрел на изображение. Я вижу, что для сбойного контейнера, похоже, используется существующий образ (который может быть старым). Как сделать так, чтобы K8S всегда вытягивал изображение?

manuchadha25@cloudshell:~ (copper-frame-262317)$ kubectl get pods
NAME                             READY   STATUS             RESTARTS   AGE
busybox                          1/1     Running            1          2d1h
codingjediweb-6d77f46b56-5mffg   0/1     CrashLoopBackOff   10         29m
codingjediweb-6d77f46b56-vcr8q   1/1     Running            0          29m
manuchadha25@cloudshell:~ (copper-frame-262317)$ kubectl describe pod codingjediweb-6d77f46b56-vcr8q | grep image
  Normal  Pulling    29m   kubelet, gke-codingjediweb-cluste-default-pool-69be8339-wtjt  Pulling image "docker.io/manuchadha25/codingjediweb:08072020v3"
  Normal  Pulled     29m   kubelet, gke-codingjediweb-cluste-default-pool-69be8339-wtjt  Successfully pulled image "docker.io/manuchadha25/codingjediweb:08072020v3"
manuchadha25@cloudshell:~ (copper-frame-262317)$ kubectl describe pod codingjediweb-6d77f46b56-5mffg | grep image
  Normal   Pulled     28m (x5 over 30m)    kubelet, gke-codingjediweb-cluste-default-pool-69be8339-p5hx  Container image "docker.io/manuchadha25/codingjediweb:08072020v3" already present on machine
manuchadha25@cloudshell:~ (copper-frame-262317)$

Кроме того, рабочий модуль имеет две записи для изображения (вытягивание и вытягивание). Где там двое?

1 Ответ

5 голосов
/ 09 июля 2020

Когда вы создаете развертывание, в фоновом режиме создается replicaSet. Каждый модуль этого набора реплик имеет одинаковые свойства (например, изображения, память).

Когда вы применяете какие-либо изменения путем обновления PodTemplateSpe c развертывания. Создается новый ReplicaSet, и контроллер развертывания управляет перемещением модулей из старого ReplicaSet в новый с контролируемой скоростью. На этом этапе вы можете найти разные поды из разных наборов реплик с разными свойствами.

Чтобы проверить изображение:

# get pod's yaml
$ kubectl get  pods -n <namespace> <pod-name> -o yaml

# get deployment's yaml
$ kubectl get deployments -n <namespace> <deployment-name> -o yaml

Установите imagePullPolicy на Always в yaml развертывания, чтобы использовать обновленное изображение путем принудительного вытягивания.

...