Когда берутся счетчики перезапуска подов с помощью kubectl describe?

Вопрос или проблема

Когда учитываются количества перезапусков в microk8s kubectl describe pod -n <pod_name>? Я вижу количество перезапусков в результатах по адресу: Containers.App-Name.Restart Count

Например, посмотрите на эти результаты:

### microk8s kubectl describe pod -n kube-system hostpath-provisioner-566686b959-pmtw5
Name:         hostpath-provisioner-566686b959-pmtw5
Namespace:    kube-system
Priority:     0
Node:         ipc/192.168.1.101
Start Time:   Wed, 03 Aug 2022 10:10:26 +0000
Labels:       k8s-app=hostpath-provisioner
              pod-template-hash=566686b959
Annotations:  cni.projectcalico.org/podIP: 10.1.206.150/32
              cni.projectcalico.org/podIPs: 10.1.206.150/32
Status:       Running
IP:           10.1.206.150
IPs:
  IP:           10.1.206.150
Controlled By:  ReplicaSet/hostpath-provisioner-566686b959
Containers:
  hostpath-provisioner:
    Container ID:   containerd://f32ed83a49dc15cc4f92c4fb03685b75117436e42345364d29e0a908633cd1c7
    Image:          cdkbot/hostpath-provisioner:1.1.0
    Image ID:       docker.io/cdkbot/hostpath-provisioner@sha256:317ed1b7324dc5f20db5dfdc0647a26a1ac44df426e9caad9cfdd6ba84c47697
    Port:           <none>
    Host Port:      <none>
    State:          Running
      Started:      Wed, 06 Nov 2024 19:54:08 +0000
    Last State:     Terminated
      Reason:       Unknown
      Exit Code:    255
      Started:      Wed, 02 Oct 2024 22:40:48 +0000
      Finished:     Wed, 06 Nov 2024 19:53:09 +0000
    Ready:          True
    Restart Count:  68
    Environment:
      NODE_NAME:   (v1:spec.nodeName)
      PV_DIR:     /var/snap/microk8s/common/default-storage
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-d2s6c (ro)
      /var/snap/microk8s/common/default-storage from pv-volume (rw)
Conditions:
  Type              Status
  Initialized       True 
  Ready             True 
  ContainersReady   True 
  PodScheduled      True 
Volumes:
  pv-volume:
    Type:          HostPath (bare host directory volume)
    Path:          /var/snap/microk8s/common/default-storage
    HostPathType:  
  kube-api-access-d2s6c:
    Type:                    Projected (a volume that contains injected data from multiple sources)
    TokenExpirationSeconds:  3607
    ConfigMapName:           kube-root-ca.crt
    ConfigMapOptional:       <nil>
    DownwardAPI:             true
QoS Class:                   BestEffort
Node-Selectors:              <none>
Tolerations:                 node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                             node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:                      <none>

Но когда учитываются перезапуски? Я не вижу этого ответа в документации kubectl describe pod здесь.

Ответ или решение

Когда вы используете команду microk8s kubectl describe pod -n <pod_name> для получения информации о конкретном поде в Kubernetes, вы можете увидеть информацию о количестве перезапусков контейнеров, представленных в строке, например, Restart Count: 68. В этом контексте возникает вопрос: откуда берется это количество перезапусков и какой период оно охватывает?

Подход к подсчету перезапусков

Суть перезапусков: Количество перезапусков контейнера указывает на то, сколько раз контейнер был остановлен и перезапущен с момента его создания. Этот счет начинается с момента создания контейнера в ответ на развертывание или обновление, и он учитывает только те перезапуски, которые произошли в состоянии Терминал (Terminated) и Рабочий (Running).

Когда перезапуски фиксируются?

Перезапуски фиксируются при каждом выходе контейнера из состояния "Работающий". Это может произойти по следующим причинам:

  1. Системные ошибки: Если контейнер завершает свою работу из-за неустранимой ошибки или сбоя (например, ошибка приложений).
  2. Состояние подготовки (Readiness Probes): Проверки готовности могут означать, что контейнер не отвечает на запросы, и Kubernetes решает перезапустить его.
  3. Временные лимиты: Контейнер может быть завершен, если превышает заданные временные лимиты на выполнение, такие как terminationGracePeriodSeconds.

Как COUNT фиксируется?

Счетчик перезапусков при каждом выходе или ненормальном завершении контейнера увеличивается на единицу. Например, если контейнер завершился из-за сбоя 10 раз, то Restart Count будет равен 10, даже если на момент запроса он находится в состоянии "Работающий".

Как это отображается в выводе команды describe?

При использовании команды kubectl describe pod вы получаете детализированную информацию о состоянии пода, включая:

  • Состояние: В текущем состоянии Running, а также информацию о последнем состоянии, когда контейнер завершил свою работу.
  • Перезапуски: Строка Restart Count показывает общее количество перезапусков, что дает представление о надежности и устойчивости контейнера.

Заключение

Таким образом, количество перезапусков контейнера отражает его состояние с момента запуска и учитывает все неудачные попытки выполнения. Для более глубокого анализа причин сбоев и перезапусков рекомендуется использовать логирование и мониторинг контейнеров, такие как Prometheus или Grafana, а также встроенные механизмы логирования Kubernetes.

Понимание того, когда и как происходит подсчет перезапусков контейнера, является важным аспектом управления и оптимизации приложений в среде Kubernetes.

Оцените материал
Добавить комментарий

Капча загружается...