ืฉื“ืจื•ื’ ืืฉื›ื•ืœ Kubernetes ืœืœื ื”ืฉื‘ืชื”

ืฉื“ืจื•ื’ ืืฉื›ื•ืœ Kubernetes ืœืœื ื”ืฉื‘ืชื”

ืชื”ืœื™ืš ื”ืฉื“ืจื•ื’ ืขื‘ื•ืจ ืืฉื›ื•ืœ Kubernetes ืฉืœืš

ื‘ืฉืœื‘ ืžืกื•ื™ื, ื‘ืขืช ืฉื™ืžื•ืฉ ื‘ืืฉื›ื•ืœ Kubernetes, ื™ืฉ ืฆื•ืจืš ืœืขื“ื›ืŸ ืฆืžืชื™ื ืคื•ืขืœื™ื. ื–ื” ืขืฉื•ื™ ืœื›ืœื•ืœ ืขื“ื›ื•ื ื™ ื—ื‘ื™ืœื”, ืขื“ื›ื•ื ื™ ืœื™ื‘ื” ืื• ืคืจื™ืกื” ืฉืœ ืชืžื•ื ื•ืช ื—ื“ืฉื•ืช ืฉืœ ืžื—ืฉื‘ ื•ื™ืจื˜ื•ืืœื™. ื‘ื˜ืจืžื™ื ื•ืœื•ื’ื™ื” ืฉืœ Kubernetes ืงื•ืจืื™ื ืœื–ื” "ื”ืคืจืขื” ืžืจืฆื•ืŸ".

ืคื•ืกื˜ ื–ื” ื”ื•ื ื—ืœืง ืžืกื“ืจื” ื‘ืช 4 ืคื•ืกื˜ื™ื:

  1. ื”ืคื•ืกื˜ ื”ื–ื”.
  2. ื›ื™ื‘ื•ื™ ื ื›ื•ืŸ ืฉืœ ืชืจืžื™ืœื™ื ื‘ืืฉื›ื•ืœ Kubernetes
  3. ืกื™ื•ื ืžื•ืฉื”ื” ืฉืœ ืคื•ื“ ื›ืืฉืจ ื”ื•ื ื ืžื—ืง
  4. ื›ื™ืฆื“ ืœื”ื™ืžื ืข ืžื–ืžืŸ ื”ืฉื‘ืชื” ื‘ืืฉื›ื•ืœ Kubernetes ื‘ืืžืฆืขื•ืช PodDisruptionBudgets

(ื›. ืฆืคื• ืœืชืจื’ื•ืžื™ื ืฉืœ ืฉืืจ ื”ืžืืžืจื™ื ื‘ืกื“ืจื” ื‘ื–ืžืŸ ื”ืงืจื•ื‘)

ื‘ืžืืžืจ ื–ื” ื ืชืืจ ืืช ื›ืœ ื”ื›ืœื™ื ืฉ-Kubernetes ืžืกืคืงืช ื›ื“ื™ ืœื”ืฉื™ื’ ืืคืก ื–ืžืŸ ื”ืฉื‘ืชื” ืขื‘ื•ืจ ื”ืฆืžืชื™ื ื”ืคื•ืขืœื™ื ื‘ืืฉื›ื•ืœ ืฉืœืš.

ื”ื’ื“ืจืช ื”ื‘ืขื™ื”

