Kubernetes: чем отличаются Pod, Deployment и Service
Три базовых объекта Kubernetes простыми словами, с манифестами и командами kubectl для проверки.
Pod
Минимальная единица запуска — один или несколько контейнеров с общей сетью и хранилищем. Pod смертен: при падении узла он не воскреснет сам.
bash
kubectl run test --image=nginx --restart=Never
kubectl get pods -o wide
kubectl describe pod testDeployment
Описывает желаемое состояние: сколько реплик, какой образ, как обновлять. Контроллер следит, чтобы реальность соответствовала описанию.
yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: web
spec:
replicas: 3
selector:
matchLabels: { app: web }
template:
metadata:
labels: { app: web }
spec:
containers:
- name: web
image: nginx:1.27bash
kubectl apply -f web.yaml
kubectl rollout status deployment/web
kubectl set image deployment/web web=nginx:1.28
kubectl rollout undo deployment/webService
Стабильный адрес и балансировка между Pod'ами с нужными метками.
| Тип | Назначение |
|---|---|
| ClusterIP | доступ внутри кластера |
| NodePort | порт на каждом узле |
| LoadBalancer | внешний балансировщик облака |
bash
kubectl expose deployment web --port=80 --type=ClusterIP
kubectl get svcПравило запоминания: Pod — процесс, Deployment — менеджер процессов, Service — телефонный номер, по которому их можно найти.
kuberneteskubectl