Полное руководство по проверке готовности Kubernetes: методы и примеры кода

Проверки готовности Kubernetes — важная функция для обеспечения доступности и надежности приложений, развернутых в кластере Kubernetes. В этой статье мы рассмотрим различные методы реализации проверок готовности, а также приведем примеры кода, которые помогут вам понять и использовать эту мощную возможность.

Метод 1: проверка готовности на основе HTTP
Одним из распространенных методов реализации проверки готовности является использование конечной точки HTTP. Kubernetes постоянно отправляет HTTP-запросы по указанному пути вашего приложения, ожидая успешного кода ответа (2xx или 3xx), чтобы считать приложение готовым. Вот пример определения проверки готовности на основе HTTP в YAML-файле развертывания Kubernetes:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 3
  template:
    spec:
      containers:
      - name: my-app-container
        image: my-app-image
        readinessProbe:
          httpGet:
            path: /health
            port: 8080
          initialDelaySeconds: 10
          periodSeconds: 5

Метод 2: проверки готовности на основе TCP
Проверки готовности на основе TCP позволяют Kubernetes проверять, открыт ли определенный порт в контейнере и принимает ли соединения. Этот метод полезен для приложений, которые не предоставляют конечную точку HTTP, но полагаются на сетевое подключение. Вот пример:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 3
  template:
    spec:
      containers:
      - name: my-app-container
        image: my-app-image
        readinessProbe:
          tcpSocket:
            port: 8080
          initialDelaySeconds: 10
          periodSeconds: 5

Метод 3: проверки готовности на основе команд
Проверки готовности на основе команд позволяют запускать команду внутри контейнера и считать приложение готовым на основании статуса завершения команды. Этот метод полезен, когда у вас есть собственная логика для определения готовности. Вот пример:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 3
  template:
    spec:
      containers:
      - name: my-app-container
        image: my-app-image
        readinessProbe:
          exec:
            command:
            - cat
            - /app/ready.txt
          initialDelaySeconds: 10
          periodSeconds: 5

Метод 4: пользовательские проверки готовности
Kubernetes также позволяет реализовать собственные проверки готовности, создав собственный обработчик проверок. Этот метод дает вам полный контроль над логикой проверки готовности. Вот пример использования Python:

from http.server import BaseHTTPRequestHandler, HTTPServer
class ReadinessHandler(BaseHTTPRequestHandler):
    def do_GET(self):
        self.send_response(200)
        self.end_headers()
        self.wfile.write(b"OK")
def start_readiness_server():
    server = HTTPServer(('0.0.0.0', 8080), ReadinessHandler)
    server.serve_forever()
start_readiness_server()

Проверки готовности Kubernetes имеют решающее значение для поддержания стабильности и доступности ваших приложений. В этой статье мы рассмотрели различные методы реализации проверок готовности, включая проверки на основе HTTP, TCP, командные и пользовательские проверки. Используя эти методы и понимая примеры их кода, вы можете быть уверены, что ваши приложения готовы обрабатывать трафик и обеспечивать удобство работы с пользователем.