ื ื ืงื•ื˜ ื‘ื’ื™ืฉื” ื ืื™ื‘ื™ืช ื‘ื”ืชื—ืœื”, ื ื–ื”ื” ื‘ืขื™ื•ืช ื•ื ืขืจื™ืš ืืช ื”ืกื™ื›ื•ื ื™ื ื”ืคื•ื˜ื ืฆื™ืืœื™ื™ื ืฉืœ ื’ื™ืฉื” ื–ื•, ื•ื ื‘ื ื” ื™ื“ืข ืœืคืชืจื•ืŸ ื›ืœ ืื—ืช ืžื”ื‘ืขื™ื•ืช ืฉืื ื• ื ืชืงืœื™ื ื‘ื”ืŸ ืœืื•ืจืš ื”ืžื—ื–ื•ืจ. ื”ืชื•ืฆืื” ื”ื™ื ืชืฆื•ืจื” ื”ืžืฉืชืžืฉืช ื‘ื•ื•ื™ ืžื—ื–ื•ืจ ื—ื™ื™ื, ื‘ื“ื™ืงื•ืช ืžื•ื›ื ื•ืช ื•ืชืงืฆื™ื‘ื™ ืฉื™ื‘ื•ืฉื™ื ื‘-Pod ื›ื“ื™ ืœื”ืฉื™ื’ ืืช ื™ืขื“ ืืคืก ื–ืžืŸ ื”ื”ืฉื‘ืชื” ืฉืœื ื•.

ื›ื“ื™ ืœื”ืชื—ื™ืœ ืืช ื”ืžืกืข ืฉืœื ื•, ื ื™ืงื— ื“ื•ื’ืžื” ืงื•ื ืงืจื˜ื™ืช. ื ื ื™ื— ืฉื™ืฉ ืœื ื• ืืฉื›ื•ืœ Kubernetes ืฉืœ ืฉื ื™ ืฆืžืชื™ื, ืฉื‘ื• ืืคืœื™ืงืฆื™ื” ืคื•ืขืœืช ืขื ืฉื ื™ ืคื•ื“ื™ื ื”ืžืžื•ืงืžื™ื ืžืื—ื•ืจ. Service:

ืฉื“ืจื•ื’ ืืฉื›ื•ืœ Kubernetes ืœืœื ื”ืฉื‘ืชื”

ื ืชื—ื™ืœ ืขื ืฉื ื™ ืคื•ื“ื™ื ืขื Nginx ื•-Service ืฉืคื•ืขืœื™ื ื‘ืฉื ื™ ืฆืžืชื™ ื”ืืฉื›ื•ืœ ืฉืœื ื• ืฉืœ Kubernetes.

ืื ื• ืจื•ืฆื™ื ืœืขื“ื›ืŸ ืืช ื’ืจืกืช ื”ืœื™ื‘ื” ืฉืœ ืฉื ื™ ืฆืžืชื™ ืขื‘ื•ื“ื” ื‘ืืฉื›ื•ืœ ืฉืœื ื•. ืื™ืš ืื ื—ื ื• ืขื•ืฉื™ื ืืช ื–ื”? ืคืชืจื•ืŸ ืคืฉื•ื˜ ื™ื”ื™ื” ืœืืชื—ืœ ืฆืžืชื™ื ื—ื“ืฉื™ื ืขื ื”ืชืฆื•ืจื” ื”ืžืขื•ื“ื›ื ืช ื•ืœืื—ืจ ืžื›ืŸ ืœื›ื‘ื•ืช ืืช ื”ืฆืžืชื™ื ื”ื™ืฉื ื™ื ืชื•ืš ื›ื“ื™ ื”ืคืขืœืช ื”ืฆืžืชื™ื ื”ื—ื“ืฉื™ื. ืœืžืจื•ืช ืฉื–ื” ื™ืขื‘ื•ื“, ื™ื”ื™ื• ื›ืžื” ื‘ืขื™ื•ืช ื‘ื’ื™ืฉื” ื–ื•:

  • ื›ืืฉืจ ืืชื” ืžื›ื‘ื” ืฆืžืชื™ื ื™ืฉื ื™ื, ื’ื ื”ืคื•ื“ื™ื ื”ืคื•ืขืœื™ื ืขืœื™ื”ื ื™ื›ื•ื‘ื•. ืžื” ืื ืฆืจื™ืš ืœืคื ื•ืช ืืช ื”ืชืจืžื™ืœื™ื ืœื›ื™ื‘ื•ื™ ื—ื™ื ื ื™? ื™ื™ืชื›ืŸ ืฉืžืขืจื›ืช ื”ื•ื•ื™ืจื˜ื•ืืœื™ื–ืฆื™ื” ืฉื‘ื” ืืชื” ืžืฉืชืžืฉ ืœื ืชื—ื›ื” ืœืกื™ื•ื ืชื”ืœื™ืš ื”ื ื™ืงื•ื™.
  • ืžื” ืื ืชื›ื‘ื” ืืช ื›ืœ ื”ืฆืžืชื™ื ื‘ื• ื–ืžื ื™ืช? ืชืงื‘ืœ ื–ืžืŸ ื”ืฉื‘ืชื” ื”ื’ื•ืŸ ื‘ื–ืžืŸ ืฉื”ืคื•ื“ื™ื ืขื•ื‘ืจื™ื ืœืฆืžืชื™ื ื—ื“ืฉื™ื.

