В мире оркестрации контейнеров Kubernetes стал ведущей платформой для управления контейнерными приложениями. Одной из ключевых особенностей Kubernetes является его способность выполнять проверки работоспособности контейнеров с помощью тестов работоспособности и готовности. Эти зонды помогают обеспечить доступность и оперативность контейнеров, работающих в кластере Kubernetes. В этой статье мы углубимся в то, как определяются значения по умолчанию для тестов работоспособности и готовности, а также рассмотрим различные методы их настройки.
Что такое проверки работоспособности.
Проверки работоспособности необходимы для обнаружения и перезапуска контейнеров, находящихся в сбойном или неработоспособном состоянии. По умолчанию проверки работоспособности в Kubernetes выполняют HTTP-запрос GET к указанной конечной точке внутри контейнера. Если проверка не удалась, контейнер считается неработоспособным, и Kubernetes предпринимает соответствующие действия, например перезапускает контейнер. Значения по умолчанию для тестов жизнеспособности:
Начальная задержка: 0 секунд
Период: 10 секунд
Тайм-аут: 1 секунда
Порог сбоя: 3 последовательных сбоя
Эти значения по умолчанию можно изменить в зависимости от конкретных требований вашего приложения.
Настройка датчиков активности.
Чтобы настроить значения по умолчанию для датчиков активности, вы можете определить датчик активности в спецификации модуля вашего приложения. Вот пример спецификации модуля с пользовательской проверкой активности:
apiVersion: v1
kind: Pod
metadata:
  name: my-app
spec:
  containers:
    - name: my-container
      image: my-image:latest
      livenessProbe:
        httpGet:
          path: /health
          port: 8080
        initialDelaySeconds: 5
        periodSeconds: 15
        timeoutSeconds: 3
        failureThreshold: 5
В приведенном выше примере проверка работоспособности настроена на выполнение HTTP-запроса GET к конечной точке «/health» контейнера, работающего на порту 8080. Проверка запускается через 5 секунд после запуска контейнера и повторяется каждый раз. 15 секунд. Если проверка занимает более 3 секунд или завершается неудачей 5 раз подряд, контейнер будет считаться неработоспособным.
Понятие о проверках готовности.
Проверки готовности используются для определения того, когда контейнер готов начать принимать трафик. По умолчанию проверки готовности в Kubernetes выполняют HTTP-запрос GET к указанной конечной точке внутри контейнера. Если проверка не удалась, контейнер не считается готовым, и Kubernetes перестанет отправлять в него трафик. Значения по умолчанию для тестов готовности такие же, как значения по умолчанию для тестов жизнеспособности.
Настройка проверок готовности.
Как и в случае с проверками работоспособности, вы можете настроить значения по умолчанию для проверок готовности, определив проверку готовности в спецификации модуля. Вот пример:
apiVersion: v1
kind: Pod
metadata:
  name: my-app
spec:
  containers:
    - name: my-container
      image: my-image:latest
      readinessProbe:
        httpGet:
          path: /ready
          port: 8080
        initialDelaySeconds: 10
        periodSeconds: 30
        timeoutSeconds: 5
        failureThreshold: 3
В приведенном выше примере проверка готовности настроена на выполнение HTTP-запроса GET к конечной точке контейнера «/ready», работающей на порту 8080. Проверка запускается через 10 секунд после запуска контейнера и повторяется каждый раз. 30 секунд. Если проверка занимает более 5 секунд или завершается неудачей 3 раза подряд, контейнер не будет считаться готовым.
Проверки работоспособности и готовности играют решающую роль в обеспечении доступности и оперативности контейнеров в кластере Kubernetes. Хотя Kubernetes предоставляет значения по умолчанию для этих зондов, он также позволяет вам настраивать их в соответствии с конкретными потребностями вашего приложения. Поняв, как определять и изменять эти значения по умолчанию, вы сможете точно настроить проверки работоспособности ваших контейнеров и обеспечить стабильное и надежное развертывание.