10 ื˜ืขื•ื™ื•ืช ื ืคื•ืฆื•ืช ื‘ืฉื™ืžื•ืฉ ื‘-Kubernetes

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

10 ื˜ืขื•ื™ื•ืช ื ืคื•ืฆื•ืช ื‘ืฉื™ืžื•ืฉ ื‘-Kubernetes

ื‘ืžื”ืœืš ืฉื ื•ืช ื”ืฉื™ืžื•ืฉ ื‘-Kubernetes, ืขื‘ื“ื ื• ืขื ืžืกืคืจ ืจื‘ ืฉืœ ืืฉื›ื•ืœื•ืช (ื”ืŸ ืžื ื•ื”ืœื™ื ื•ื”ืŸ ืœื ืžื ื•ื”ืœื™ื - ื‘-GCP, AWS ื•-Azure). ืขื ื”ื–ืžืŸ ื”ืชื—ืœื ื• ืœืฉื™ื ืœื‘ ืฉื›ืžื” ื˜ืขื•ื™ื•ืช ื—ื•ื–ืจื•ืช ืขืœ ืขืฆืžืŸ ื›ืœ ื”ื–ืžืŸ. ืื•ืœื, ืื™ืŸ ื‘ื›ืš ื‘ื•ืฉื”: ืืช ืจื•ื‘ื ืขืฉื™ื ื• ื‘ืขืฆืžื ื•!

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

1. ืžืฉืื‘ื™ื: ื‘ืงืฉื•ืช ื•ืžื’ื‘ืœื•ืช

ืคืจื™ื˜ ื–ื” ื‘ื”ื—ืœื˜ ืจืื•ื™ ืœืชืฉื•ืžืช ื”ืœื‘ ื”ืงืจื•ื‘ื” ื‘ื™ื•ืชืจ ื•ืœืžืงื•ื ื”ืจืืฉื•ืŸ ื‘ืจืฉื™ืžื”.

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

BestEffort (ืžึฐืื•ึนื“ ืœื ืžื•ึผืžืœึธืฅ):

resources: {}

ื‘ืงืฉืช ืžืขื‘ื“ ื ืžื•ื›ื” ื‘ืžื™ื•ื—ื“ (ืžืื•ื“ ืœื ืžื•ึผืžืœึธืฅ):

   resources:
      Requests:
        cpu: "1m"

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

ืžื‘ื—ืจ ืžื•ื’ื–ื (ื”ืชื—ื™ื™ื‘ื•ืช ื™ืชืจ) ื‘ืขื™ื•ืช ื–ื™ื›ืจื•ืŸ ื™ื›ื•ืœื•ืช ืœื”ื•ื‘ื™ืœ ืœื‘ืขื™ื•ืช ื’ื“ื•ืœื•ืช ื™ื•ืชืจ. ื”ื’ืขื” ืœืžื’ื‘ืœืช ื”-CPU ื›ืจื•ื›ื” ื‘ื“ื™ืœื•ื’ ืขืœ ืžื—ื–ื•ืจื™ ืฉืขื•ืŸ, ื‘ืขื•ื“ ืฉื”ื’ืขื” ืœืžื’ื‘ืœืช ื”ื–ื™ื›ืจื•ืŸ ื›ืจื•ื›ื” ื‘ื”ืจื™ื’ืช ื”ืคื•ื“. ื”ืื ืื™ ืคืขื ื”ืชื‘ื•ื ื ืช OOMkill? ื›ืŸ, ืขืœ ื–ื” ื‘ื“ื™ื•ืง ืื ื—ื ื• ืžื“ื‘ืจื™ื.

ื”ืื ืืชื” ืจื•ืฆื” ืœืžื–ืขืจ ืืช ื”ืกื‘ื™ืจื•ืช ืฉื–ื” ื™ืงืจื”? ืืœ ืชืงืฆื” ื™ืชืจ ืขืœ ื”ืžื™ื“ื” ื–ื™ื›ืจื•ืŸ ื•ื”ืฉืชืžืฉ ื‘-Guaranteed QoS (ืื™ื›ื•ืช ืฉื™ืจื•ืช) ืขืœ ื™ื“ื™ ื”ื’ื“ืจืช ื‘ืงืฉืช ื”ื–ื™ื›ืจื•ืŸ ืœืžื’ื‘ืœื” (ื›ืžื• ื‘ื“ื•ื’ืžื” ืœืžื˜ื”). ืงืจื ืขื•ื“ ืขืœ ื–ื” ื‘ ืžืฆื’ื•ืช ื”ื ื™ื ื’ ื’'ื™ื™ืงื•ื‘ืก (ืžื”ื ื“ืก ืจืืฉื™ ื‘ื–ืœื ื“ื•).

ืžืชืคืจืฅ (ืกื™ื›ื•ื™ ื’ื‘ื•ื” ื™ื•ืชืจ ืœื”ื™ื”ืจื’ OOM):

   resources:
      requests:
        memory: "128Mi"
        cpu: "500m"
      limits:
        memory: "256Mi"
        cpu: 2

ืžื•ื‘ื˜ื—:

   resources:
      requests:
        memory: "128Mi"
        cpu: 2
      limits:
        memory: "128Mi"
        cpu: 2

ืžื” ืขืฉื•ื™ ืœืขื–ื•ืจ ื‘ืขืช ื”ื’ื“ืจืช ืžืฉืื‘ื™ื?

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

kubectl top pods
kubectl top pods --containers
kubectl top nodes