ืื ื• ื–ืงื•ืงื™ื ืœื“ืจืš ืœื”ืขื‘ืจื” ื‘ื—ืŸ ืฉืœ ืชืจืžื™ืœื™ื ืžืฆืžืชื™ื ื™ืฉื ื™ื ืชื•ืš ื”ื‘ื˜ื—ื” ืฉืืฃ ืื—ื“ ืžืชื”ืœื™ื›ื™ ื”ืขื‘ื•ื“ื” ืฉืœื ื• ืื™ื ื• ืคื•ืขืœ ื‘ื–ืžืŸ ืฉืื ื• ืžื‘ืฆืขื™ื ืฉื™ื ื•ื™ื™ื ื‘ืฆื•ืžืช. ืื• ื›ืฉืื ื—ื ื• ืขื•ืฉื™ื ื”ื—ืœืคื” ืžืœืื” ืฉืœ ื”ืืฉื›ื•ืœ, ื›ืžื• ื‘ื“ื•ื’ืžื” (ื›ืœื•ืžืจ, ืื ื—ื ื• ืžื—ืœื™ืคื™ื ืชืžื•ื ื•ืช VM), ืื ื—ื ื• ืจื•ืฆื™ื ืœื”ืขื‘ื™ืจ ืืคืœื™ืงืฆื™ื•ืช ืคื•ืขืœื•ืช ืžืฆืžืชื™ื ื™ืฉื ื™ื ืœื—ื“ืฉื™ื. ื‘ืฉื ื™ ื”ืžืงืจื™ื, ืื ื• ืจื•ืฆื™ื ืœืžื ื•ืข ืžืชืจืžื™ืœื™ื ื—ื“ืฉื™ื ืœืชื–ืžืŸ ืขืœ ืฆืžืชื™ื ื™ืฉื ื™ื, ื•ืœืื—ืจ ืžื›ืŸ ืœื’ืจืฉ ืžื”ื ืืช ื›ืœ ื”ืคื•ื“ื™ื ื”ืคื•ืขืœื™ื. ื›ื“ื™ ืœื”ืฉื™ื’ ืžื˜ืจื•ืช ืืœื• ื ื•ื›ืœ ืœื”ืฉืชืžืฉ ื‘ืคืงื•ื“ื” kubectl drain.

ื”ืคืฆื” ืžื—ื“ืฉ ืฉืœ ื›ืœ ื”ืชืจืžื™ืœื™ื ืžืฆื•ืžืช

ืคืขื•ืœืช ื”ื ื™ืงื•ื– ืžืืคืฉืจืช ืœืš ืœื”ืคื™ืฅ ืžื—ื“ืฉ ืืช ื›ืœ ื”ืชืจืžื™ืœื™ื ืžืฆื•ืžืช. ื‘ืžื”ืœืš ื‘ื™ืฆื•ืข ื ื™ืงื•ื–, ื”ืฆื•ืžืช ืžืกื•ืžืŸ ื›ื‘ืœืชื™ ื ื™ืชืŸ ืœืชื–ืžื•ืŸ (ื“ื’ืœ NoSchedule). ื–ื” ืžื•ื ืข ืžืœื”ื•ืคื™ืข ื‘ื• ืชืจืžื™ืœื™ื ื—ื“ืฉื™ื. ื•ืื– ื”ื ื™ืงื•ื– ืžืชื—ื™ืœ ืœื’ืจืฉ ืชืจืžื™ืœื™ื ืžื”ืฆื•ืžืช, ืžื›ื‘ื” ืืช ื”ืžื™ื›ืœื™ื ืฉืคื•ืขืœื™ื ื›ืขืช ืขืœ ื”ืฆื•ืžืช, ืฉื•ืœื— ืื•ืช TERM ืžื™ื›ืœื™ื ื‘ืชืจืžื™ืœ.

