Проверки готовности 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, командные и пользовательские проверки. Используя эти методы и понимая примеры их кода, вы можете быть уверены, что ваши приложения готовы обрабатывать трафик и обеспечивать удобство работы с пользователем.