ืขื ื–ืืช, ื”ื ืžืฆื™ื’ื™ื ืจืง ืฉื™ืžื•ืฉ ื ื•ื›ื—ื™. ื–ื” ื™ื›ื•ืœ ืœืชืช ืœืš ืžื•ืฉื’ ื’ืก ืขืœ ืกื“ืจ ื”ื’ื•ื“ืœ, ืื‘ืœ ื‘ืกื•ืคื• ืฉืœ ื“ื‘ืจ ืชืฆื˜ืจืš ื”ื™ืกื˜ื•ืจื™ื” ืฉืœ ืฉื™ื ื•ื™ื™ื ื‘ืžื“ื“ื™ื ืœืื•ืจืš ื–ืžืŸ (ื›ื“ื™ ืœืขื ื•ืช ืขืœ ืฉืืœื•ืช ื›ืžื•: "ืžื” ื”ื™ื” ืขื•ืžืก ื”ืฉื™ื ืฉืœ ื”ืžืขื‘ื“?", "ืžื” ื”ื™ื” ื”ืขื•ืžืก ืืชืžื•ืœ ื‘ื‘ื•ืงืจ?" ื•ื›ื•'). ื‘ืฉื‘ื™ืœ ื–ื” ืืชื” ื™ื›ื•ืœ ืœื”ืฉืชืžืฉ ืคืจื•ืžืชืื•ืก, ื ืชื•ื ื™ื ื•ื›ืœื™ื ื ื•ืกืคื™ื. ื”ื ืคืฉื•ื˜ ืžืงื‘ืœื™ื ืžื“ื“ื™ื ืž-metrics-server ื•ืžืื—ืกื ื™ื ืื•ืชื, ื•ื”ืžืฉืชืžืฉ ื™ื›ื•ืœ ืœืฉืื•ืœ ืื•ืชื ื•ืœืชื›ื ืŸ ืื•ืชื ื‘ื”ืชืื.

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

ืฉื™ืžื•ืฉ ื™ืขื™ืœ ื‘ื›ื•ื— ื”ืžื—ืฉื•ื‘ ืื™ื ื• ืžืฉื™ืžื” ืงืœื”. ื–ื” ื›ืžื• ืœืฉื—ืง ื˜ื˜ืจื™ืก ื›ืœ ื”ื–ืžืŸ. ืื ืืชื” ืžืฉืœื ื™ื•ืชืจ ืžื“ื™ ืขื‘ื•ืจ ื›ื•ื— ืžื—ืฉื•ื‘ ืขื ืฆืจื™ื›ื” ืžืžื•ืฆืขืช ื ืžื•ื›ื” (ื ื ื™ื— ~10%), ืื ื• ืžืžืœื™ืฆื™ื ืœื”ืกืชื›ืœ ืขืœ ืžื•ืฆืจื™ื ื”ืžื‘ื•ืกืกื™ื ืขืœ AWS Fargate ืื• Virtual Kubelet. ื”ื ื‘ื ื•ื™ื™ื ืขืœ ืžื•ื“ืœ ื—ื™ื•ื‘ ืœืœื ืฉืจืช/ืชืฉืœื•ื ืœืคื™ ืฉื™ืžื•ืฉ, ืฉืขืฉื•ื™ ืœื”ืชื‘ืจืจ ื›ืžื•ื–ืœ ื™ื•ืชืจ ื‘ืชื ืื™ื ื›ืืœื”.

2. ื‘ื“ื™ืงื•ืช ื—ื™ื•ื ื™ื•ืช ื•ืžื•ื›ื ื•ืช

ื›ื‘ืจื™ืจืช ืžื—ื“ืœ, ื‘ื“ื™ืงื•ืช ื—ื™ื•ื ื™ื•ืช ื•ืžื•ื›ื ื•ืช ืื™ื ืŸ ืžื•ืคืขืœื•ืช ื‘-Kubernetes. ื•ืœืคืขืžื™ื ื”ื ืฉื•ื›ื—ื™ื ืœื”ื“ืœื™ืง ืื•ืชื...

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

ืžื‘ื—ื ื™ื ืืœื” ืžื‘ื•ืœื‘ืœื™ื ืœืขืชื™ื ืงืจื•ื‘ื•ืช ืื—ื“ ืขื ื”ืฉื ื™:

  • ื—ื™ - ื‘ื“ื™ืงืช "ื”ื™ืฉืจื“ื•ืช", ืืฉืจ ืžืคืขื™ืœื” ืžื—ื“ืฉ ืืช ื”ืคื•ื“ ืื ื”ื•ื ื ื›ืฉืœ;
  • ืžื•ื›ื ื•ืช - ื‘ื“ื™ืงืช ืžื•ื›ื ื•ืช, ืื ื”ื™ื ื ื›ืฉืœืช, ื”ื™ื ืžื ืชืงืช ืืช ื”ืคื•ื“ ืžืฉื™ืจื•ืช Kubernetes (ื ื™ืชืŸ ืœื‘ื“ื•ืง ื–ืืช ื‘ืืžืฆืขื•ืช kubectl get endpoints) ื•ื”ืชื ื•ืขื” ืœื ืžื’ื™ืขื” ืืœื™ื• ืขื“ ืฉื”ื‘ื“ื™ืงื” ื”ื‘ืื” ืชื•ืฉืœื ื‘ื”ืฆืœื—ื”.

ืฉื ื™ ื”ื‘ื“ื™ืงื•ืช ื”ืœืœื• ื‘ื•ืฆืข ื‘ืžื”ืœืš ื›ืœ ืžื—ื–ื•ืจ ื”ื—ื™ื™ื ืฉืœ ื”ืคื•ื“. ื–ื” ืžืื•ื“ ื—ืฉื•ื‘.

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

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

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

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

3. LoadBalancer ืขื‘ื•ืจ ื›ืœ ืฉื™ืจื•ืช HTTP

ืกื‘ื™ืจ ืœื”ื ื™ื— ืฉื™ืฉ ืœืš ืฉื™ืจื•ืชื™ HTTP ื‘ืืฉื›ื•ืœ ืฉืœืš ืฉืชืจืฆื” ืœื”ืขื‘ื™ืจ ืœืขื•ืœื ื”ื—ื™ืฆื•ืŸ.

ืื ืชืคืชื— ืืช ื”ืฉื™ืจื•ืช ื‘ืชื•ืจ type: LoadBalancer, ื”ื‘ืงืจ ืฉืœื• (ื‘ื”ืชืื ืœืกืคืง ื”ืฉื™ืจื•ืช) ื™ืกืคืง ื•ื™ื ื”ืœ ืžืฉื ื•ืžืชืŸ ืขืœ LoadBalancer ื—ื™ืฆื•ื ื™ (ืœื ื‘ื”ื›ืจื— ืคื•ืขืœ ืขืœ L7, ืืœื ืืคื™ืœื• ืขืœ L4), ื•ื–ื” ืขืฉื•ื™ ืœื”ืฉืคื™ืข ืขืœ ื”ืขืœื•ืช (ื›ืชื•ื‘ืช IPv4 ืกื˜ื˜ื™ืช ื—ื™ืฆื•ื ื™ืช, ื›ื•ื— ืžื—ืฉื•ื‘, ื—ื™ื•ื‘ ืœืฉื ื™ื™ื” ) ื‘ืฉืœ ื”ืฆื•ืจืš ืœื™ืฆื•ืจ ืžืกืคืจ ืจื‘ ืฉืœ ืžืฉืื‘ื™ื ื›ืืœื”.

ื‘ืžืงืจื” ื–ื”, ื”ืจื‘ื” ื™ื•ืชืจ ื”ื’ื™ื•ื ื™ ืœื”ืฉืชืžืฉ ื‘ืžืื–ืŸ ืขื•ืžืกื™ื ื—ื™ืฆื•ื ื™ ืื—ื“, ืคืชื™ื—ืช ืฉื™ืจื•ืชื™ ื› type: NodePort. ืื• ื™ื•ืชืจ ื˜ื•ื‘, ื”ืจื—ื‘ ืžืฉื”ื• ื›ืžื• nginx-ingress-controller (ืื• ื˜ืจืืคื™ืง), ืžื™ ื™ื”ื™ื” ื”ื™ื—ื™ื“ NodePort ื ืงื•ื“ืช ืงืฆื” ื”ืžืฉื•ื™ื›ืช ืœืžืื–ืŸ ื”ืขื•ืžืก ื”ื—ื™ืฆื•ื ื™ ื•ืชื ืชื‘ ืืช ื”ืชื ื•ืขื” ื‘ืืฉื›ื•ืœ ื‘ืืžืฆืขื•ืช ื—ื“ื™ืจื”-ืžืฉืื‘ื™ Kubernetes.

ืฉื™ืจื•ืชื™ื ืชื•ืš ืืฉื›ื•ืœ (ืžื™ืงืจื•) ืื—ืจื™ื ื”ืžืงื™ื™ืžื™ื ืื™ื ื˜ืจืืงืฆื™ื” ื–ื” ืขื ื–ื” ื™ื›ื•ืœื™ื "ืœืชืงืฉืจ" ื‘ืืžืฆืขื•ืช ืฉื™ืจื•ืชื™ื ื›ืžื• ืืฉื›ื•ืœ IP ื•ืžื ื’ื ื•ืŸ ื’ื™ืœื•ื™ ืฉื™ืจื•ืช ืžื•ื‘ื ื” ื‘ืืžืฆืขื•ืช DNS. ืคืฉื•ื˜ ืืœ ืชืฉืชืžืฉ ื‘-DNS/IP ื”ืฆื™ื‘ื•ืจื™ ืฉืœื”ื, ืžื›ื™ื•ื•ืŸ ืฉื–ื” ื™ื›ื•ืœ ืœื”ืฉืคื™ืข ืขืœ ื–ืžืŸ ื”ื”ืฉื”ื™ื” ื•ืœื”ื’ื“ื™ืœ ืืช ื”ืขืœื•ืช ืฉืœ ืฉื™ืจื•ืชื™ ื”ืขื ืŸ.

4. ืงื ื” ืžื™ื“ื” ืื•ื˜ื•ืžื˜ื™ ืฉืœ ืืฉื›ื•ืœ ืžื‘ืœื™ ืœืงื—ืช ื‘ื—ืฉื‘ื•ืŸ ืืช ื”ืชื›ื•ื ื•ืช ืฉืœื•

ื›ืฉืืชื” ืžื•ืกื™ืฃ ืฆืžืชื™ื ื•ืžืกื™ืจ ืื•ืชื ืžืืฉื›ื•ืœ, ืืœ ืชืกืชืžืš ืขืœ ื›ืžื” ืžื“ื“ื™ื ื‘ืกื™ืกื™ื™ื ื›ืžื• ืฉื™ืžื•ืฉ ื‘ืžืขื‘ื“ ื‘ืฆืžืชื™ื ืืœื”. ืชื›ื ื•ืŸ ืชืจืžื™ืœื™ื ื—ื™ื™ื‘ ืœืงื—ืช ื‘ื—ืฉื‘ื•ืŸ ืจื‘ื™ื ื”ื’ื‘ืœื•ืช, ื›ื’ื•ืŸ ื–ื™ืงื” ืœืคื•ื“/ืฆื•ืžืช, ืคื’ืžื™ื ื•ืกื•ื‘ืœื ื•ืช, ื‘ืงืฉื•ืช ืžืฉืื‘ื™ื, QoS ื•ื›ื•'. ืฉื™ืžื•ืฉ ื‘-autoscaler ื—ื™ืฆื•ื ื™ ืฉืื™ื ื• ืœื•ืงื— ื‘ื—ืฉื‘ื•ืŸ ืืช ื”ื ื™ื•ืื ืกื™ื ื”ืœืœื• ืขืœื•ืœ ืœื”ื•ื‘ื™ืœ ืœื‘ืขื™ื•ืช.

ืชืืจ ืœืขืฆืžืš ืฉืฆืจื™ืš ืœืชื–ืžืŸ ืคื•ื“ ืžืกื•ื™ื, ืื‘ืœ ื›ืœ ื›ื•ื— ื”ืžืขื‘ื“ ื”ื–ืžื™ืŸ ืžืชื‘ืงืฉ/ืžืคื•ืจืง ื•ื”ืคื•ื“ ื ืชืงืข ื‘ืžืฆื‘ Pending. Autoscaler ื—ื™ืฆื•ื ื™ ืจื•ืื” ืืช ืขื•ืžืก ื”ืžืขื‘ื“ ื”ื ื•ื›ื—ื™ ื”ืžืžื•ืฆืข (ืœื ื”ืžื‘ื•ืงืฉ) ื•ืื™ื ื• ื™ื•ื–ื ื”ืจื—ื‘ื” (ื”ืจื—ื‘ื”) - ืื™ื ื• ืžื•ืกื™ืฃ ืขื•ื“ ืฆื•ืžืช. ื›ืชื•ืฆืื” ืžื›ืš, ื”ืคื•ื“ ื”ื–ื” ืœื ื™ืชื•ื–ืžืŸ.

ื‘ืžืงืจื” ื–ื”, ืงื ื” ืžื™ื“ื” ื”ืคื•ืš (ื”ืจื—ื‘ื”) - ื”ืกืจืช ืฆื•ืžืช ืžืืฉื›ื•ืœ ื”ื™ื ืชืžื™ื“ ืงืฉื” ื™ื•ืชืจ ืœื™ื™ืฉื•ื. ืชืืจ ืœืขืฆืžืš ืฉื™ืฉ ืœืš ืชืจืžื™ืœ ืžืฆื‘ื™ (ืขื ืื—ืกื•ืŸ ืžืชืžืฉืš ืžื—ื•ื‘ืจ). ื›ืจื›ื™ื ืžืชืžืฉื›ื™ื ืฉื™ื™ืš ื‘ื“ืจืš ื›ืœืœ ืœ ืื–ื•ืจ ื–ืžื™ื ื•ืช ืกืคืฆื™ืคื™ ื•ืื™ื ื ืžืฉื•ื›ืคืœื™ื ื‘ืื–ื•ืจ. ืœืคื™ื›ืš, ืื Autoscaler ื—ื™ืฆื•ื ื™ ืžื•ื—ืง ืฆื•ืžืช ืขื ื”ืคื•ื“ ื”ื–ื”, ื”ืžืชื–ืžืŸ ืœื ื™ื•ื›ืœ ืœืชื–ืžืŸ ืืช ื”ืคื•ื“ ื”ื–ื” ื‘ืฆื•ืžืช ืื—ืจ, ืžื›ื™ื•ื•ืŸ ืฉื ื™ืชืŸ ืœืขืฉื•ืช ื–ืืช ืจืง ื‘ืื–ื•ืจ ื”ื–ืžื™ื ื•ืช ืฉื‘ื• ื ืžืฆื ื”ืื—ืกื•ืŸ ื”ืžืชืžืฉืš. ื”ืคื•ื“ ื™ื™ืชืงืข ื‘ืžืฆื‘ Pending.

ืคื•ืคื•ืœืจื™ ืžืื•ื“ ื‘ืงื”ื™ืœืช Kubernetes cluster-autoscaler. ื”ื•ื ืคื•ืขืœ ืขืœ ืืฉื›ื•ืœ, ืชื•ืžืš ื‘ืžืžืฉืงื™ API ืžืกืคืงื™ ืขื ืŸ ื’ื“ื•ืœื™ื, ืœื•ืงื— ื‘ื—ืฉื‘ื•ืŸ ืืช ื›ืœ ื”ื”ื’ื‘ืœื•ืช ื•ื™ื›ื•ืœ ืœื”ืชืื™ื ื‘ืžืงืจื™ื ืฉืœืขื™ืœ. ื–ื” ื’ื ืžืกื•ื’ืœ ืœื”ื’ื“ื™ืœ ืชื•ืš ืฉืžื™ืจื” ืขืœ ื›ืœ ื”ืžื’ื‘ืœื•ืช ืฉื ืงื‘ืขื•, ื•ื‘ื›ืš ืœื—ืกื•ืš ื›ืกืฃ (ืฉืื ืœื ื›ืŸ ื”ื™ื” ืžื‘ื–ื‘ื– ืขืœ ืงื™ื‘ื•ืœืช ืœื ืžื ื•ืฆืœืช).

5. ื”ื–ื ื—ืช ื™ื›ื•ืœื•ืช IAM/RBAC

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

ืœืขืชื™ื ืงืจื•ื‘ื•ืช ืื ื• ื ืชืงืœื™ื ื‘ืขื•ื‘ื“ื” ืฉืžืคืชื—ื•ืช ื’ื™ืฉื” (ื•ืกื•ื“ื•ืช) ืžืงื•ื“ื“ื™ื ื‘ืงืฉื™ื—ื” ื‘ืชืฆื•ืจืช ื”ืืคืœื™ืงืฆื™ื”, ื›ืžื• ื’ื ืžื–ื ื™ื—ื™ื ืืช ืกื™ื‘ื•ื‘ ื”ืกื•ื“ื•ืช ืœืžืจื•ืช ืฉื™ืฉ ืœื ื• ื’ื™ืฉื” ืœ-Cloud IAM. ื”ืฉืชืžืฉ ื‘ืชืคืงื™ื“ื™ IAM ื•ื‘ื—ืฉื‘ื•ื ื•ืช ืฉื™ืจื•ืช ื‘ืžืงื•ื ื‘ืžืฉืชืžืฉื™ื ื‘ืžื™ื“ืช ื”ืฆื•ืจืš.

10 ื˜ืขื•ื™ื•ืช ื ืคื•ืฆื•ืช ื‘ืฉื™ืžื•ืฉ ื‘-Kubernetes

ืฉื›ื— ืž-kube2iam ื•ืขื‘ื•ืจ ื™ืฉืจ ืœืชืคืงื™ื“ื™ IAM ืขื‘ื•ืจ ื—ืฉื‘ื•ื ื•ืช ืฉื™ืจื•ืช (ื›ืžืชื•ืืจ ื‘ ืคืชืง ื‘ืื•ืชื• ืฉื ืกื˜ืคืŸ ื•ืจื•ื ื™):

apiVersion: v1
kind: ServiceAccount
metadata:
  annotations:
    eks.amazonaws.com/role-arn: arn:aws:iam::123456789012:role/my-app-role
  name: my-serviceaccount
  namespace: default

ื”ืขืจื” ืื—ืช. ืœื ื›ื–ื” ืงืฉื”, ื ื›ื•ืŸ?

ื›ืžื• ื›ืŸ, ืืœ ืชืขื ื™ืง ื”ืจืฉืื•ืช ืœื—ืฉื‘ื•ื ื•ืช ืฉื™ืจื•ืช ื•ืคืจื•ืคื™ืœื™ ืžื•ืคืขื™ื admin ะธ cluster-adminืื ื”ื ืœื ืฆืจื™ื›ื™ื ืืช ื–ื”. ื–ื” ืงืฆืช ื™ื•ืชืจ ืงืฉื” ืœื™ื™ืฉื•ื, ื‘ืžื™ื•ื—ื“ ื‘-RBAC K8s, ืื‘ืœ ื‘ื”ื—ืœื˜ ืฉื•ื•ื” ืืช ื”ืžืืžืฅ.

6. ืืœ ืชืกืชืžืš ืขืœ ืื ื˜ื™ ื–ื™ืงื” ืื•ื˜ื•ืžื˜ื™ืช ืœืชืจืžื™ืœื™ื

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

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

// ะพะฟัƒั‰ะตะฝะพ ะดะปั ะบั€ะฐั‚ะบะพัั‚ะธ
      labels:
        app: zk
// ะพะฟัƒั‰ะตะฝะพ ะดะปั ะบั€ะฐั‚ะบะพัั‚ะธ
      affinity:
        podAntiAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            - labelSelector:
                matchExpressions:
                  - key: "app"
                    operator: In
                    values:
                    - zk
              topologyKey: "kubernetes.io/hostname"

ื–ื” ื”ื›ืœ. ื›ืขืช ื”ืคื•ื“ื™ื ื™ืชื•ื–ืžื ื• ื‘ืฆืžืชื™ื ืฉื•ื ื™ื (ืžืฆื‘ ื–ื” ื ื‘ื“ืง ืจืง ื‘ืžื”ืœืš ื”ืชื–ืžื•ืŸ, ืืš ืœื ื‘ืžื”ืœืš ืคืขื•ืœืชื - ืžื›ืืŸ requiredDuringSchedulingIgnoredDuringExecution).

ื›ืืŸ ืื ื—ื ื• ืžื“ื‘ืจื™ื ืขืœ podAntiAffinity ื‘ืฆืžืชื™ื ืฉื•ื ื™ื: topologyKey: "kubernetes.io/hostname", - ื•ืœื ืขืœ ืื–ื•ืจื™ ื–ืžื™ื ื•ืช ืฉื•ื ื™ื. ื›ื“ื™ ืœื™ื™ืฉื HA ืžืŸ ื”ืžื ื™ื™ืŸ, ืชืฆื˜ืจืš ืœื—ืคื•ืจ ืขืžื•ืง ื™ื•ืชืจ ื‘ื ื•ืฉื ื–ื”.

7. ื”ืชืขืœืžื•ืช ืž-PodDisruptionBudgets

ืชืืจ ืœืขืฆืžืš ืฉื™ืฉ ืœืš ืขื•ืžืก ื™ื™ืฆื•ืจ ืขืœ ืืฉื›ื•ืœ Kubernetes. ืžืขืช ืœืขืช, ื™ืฉ ืœืขื“ื›ืŸ (ืื• ืœื‘ื˜ืœ) ืืช ื”ืฆืžืชื™ื ื•ืืช ื”ืืฉื›ื•ืœ ืขืฆืžื•. PodDisruptionBudget (PDB) ื”ื•ื ืžืฉื”ื• ื›ืžื• ื”ืกื›ื ืขืจื‘ื•ืช ืฉื™ืจื•ืช ื‘ื™ืŸ ืžื ื”ืœื™ ืืฉื›ื•ืœื•ืช ื•ืžืฉืชืžืฉื™ื.

PDB ืžืืคืฉืจ ืœืš ืœื”ื™ืžื ืข ืžื”ืคืจืขื•ืช ืฉื™ืจื•ืช ื”ื ื’ืจืžื•ืช ืขืœ ื™ื“ื™ ืžื—ืกื•ืจ ื‘ืฆืžืชื™ื:

apiVersion: policy/v1beta1
kind: PodDisruptionBudget
metadata:
  name: zk-pdb
spec:
  minAvailable: 2
  selector:
    matchLabels:
      app: zookeeper

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

ืืชื” ื™ื›ื•ืœ ืœืงืจื•ื ืขื•ื“ ืขืœ ื–ื” ื›ืืŸ.

8. ืžืกืคืจ ืžืฉืชืžืฉื™ื ืื• ืกื‘ื™ื‘ื•ืช ื‘ืืฉื›ื•ืœ ืžืฉื•ืชืฃ

ืžืจื—ื‘ื™ ืฉืžื•ืช ืฉืœ Kubernetes (ืžืจื—ื‘ื™ ืฉืžื•ืช) ืœื ืžืกืคืงื™ื ื‘ื™ื“ื•ื“ ื—ื–ืง.

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

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

9. ืžื“ื™ื ื™ื•ืช ืชื ื•ืขื” ื—ื™ืฆื•ื ื™ืช: ืืฉื›ื•ืœ

ืœืขืชื™ื ืงืจื•ื‘ื•ืช ืžืื•ื“ ืื ื• ืจื•ืื™ื ืฉื›ืœ ื”ืชืขื‘ื•ืจื” ื‘ืชื•ืš ื”ืืฉื›ื•ืœ ืžื’ื™ืขื” ื“ืจืš ืฉื™ืจื•ืช ื›ืžื• NodePort, ืฉืขื‘ื•ืจื• ืžื•ื’ื“ืจืช ืžื“ื™ื ื™ื•ืช ื‘ืจื™ืจืช ื”ืžื—ื“ืœ externalTrafficPolicy: Cluster... ื–ื” ืื•ืžืจ ืฉ NodePort ืคืชื•ื— ื‘ื›ืœ ืฆื•ืžืช ื‘ืืฉื›ื•ืœ, ื•ืืชื” ื™ื›ื•ืœ ืœื”ืฉืชืžืฉ ื‘ื›ืœ ืื—ื“ ืžื”ื ื›ื“ื™ ืœื™ืฆื•ืจ ืื™ื ื˜ืจืืงืฆื™ื” ืขื ื”ืฉื™ืจื•ืช ื”ืจืฆื•ื™ (ืกื˜ ืฉืœ ืชืจืžื™ืœื™ื).

10 ื˜ืขื•ื™ื•ืช ื ืคื•ืฆื•ืช ื‘ืฉื™ืžื•ืฉ ื‘-Kubernetes

ื™ื—ื“ ืขื ื–ืืช, ืชืจืžื™ืœื™ื ืืžื™ืชื™ื™ื ื”ืžืฉื•ื™ื›ื™ื ืœืฉื™ืจื•ืช NodePort ื”ื "ืœ ื–ืžื™ื ื™ื ื‘ื“ืจืš ื›ืœืœ ืจืง ืขืœ ืžืกื•ื™ื™ื ืชืช-ืงื‘ื•ืฆื” ืฉืœ ืฆืžืชื™ื ืืœื”. ื‘ืžื™ืœื™ื ืื—ืจื•ืช, ืื ืื ื™ ืžืชื—ื‘ืจ ืœืฆื•ืžืช ืฉืื™ืŸ ืœื• ืืช ื”ืคื•ื“ ื”ื ื“ืจืฉ, ื”ื•ื ื™ืขื‘ื™ืจ ืชื ื•ืขื” ืœืฆื•ืžืช ืื—ืจ, ื”ื•ืกืคืช ื”ื•ืค ื•ื”ื’ื“ืœืช ื”ืฉื”ื™ื” (ืื ืฆืžืชื™ื ืžืžื•ืงืžื™ื ื‘ืื–ื•ืจื™ ื–ืžื™ื ื•ืช/ืžืจื›ื–ื™ ื ืชื•ื ื™ื ืฉื•ื ื™ื, ื”ื”ืฉื”ื™ื” ื™ื›ื•ืœื” ืœื”ื™ื•ืช ื“ื™ ื’ื‘ื•ื”ื”; ื‘ื ื•ืกืฃ, ืขืœื•ื™ื•ืช ืชืขื‘ื•ืจืช ื™ืฆื™ืื” ื™ื’ื“ืœื•).

ืžืฆื“ ืฉื ื™, ืื ืœืฉื™ืจื•ืช Kubernetes ืžืกื•ื™ื ื™ืฉ ืžื“ื™ื ื™ื•ืช ืžื•ื’ื“ืจืช externalTrafficPolicy: Local, ืื– NodePort ื ืคืชื— ืจืง ื‘ืื•ืชื ืฆืžืชื™ื ืฉื‘ื”ื ืคื•ืขืœื™ื ื‘ืคื•ืขืœ ื”ืคื•ื“ื™ื ื”ื ื“ืจืฉื™ื. ื‘ืขืช ืฉื™ืžื•ืฉ ื‘ืžืื–ืŸ ืขื•ืžืกื™ื ื—ื™ืฆื•ื ื™ ืฉื‘ื•ื“ืง ืืช ื”ืžืฆื‘ (ื‘ื“ื™ืงืช ื‘ืจื™ืื•ืช) ื ืงื•ื“ื•ืช ืงืฆื” (ืื™ืš ื–ื” ืงื•ืจื” AWS ELB), ื”ื•ื ื™ืฉืœื— ืชืขื‘ื•ืจื” ืจืง ืœืฆืžืชื™ื ื”ื“ืจื•ืฉื™ื, ืฉืชืฉืคื™ืข ืœื˜ื•ื‘ื” ืขืœ ืขื™ื›ื•ื‘ื™ื, ืฆืจื›ื™ ืžื—ืฉื•ื‘, ื—ืฉื‘ื•ื ื•ืช ื™ืฆื™ืื” (ื•ื”ืฉื›ืœ ื”ื™ืฉืจ ืžื›ืชื™ื‘ ืืช ืื•ืชื• ื”ื“ื‘ืจ).

ื™ืฉ ืกื™ื›ื•ื™ ื’ื‘ื•ื” ืฉืืชื” ื›ื‘ืจ ืžืฉืชืžืฉ ื‘ืžืฉื”ื• ื›ืžื• ื˜ืจืืคื™ืง ืื• nginx-ingress-controller ื›ื ืงื•ื“ืช ืงืฆื” ืฉืœ NodePort (ืื• LoadBalancer, ื”ืžืฉืชืžืฉืช ื’ื ื‘-NodePort) ืœื ื™ืชื•ื‘ ืชืขื‘ื•ืจืช ื›ื ื™ืกืช HTTP, ื•ื”ื’ื“ืจืช ืืคืฉืจื•ืช ื–ื• ื™ื›ื•ืœื” ืœื”ืคื—ื™ืช ืžืฉืžืขื•ืชื™ืช ืืช ื”ื”ืฉื”ื™ื” ืขื‘ื•ืจ ื‘ืงืฉื•ืช ื›ืืœื”.

ะ’ ืคืจืกื•ื ื–ื” ืืชื” ื™ื›ื•ืœ ืœืœืžื•ื“ ืขื•ื“ ืขืœ externalTrafficPolicy, ื”ื™ืชืจื•ื ื•ืช ื•ื”ื—ืกืจื•ื ื•ืช ืฉืœื”.

10. ืืœ ืชืงืฉื•ืจ ืœืืฉื›ื•ืœื•ืช ื•ืืœ ืชืชืขืœืœ ื‘ืžื™ืฉื•ืจ ื”ืฉืœื™ื˜ื”

ื‘ืขื‘ืจ, ื”ื™ื” ื ื”ื•ื’ ืœืงืจื•ื ืœืฉืจืชื™ื ื‘ืฉืžื•ืช ืคืจื˜ื™ื™ื: ืื ื˜ื•ืŸ, HAL9000 ื•-Colossus... ื”ื™ื•ื ื”ื ื”ื•ื—ืœืคื• ื‘ืžื–ื”ื™ื ืฉื ื•ืฆืจื• ื‘ืืงืจืื™. ืขื ื–ืืช, ื”ื”ืจื’ืœ ื ืฉืืจ, ื•ืขื›ืฉื™ื• ืฉืžื•ืช ืจืื•ื™ื™ื ื”ื•ืœื›ื™ื ืœืืฉื›ื•ืœื•ืช.

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

ืื™ืŸ ืฉื•ื ื“ื‘ืจ ืžื”ื ื” ื‘ืฆื‘ื™ืจื™ื ืฉื”ื•ืคื›ื™ื ืœื—ื™ื•ืช ืžื—ืžื“, ืื– ืื ื• ืžืžืœื™ืฆื™ื ืœื”ืกื™ืจ ืื•ืชื ืžื“ื™ ืคืขื ืชื•ืš ื›ื“ื™ ืชืจื’ื•ืœ ื”ืชืื•ืฉืฉื•ืช ืžืืกื•ืŸ (ื–ื” ื™ืขื–ื•ืจ ื”ื ื“ืกืช ื›ืื•ืก - ืžืฉื•ืขืจ. ืชืจื’ื•ื). ื‘ื ื•ืกืฃ, ืœื ื™ื–ื™ืง ืœืขื‘ื•ื“ ืขืœ ืฉื›ื‘ืช ื”ื‘ืงืจื” (ืžื˜ื•ืก ื‘ืงืจื”). ืœืคื—ื“ ืœื’ืขืช ื‘ื• ื–ื” ืœื ืกื™ืžืŸ ื˜ื•ื‘. ื•ื›ื• ' ืžึตืช? ื—ื‘ืจื™ื, ืืชื ืžืžืฉ ื‘ืฆืจื•ืช!

ืžืฆื“ ืฉื ื™, ืืชื” ืœื ืฆืจื™ืš ืœื”ื™ืกื—ืฃ ืขื ืžื ื™ืคื•ืœืฆื™ื•ืช. ืขื ื”ื–ืžืŸ ืฉื›ื‘ืช ื”ื‘ืงืจื” ืขืœื•ืœื” ืœื”ื™ื•ืช ืื™ื˜ื™ืช. ืกื‘ื™ืจ ืœื”ื ื™ื— ืฉื–ื” ื ื•ื‘ืข ืžืžืกืคืจ ืจื‘ ืฉืœ ืื•ื‘ื™ื™ืงื˜ื™ื ืฉื ื•ืฆืจื• ืœืœื ืกื™ื‘ื•ื‘ื (ืžืฆื‘ ืฉื›ื™ื— ื‘ืฉื™ืžื•ืฉ ื‘ื”ืœื ืขื ื”ื’ื“ืจื•ืช ื‘ืจื™ืจืช ืžื—ื“ืœ, ื•ื–ื• ื”ืกื™ื‘ื” ืฉื”ืžืฆื‘ ืฉืœื• ื‘ืžืคื•ืช configmap/ืกื•ื“ื•ืช ืœื ืžืชืขื“ื›ืŸ - ื›ืชื•ืฆืื” ืžื›ืš, ืืœืคื™ ืื•ื‘ื™ื™ืงื˜ื™ื ืžืฆื˜ื‘ืจื™ื ื‘- ืฉื›ื‘ืช ื”ื‘ืงืจื”) ืื• ืขื ืขืจื™ื›ื” ืžืชืžื“ืช ืฉืœ ืื•ื‘ื™ื™ืงื˜ื™ kube-api (ืขื‘ื•ืจ ืงื ื” ืžื™ื“ื” ืื•ื˜ื•ืžื˜ื™, ืขื‘ื•ืจ CI/CD, ืขื‘ื•ืจ ื ื™ื˜ื•ืจ, ื™ื•ืžื ื™ ืื™ืจื•ืขื™ื, ื‘ืงืจื™ื ื•ื›ื•').

ื‘ื ื•ืกืฃ, ืื ื• ืžืžืœื™ืฆื™ื ืœื‘ื“ื•ืง ืืช ื”ืกื›ืžื™ SLA/SLO ืขื ืกืคืง Kubernetes ื”ืžื ื•ื”ืœ ื•ืœืฉื™ื ืœื‘ ืœืขืจื‘ื•ืช. ื”ืกืคืง ื™ื›ื•ืœ ืœื”ื‘ื˜ื™ื— ืฉืœื™ื˜ื” ื‘ื–ืžื™ื ื•ืช ืฉื›ื‘ืช (ืื• ืจื›ื™ื‘ื™ ื”ืžืฉื ื” ืฉืœื•), ืื‘ืœ ืœื ืขื™ื›ื•ื‘ p99 ืฉืœ ื‘ืงืฉื•ืช ืฉืืชื” ืฉื•ืœื— ืืœื™ื•. ื‘ืžื™ืœื™ื ืื—ืจื•ืช, ืืชื” ื™ื›ื•ืœ ืœื”ื™ื›ื ืก kubectl get nodes, ื•ืงื‘ืœ ืชืฉื•ื‘ื” ืจืง ืœืื—ืจ 10 ื“ืงื•ืช, ื•ื–ืืช ืœื ืชื”ื™ื” ื”ืคืจื” ืฉืœ ืชื ืื™ ื”ืกื›ื ื”ืฉื™ืจื•ืช.

11. ื‘ื•ื ื•ืก: ืฉื™ืžื•ืฉ ื‘ืชื’ื™ืช ื”ืื—ืจื•ื ื”

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

ECR ืฉื•ืžืจ ืขืœ ืื™-ืฉื™ื ื•ื™ ืฉืœ ืชื’ื™ื•ืช ืชืžื•ื ื”; ืื ื• ืžืžืœื™ืฆื™ื ืฉืชื›ื™ืจ ืืช ื”ืชื›ื•ื ื” ื”ืžื“ื”ื™ืžื” ื”ื–ื•.

ืชืงืฆื™ืจ

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

ืืชื” ื™ื›ื•ืœ ืœื”ื›ื™ืจ ืืช ื”ื—ื•ื•ื™ื•ืช ื”ืœื ืžื•ืฆืœื—ื•ืช ืฉืœ ืฆื•ื•ืชื™ื ืฉื•ื ื™ื ื‘ ืื•ืกืฃ ื”ืกื™ืคื•ืจื™ื ื”ื–ื” ืžืืช ื”ื ื™ื ื’ ื’'ื™ื™ืงื•ื‘ืก.

ืžื™ ืฉืจื•ืฆื” ืœื”ื•ืกื™ืฃ ืœืจืฉื™ืžืช ื”ืฉื’ื™ืื•ืช ื”ืžื•ืคื™ืขื” ื‘ืžืืžืจ ื–ื” ื™ื›ื•ืœ ืœืคื ื•ืช ืืœื™ื ื• ื‘ื˜ื•ื•ื™ื˜ืจ (@MarekBartik, @MstrsObserver).

ื .ื‘ ืžื”ืžืชืจื’ื

ืงืจื ื’ื ื‘ื‘ืœื•ื’ ืฉืœื ื•:

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

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