ืœืžืจื•ืช kubectl drain ื™ืขืฉื” ืขื‘ื•ื“ื” ืžืฆื•ื™ื ืช ื‘ืคื™ื ื•ื™ ืชืจืžื™ืœื™ื, ื™ืฉื ื ืฉื ื™ ื’ื•ืจืžื™ื ื ื•ืกืคื™ื ืฉืขืœื•ืœื™ื ืœื’ืจื•ื ืœื›ืฉืœ ื‘ืคืขื•ืœืช ื”ื ื™ืงื•ื–:

  • ื”ื‘ืงืฉื” ืฉืœืš ื—ื™ื™ื‘ืช ืœื”ื™ื•ืช ืžืกื•ื’ืœืช ืœื”ืกืชื™ื™ื ื‘ื—ืŸ ืขื ื”ื’ืฉืชื” TERM ืื•ึนืช. ื›ืืฉืจ ืชืจืžื™ืœื™ื ืžืคื•ื ื™ื, Kubernetes ืฉื•ืœื— ืื•ืช TERM ืžื›ื•ืœื•ืช ื•ืžื—ื›ื” ืœืขืฆื™ืจืชืŸ ืœืžืฉืš ืคืจืง ื–ืžืŸ ืžื•ื’ื“ืจ, ื•ืœืื—ืจ ืžื›ืŸ, ืื ื”ืŸ ืœื ืขืฆืจื•, ื”ื™ื ืžืคืกื™ืงื” ืื•ืชืŸ ื‘ื›ื•ื—. ื‘ื›ืœ ืžืงืจื”, ืื ื”ืงื•ื ื˜ื™ื™ื ืจ ืฉืœืš ืœื ืชื•ืคืก ืืช ื”ืื•ืช ื‘ืฆื•ืจื” ื ื›ื•ื ื”, ืืชื” ืขื“ื™ื™ืŸ ื™ื›ื•ืœ ืœื›ื‘ื•ืช ืคื•ื“ื™ื ื‘ืฆื•ืจื” ืฉื’ื•ื™ื” ืื ื”ื ืคื•ืขืœื™ื ื›ืขืช (ืœื“ื•ื’ืžื”, ืžืชื‘ืฆืขืช ืขืกืงืช ืžืกื“ ื ืชื•ื ื™ื).
  • ืืชื” ืžืื‘ื“ ืืช ื›ืœ ื”ืชืจืžื™ืœื™ื ื”ืžื›ื™ืœื™ื ืืช ื”ื™ื™ืฉื•ื ืฉืœืš. ื™ื™ืชื›ืŸ ืฉื”ื•ื ืœื ื–ืžื™ืŸ ื›ืืฉืจ ืงื•ื ื˜ื™ื™ื ืจื™ื ื—ื“ืฉื™ื ื™ื•ืฉืงื• ื‘ืฆืžืชื™ื ื—ื“ืฉื™ื, ืื• ืื ื”ืคื•ื“ื™ื ืฉืœืš ื ืคืจืกื™ื ืœืœื ื‘ืงืจื™ื, ื™ื™ืชื›ืŸ ืฉื”ื ืœื ื™ื•ืคืขืœื• ืžื—ื“ืฉ ื›ืœืœ.

ื”ื™ืžื ืขื•ืช ืžื–ืžืŸ ื”ืฉื‘ืชื”

ื›ื“ื™ ืœืžื–ืขืจ ื–ืžืŸ ื”ืฉื‘ืชื” ื›ืชื•ืฆืื” ืžื”ืคืจืขื” ืžืจืฆื•ืŸ, ื›ื’ื•ืŸ ืžืคืขื•ืœืช ื ื™ืงื•ื– ื‘ืฆื•ืžืช, Kubernetes ืžืกืคืงืช ืืช ื”ืืคืฉืจื•ื™ื•ืช ื”ื‘ืื•ืช ืœื˜ื™ืคื•ืœ ื‘ื›ืฉืœื™ื:

ื‘ืฉืืจ ื”ืกื“ืจื”, ื ืฉืชืžืฉ ื‘ืชื›ื•ื ื•ืช Kubernetes ืืœื” ื›ื“ื™ ืœื”ืคื—ื™ืช ืืช ื”ื”ืฉืคืขื” ืฉืœ ื”ืขื‘ืจืช ืชืจืžื™ืœื™ื. ื›ื“ื™ ืœื”ืงืœ ืขืœ ื‘ื™ืฆื•ืข ื”ืจืขื™ื•ืŸ ื”ืžืจื›ื–ื™, ื ืฉืชืžืฉ ื‘ื“ื•ื’ืžื” ืฉืœื ื• ืœืžืขืœื” ืขื ืชืฆื•ืจืช ื”ืžืฉืื‘ ื”ื‘ืื”:

---
apiVersion: apps/v1
kind: Deployment
metadata:
 name: nginx-deployment
 labels:
   app: nginx
spec:
 replicas: 2
 selector:
   matchLabels:
     app: nginx
 template:
   metadata:
     labels:
       app: nginx
   spec:
     containers:
     - name: nginx
       image: nginx:1.15
       ports:
       - containerPort: 80
---
kind: Service
apiVersion: v1
metadata:
 name: nginx-service
spec:
 selector:
   app: nginx
 ports:
 - protocol: TCP
   targetPort: 80
   port: 80

ืชืฆื•ืจื” ื–ื• ื”ื™ื ื“ื•ื’ืžื” ืžื™ื ื™ืžืœื™ืช Deployment, ื”ืžื ื”ืœืช nginx pods ื‘ืืฉื›ื•ืœ. ื‘ื ื•ืกืฃ, ื”ืชืฆื•ืจื” ืžืชืืจืช โ€‹โ€‹ืืช ื”ืžืฉืื‘ Service, ืฉื‘ื• ื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื›ื“ื™ ืœื’ืฉืช ืœืชืจืžื™ nginx ื‘ืืฉื›ื•ืœ.

ืœืื•ืจืš ื”ืžื—ื–ื•ืจ, ื ืจื—ื™ื‘ ื‘ืื•ืคืŸ ืื™ื˜ืจื˜ื™ื‘ื™ ืืช ื”ืชืฆื•ืจื” ื”ื–ื• ื›ืš ืฉื”ื™ื ืชื›ืœื•ืœ ื‘ืกื•ืคื• ืฉืœ ื“ื‘ืจ ืืช ื›ืœ ื”ื™ื›ื•ืœื•ืช ืฉืžืกืคืงืช Kubernetes ืœื”ืคื—ืชืช ื–ืžืŸ ื”ื”ืฉื‘ืชื”.

ืœื’ืจืกื” ืžื™ื•ืฉืžืช ื•ื‘ื“ื•ืงื” ื‘ืžืœื•ืื” ืฉืœ ืขื“ื›ื•ื ื™ ืืฉื›ื•ืœ Kubernetes ืœืืคืก ื–ืžืŸ ื”ืฉื‘ืชื” ื‘-AWS ื•ืžืขื‘ืจ ืœื›ืš, ื‘ืงืจ ื‘ื›ืชื•ื‘ืช Gruntwork.io.

ืงืจื ื’ื ืžืืžืจื™ื ืื—ืจื™ื ื‘ื‘ืœื•ื’ ืฉืœื ื•:

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”