ืชืฉืขื” ื˜ื™ืคื™ื ืœื‘ื™ืฆื•ืขื™ื ืฉืœ Kubernetes

ืชืฉืขื” ื˜ื™ืคื™ื ืœื‘ื™ืฆื•ืขื™ื ืฉืœ Kubernetes

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

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

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

1. ืขืงื•ื‘ ืื—ืจ ืžืฉืื‘ื™ ื”ืฆื•ื•ืช ื•ื”ืืคืœื™ืงืฆื™ื”

ืชืฉืขื” ื˜ื™ืคื™ื ืœื‘ื™ืฆื•ืขื™ื ืฉืœ Kubernetes

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

resources:
   requests:
     memory: 2Gi
     cpu: 250m
   limits:
     memory: 4Gi
     cpu: 500m

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

ื‘ื ื•ืกืฃ, ื‘ืขื–ืจืช ื”ืขื–ืจื” limitranges ืืชื” ื™ื›ื•ืœ ืœื”ื’ื“ื™ืจ ืขืจื›ื™ ืžืฉืื‘ ืขื‘ื•ืจ ื”ืžื™ื›ืœ ื‘ื”ืชื—ืœื” - ืžื™ื ื™ืžื•ื, ืžืงืกื™ืžื•ื ื•ื‘ืจื™ืจืช ืžื—ื“ืœ:

โžœ  ~ kubectl describe limitranges --namespace ops
Name:       limit-range
Namespace:  ops
Type        Resource           Min   Max   Default Request  Default Limit  Max Limit/Request Ratio
----        --------           ---   ---   ---------------  -------------  -----------------------
Container   cpu                50m   10    100m             100m           2
Container   ephemeral-storage  12Mi  8Gi   128Mi            4Gi            -
Container   memory             64Mi  40Gi  128Mi            128Mi          2

ื–ื›ื•ืจ ืœื”ื’ื‘ื™ืœ ืืช ืžืฉืื‘ื™ ืžืจื—ื‘ ื”ืฉืžื•ืช ื›ืš ืฉืคืงื•ื“ื” ืื—ืช ืœื ืชื•ื›ืœ ืœืงื—ืช ืืช ื›ืœ ื”ืžืฉืื‘ื™ื ืฉืœ ื”ืืฉื›ื•ืœ:

โžœ  ~ kubectl describe resourcequotas --namespace ops
Name:                   resource-quota
Namespace:              ops
Resource                Used          Hard
--------                ----          ----
limits.cpu              77250m        80
limits.memory           124814367488  150Gi
pods                    31            45
requests.cpu            53850m        80
requests.memory         75613234944   150Gi
services                26            50
services.loadbalancers  0             0
services.nodeports      0             0

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

Error creating: pods "nginx-proxy-9967d8d78-nh4fs" is forbidden: exceeded quota: resource-quota, requested: limits.cpu=5,requests.cpu=5, used: limits.cpu=77250m,requests.cpu=53850m, limited: limits.cpu=10,requests.cpu=10

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

2. ื‘ื—ืจ ืืช ืื—ืกื•ืŸ ื”ืงื‘ืฆื™ื ื”ื˜ื•ื‘ ื‘ื™ื•ืชืจ

ืชืฉืขื” ื˜ื™ืคื™ื ืœื‘ื™ืฆื•ืขื™ื ืฉืœ Kubernetes

ื›ืืŸ ื‘ืจืฆื•ื ื™ ืœื’ืขืช ื‘ื ื•ืฉื ืฉืœ ืืžืฆืขื™ ืื—ืกื•ืŸ ืžืชืžื™ื“ื™ื ื•ืชืช-ืžืขืจื›ืช ื”ื“ื™ืกืง ืฉืœ ืฆืžืชื™ ื”ืขื‘ื•ื“ื” ืฉืœ Kubernetes. ืื ื™ ืžืงื•ื•ื” ืฉืืฃ ืื—ื“ ืœื ืžืฉืชืžืฉ ื‘-"Cube" ื‘-HDD ื‘ื™ื™ืฆื•ืจ, ืื‘ืœ ืœืคืขืžื™ื ืืคื™ืœื• SSD ืจื’ื™ืœ ื›ื‘ืจ ืœื ืžืกืคื™ืง. ื”ืชืžื•ื“ื“ื ื• ืขื ื‘ืขื™ื” ื›ื–ื• ืฉื”ืœื•ื’ื™ื ื”ื•ืจื’ื™ื ืืช ื”ื“ื™ืกืง ืขืœ ื™ื“ื™ ืคืขื•ืœื•ืช I/O, ื•ืื™ืŸ ื›ืืŸ ื”ืจื‘ื” ืคืชืจื•ื ื•ืช:

  • ื”ืฉืชืžืฉ ื‘ื›ื•ื ื ื™ SSD ื‘ืขืœื™ ื‘ื™ืฆื•ืขื™ื ื’ื‘ื•ื”ื™ื ืื• ืขื‘ื•ืจ ืœ-NVMe (ืื ืืชื” ืžื ื”ืœ ืืช ื”ื—ื•ืžืจื” ืฉืœืš).

  • ื”ื•ืจื“ ืืช ืจืžืช ื”ืจื™ืฉื•ื.

  • ืขืฉื” ืื™ื–ื•ืŸ "ื—ื›ื" ืฉืœ ืชืจืžื™ืœื™ื ืฉืื•ื ืกื™ื ืืช ื”ื“ื™ืกืง (podAntiAffinity).

ืฆื™ืœื•ื ื”ืžืกืš ืฉืœืžืขืœื” ืžืจืื” ืžื” ืงื•ืจื” ืชื—ืช nginx-ingress-controller ืขื ื“ื™ืกืง ื›ืืฉืจ ืจื™ืฉื•ื access_logs ืžื•ืคืขืœ (~12k ื™ื•ืžื ื™ื/ืฉื ื™ื™ื”). ืžืฆื‘ ื›ื–ื”, ื›ืžื•ื‘ืŸ, ื™ื›ื•ืœ ืœื”ื•ื‘ื™ืœ ืœืคื’ื™ืขื” ื‘ื›ืœ ื”ื™ื™ืฉื•ืžื™ื ื‘ืฆื•ืžืช ื–ื”.

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

3. ื‘ื ื” ืชืžื•ื ื•ืช ืžื•ืชืืžื•ืช

ืชืฉืขื” ื˜ื™ืคื™ื ืœื‘ื™ืฆื•ืขื™ื ืฉืœ Kubernetes

ืขื“ื™ืฃ ืœื”ืฉืชืžืฉ ื‘ืชืžื•ื ื•ืช ืžื•ืชืืžื•ืช ืœืžื™ื›ืœ ื›ื“ื™ ืฉ-Kubernetes ื™ื•ื›ืœ ืœื”ื‘ื™ื ืื•ืชืŸ ืžื”ืจ ื™ื•ืชืจ ื•ืœื‘ืฆืข ืื•ืชืŸ ื‘ื™ืขื™ืœื•ืช ืจื‘ื” ื™ื•ืชืจ. 

ืื•ืคื˜ื™ืžื™ื–ืฆื™ื” ืคื™ืจื•ืฉื” ืฉืชืžื•ื ื•ืช:

  • ืœื”ื›ื™ืœ ืจืง ื™ื™ืฉื•ื ืื—ื“ ืื• ืœื‘ืฆืข ืจืง ืคื•ื ืงืฆื™ื” ืื—ืช;

  • ื’ื•ื“ืœ ืงื˜ืŸ, ืžื›ื™ื•ื•ืŸ ืฉืชืžื•ื ื•ืช ื’ื“ื•ืœื•ืช ืžื•ืขื‘ืจื•ืช ื‘ืฆื•ืจื” ื’ืจื•ืขื” ื™ื•ืชืจ ื“ืจืš ื”ืจืฉืช;

  • ื™ืฉ ื ืงื•ื“ื•ืช ืงืฆื” ื‘ืจื™ืื•ืช ื•ืžื•ื›ื ื•ืช ืฉื‘ื”ืŸ Kubernetes ื™ื›ื•ืœื” ืœื”ืฉืชืžืฉ ื›ื“ื™ ืœื ืงื•ื˜ ื‘ืคืขื•ืœื” ื‘ืžืงืจื” ืฉืœ ื”ืฉื‘ืชื”;

  • ื”ืฉืชืžืฉ ื‘ืžืขืจื›ื•ืช ื”ืคืขืœื” ื™ื“ื™ื“ื•ืชื™ื•ืช ืœืžื™ื›ืœ (ื›ืžื• Alpine ืื• CoreOS) ืขืžื™ื“ื•ืช ื™ื•ืชืจ ื‘ืคื ื™ ืฉื’ื™ืื•ืช ืชืฆื•ืจื”;

  • ื”ืฉืชืžืฉ ื‘ื‘ื ื™ื™ื” ืžืจื•ื‘ื” ืฉืœื‘ื™ื ื›ืš ืฉืชื•ื›ืœ ืœืคืจื•ืก ืจืง ื™ื™ืฉื•ืžื™ื ืžื”ื•ื“ืจื™ื ื•ืœื ืืช ื”ืžืงื•ืจื•ืช ื”ื ืœื•ื•ื™ื.

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

  1. ืขื•ืžืก ืจืฉืช ืžื•ืคื—ืช ืขืœ ื”ืืฉื›ื•ืœ ื›ื•ืœื•.

  2. ื–ืžืŸ ื”ื”ืคืขืœื” ืฉืœ ืžื™ื›ืœ ื”ืงื˜ืŸ.

  3. ื’ื•ื“ืœ ืงื˜ืŸ ื™ื•ืชืจ ืฉืœ ื›ืœ ื”ืจื™ืฉื•ื ืฉืœ Docker ืฉืœืš.

4. ื”ืฉืชืžืฉ ื‘ืžื˜ืžื•ืŸ DNS

ืชืฉืขื” ื˜ื™ืคื™ื ืœื‘ื™ืฆื•ืขื™ื ืฉืœ Kubernetes

ืื ืื ื—ื ื• ืžื“ื‘ืจื™ื ืขืœ ืขื•ืžืกื™ื ื’ื‘ื•ื”ื™ื, ืื– ื‘ืœื™ ืœื›ื•ื•ืŸ ืืช ืžืขืจื›ืช ื”-DNS ืฉืœ ื”ืืฉื›ื•ืœ, ื”ื—ื™ื™ื ื“ื™ ืขืœื•ื‘ื™ื. ืคืขื, ืžืคืชื—ื™ Kubernetes ืชืžื›ื• ื‘ืคืชืจื•ืŸ kube-dns ืฉืœื”ื. ื”ื™ื ื™ื•ืฉืžื” ื’ื ื‘ืืจืฆื ื•, ืืš ื”ืชื•ื›ื ื” ื”ื–ื• ืœื ื”ืชื›ื•ื•ื ื ื” โ€‹โ€‹ื‘ืžื™ื•ื—ื“ ื•ืœื ื ืชื ื” ืืช ื”ื‘ื™ืฆื•ืขื™ื ื”ื ื“ืจืฉื™ื, ืื ื›ื™, ื›ืš ื ืจืื”, ื”ืžืฉื™ืžื” ืคืฉื•ื˜ื”. ื•ืื– ื”ื•ืคื™ืขื• coredns, ืืœื™ื”ื ืขื‘ืจื ื• ื•ืœื ื™ื“ืขื ื• ืฆืขืจ, ืžืื•ื—ืจ ื™ื•ืชืจ ื–ื” ื”ืคืš ืœืฉื™ืจื•ืช ื”-DNS ื‘ืจื™ืจืช ื”ืžื—ื“ืœ ื‘-K8s. ื‘ืฉืœื‘ ืžืกื•ื™ื, ื’ื“ืœื ื• ืœ-40 ืืœืฃ rps ืœืžืขืจื›ืช ื”-DNS, ื•ื’ื ื”ืคืชืจื•ืŸ ื”ื–ื” ืœื ื”ืกืคื™ืง. ืื‘ืœ, ื‘ืžืงืจื” ืžื–ืœ, Nodelocaldns ื™ืฆื, ื”ืœื ื”ื•ื ืžื˜ืžื•ืŸ ืžืงื•ืžื™ ืฉืœ ืฆื•ืžืช, aka NodeLocal DNSCache.

ืœืžื” ืื ื—ื ื• ืžืฉืชืžืฉื™ื ื‘ื–ื”? ื™ืฉ ื‘ืื’ ื‘ืœื™ื‘ืช ื”ืœื™ื ื•ืงืก ืฉื›ืืฉืจ ื’ื™ืฉื” ืžืจื•ื‘ืช ื“ืจืš conntrack NAT ืขืœ UDP, ืžื•ื‘ื™ืœื” ืœืชื ืื™ ืžื™ืจื•ืฅ ืœื›ืชื™ื‘ื” ืœื˜ื‘ืœืื•ืช conntrack, ื•ื—ืœืง ืžื”ืชื ื•ืขื” ื“ืจืš NAT ืื•ื‘ื“ืช (ื›ืœ ื ืกื™ืขื” ื“ืจืš ื”ืฉื™ืจื•ืช ื”ื™ื NAT). Nodelocaldns ืคื•ืชืจ ื‘ืขื™ื” ื–ื• ืขืœ ื™ื“ื™ ื”ื™ืคื˜ืจื•ืช ืž-NAT ื•ืฉื“ืจื•ื’ ืงื™ืฉื•ืจื™ื•ืช TCP ืœ-DNS ื‘ืžืขืœื” ื”ื–ืจื, ื›ืžื• ื’ื ืื—ืกื•ืŸ ื‘ืžื˜ืžื•ืŸ ืฉืœ ืฉืื™ืœืชื•ืช DNS ื‘ืžืขืœื” ื”ื–ืจื ื‘ืื•ืคืŸ ืžืงื•ืžื™ (ื›ื•ืœืœ ืžื˜ืžื•ืŸ ืฉืœื™ืœื™ ืงืฆืจ ืฉืœ 5 ืฉื ื™ื•ืช).

5. ืงื ื” ืžื™ื“ื” ืฉืœ ืชืจืžื™ืœื™ื ืื•ืคืงื™ืช ื•ืื ื›ื™ืช ื‘ืื•ืคืŸ ืื•ื˜ื•ืžื˜ื™

ืชืฉืขื” ื˜ื™ืคื™ื ืœื‘ื™ืฆื•ืขื™ื ืฉืœ Kubernetes

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

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

ืชืฉืขื” ื˜ื™ืคื™ื ืœื‘ื™ืฆื•ืขื™ื ืฉืœ Kubernetesื”ืชืžื•ื ื” ื ืœืงื—ื” ืž-https://levelup.gitconnected.com/kubernetes-autoscaling-101-cluster-autoscaler-horizontal-pod-autoscaler-and-vertical-pod-2a441d9ad231

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

ืœื“ื•ื’ืžื”, ืœื”ืœืŸ ื”ื’ื“ืจื•ืช ื”ืคื•ื“ ื”ืื•ืคื™ื™ื ื™ื•ืช:

resources:
   requests:
     memory: 250Mi
     cpu: 200m
   limits:
     memory: 500Mi
     cpu: 350m

ืžื ื•ืข ื”ื”ืžืœืฆื•ืช ืงื•ื‘ืข ืฉื”ืืคืœื™ืงืฆื™ื” ืฉืœืš ื–ืงื•ืงื” ืœ-300 ืžื˜ืจ ืžืขื‘ื“ ื•-500Mi ื›ื“ื™ ืœืคืขื•ืœ ื›ื”ืœื›ื”. ืชืงื‘ืœ ืืช ื”ื”ื’ื“ืจื•ืช ื”ื‘ืื•ืช:

resources:
   requests:
     memory: 500Mi
     cpu: 300m
   limits:
     memory: 1000Mi
     cpu: 525m

ื›ืคื™ ืฉื”ื•ื–ื›ืจ ืœืขื™ืœ, ื–ื”ื• ืงื ื” ืžื™ื“ื” ืคืจื•ืคื•ืจืฆื™ื•ื ืœื™ ื”ืžื‘ื•ืกืก ืขืœ ื™ื—ืก ื”ื‘ืงืฉื•ืช/ื”ื’ื‘ืœื•ืช ื‘ืžื ื™ืคืกื˜:

  • CPU: 200m โ†’ 300m: ื™ื—ืก 1:1.75;

  • ื–ื™ื›ืจื•ืŸ: 250Mi โ†’ 500Mi: ื™ื—ืก ืฉืœ 1:2.

ื‘ื™ื—ืก HPA, ืื– ืžื ื’ื ื•ืŸ ื”ืคืขื•ืœื” ืฉืงื•ืฃ ื™ื•ืชืจ. ืขืจื›ื™ ืกืฃ ืžื•ื’ื“ืจื™ื ืขื‘ื•ืจ ืžื“ื“ื™ื ื›ื’ื•ืŸ ืžืขื‘ื“ ื•ื–ื™ื›ืจื•ืŸ, ื•ืื ื”ืžืžื•ืฆืข ืฉืœ ื›ืœ ื”ื”ืขืชืงื™ื ืขื•ื‘ืจ ืืช ื”ืกืฃ, ืื–ื™ ื”ื™ื™ืฉื•ื ืžืฉืชื ื” ืœืคื™ +1 pod ืขื“ ืฉื”ืขืจืš ื™ื•ืจื“ ืžืชื—ืช ืœืกืฃ, ืื• ืขื“ ืฉืžื’ื™ืขื™ื ืœืžืกืคืจ ื”ืžืจื‘ื™ ืฉืœ ื”ืขืชืงื™ื.

ืชืฉืขื” ื˜ื™ืคื™ื ืœื‘ื™ืฆื•ืขื™ื ืฉืœ Kubernetesื”ืชืžื•ื ื” ื ืœืงื—ื” ืž-https://levelup.gitconnected.com/kubernetes-autoscaling-101-cluster-autoscaler-horizontal-pod-autoscaler-and-vertical-pod-2a441d9ad231

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

6. ืืœ ืชืฉื›ื— ืขืœ ื–ื™ืงื” ืœืฆื•ืžืช ื•ื–ื™ืงืช โ€‹โ€‹ืคื•ื“

ืชืฉืขื” ื˜ื™ืคื™ื ืœื‘ื™ืฆื•ืขื™ื ืฉืœ Kubernetes

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

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

ื ื ื™ื— ืฉื™ืฉ ืœืš ืฉื ื™ ืฆืžืชื™ื: ืื—ื“ ืขื CPUType=HIGHFREQ ื•ืžืกืคืจ ืจื‘ ืฉืœ ืœื™ื‘ื•ืช ืžื”ื™ืจื•ืช, ืื—ืจ ืขื MemoryType=HIGHMEMORY ื™ื•ืชืจ ื–ื™ื›ืจื•ืŸ ื•ื‘ื™ืฆื•ืขื™ื ืžื”ื™ืจื™ื ื™ื•ืชืจ. ื”ื“ืจืš ื”ืงืœื” ื‘ื™ื•ืชืจ ื”ื™ื ืœื”ืงืฆื•ืช ืคืจื™ืกืช ืคื•ื“ ืœืฆื•ืžืช HIGHFREQืขืœ ื™ื“ื™ ื”ื•ืกืคื” ืœืžื“ื•ืจ spec ื‘ื•ืจืจ ื›ื–ื”:

โ€ฆ
nodeSelector:
	CPUType: HIGHFREQ

ื“ืจืš ื™ืงืจื” ื•ืกืคืฆื™ืคื™ืช ื™ื•ืชืจ ืœืขืฉื•ืช ื–ืืช ื”ื™ื ืœื”ืฉืชืžืฉ nodeAffinity ื‘ืชื—ื•ื affinity ืกืขื™ืฃ spec. ื™ืฉื ืŸ ืฉืชื™ ืืคืฉืจื•ื™ื•ืช:

  • requiredDuringSchedulingIgnoredDuringExecution: ื”ื’ื“ืจื” ืงืฉื” (ืžืชื–ืžืŸ ื™ืคืจื•ืก ืชืจืžื™ืœื™ื ืจืง ื‘ืฆืžืชื™ื ืกืคืฆื™ืคื™ื™ื (ื•ืœื ื‘ืฉื•ื ืžืงื•ื ืื—ืจ));

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

ืืชื” ื™ื›ื•ืœ ืœืฆื™ื™ืŸ ืชื—ื‘ื™ืจ ืกืคืฆื™ืคื™ ืœื ื™ื”ื•ืœ ืชื•ื•ื™ื•ืช ืฆื•ืžืช, ืœืžืฉืœ, In, NotIn, Exists, DoesNotExist, Gt ืื• Lt. ืขื ื–ืืช, ื–ื›ืจื• ืฉืฉื™ื˜ื•ืช ืžื•ืจื›ื‘ื•ืช ื‘ืจืฉื™ืžื•ืช ืืจื•ื›ื•ืช ืฉืœ ืชื•ื•ื™ื•ืช ื™ืื˜ื• ืืช ืงื‘ืœืช ื”ื”ื—ืœื˜ื•ืช ื‘ืžืฆื‘ื™ื ืงืจื™ื˜ื™ื™ื. ื‘ืžื™ืœื™ื ืื—ืจื•ืช, ืืœ ืชืกื‘ืš ื™ืชืจ ืขืœ ื”ืžื™ื“ื”.

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

ะ’ podAffinity ืฉื“ื•ืช affinity ืกืขื™ืฃ spec ืื•ืชื ืฉื“ื•ืช ื–ืžื™ื ื™ื ื›ืžื• ื‘ืžืงืจื” ืฉืœ nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution ะธ preferredDuringSchedulingIgnoredDuringExecution. ื”ื”ื‘ื“ืœ ื”ื™ื—ื™ื“ ื”ื•ื ื–ื” matchExpressions ื™ืงืฉื•ืจ ืชืจืžื™ืœื™ื ืœืฆื•ืžืช ืฉื›ื‘ืจ ืžืจื™ืฅ ืคื•ื“ ืขื ื”ืชื•ื•ื™ืช ื”ื–ื•.

More Kubernetes ืžืฆื™ืขื” ืชื—ื•ื podAntiAffinity, ืืฉืจ, ืœืขื•ืžืช ื–ืืช, ืื™ื ื• ืงื•ืฉืจ ืคื•ื“ ืœืฆื•ืžืช ืขื ืชืจืžื™ืœื™ื ืกืคืฆื™ืคื™ื™ื.

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

7. ื›ืชืžื™ื ื•ืกื•ื‘ืœื ื•ืช

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

ืžื ื’ื ื•ืŸ ื”ื›ืชืžื™ื - ื—ื•ืงื™ื ืื•ืกืจื™ื - ืขื•ื–ืจ ื‘ื›ืš. ืœื“ื•ื’ืžื”, ืืชื” ื™ื›ื•ืœ ืœืžื ื•ืข ืžืฆืžืชื™ื ืžืกื•ื™ืžื™ื ืœื”ืคืขื™ืœ ืคื•ื“ื™ื ื‘ืชืจื—ื™ืฉื™ื ืžืกื•ื™ืžื™ื. ื›ื“ื™ ืœื”ื—ื™ืœ ื’ื•ื•ืŸ ืขืœ ืฆื•ืžืช ืกืคืฆื™ืคื™, ื”ืฉืชืžืฉ ื‘ืืคืฉืจื•ืช taint ื‘- kubectl. ืฆื™ื™ืŸ ืžืคืชื— ื•ืขืจืš ื•ืœืื—ืจ ืžื›ืŸ ื›ืชืฃ ื›ืžื• NoSchedule ืื• NoExecute:

$ kubectl taint nodes node10 node-role.kubernetes.io/ingress=true:NoSchedule

ืจืื•ื™ ื’ื ืœืฆื™ื™ืŸ ืฉืžื ื’ื ื•ืŸ ื”ื”ื›ืชืžื” ืชื•ืžืš ื‘ืฉืœื•ืฉ ื”ืฉืคืขื•ืช ืขื™ืงืจื™ื•ืช: NoSchedule, NoExecute ะธ PreferNoSchedule.

  • NoSchedule ืื•ืžืจ ืฉืขื“ ืฉื™ื”ื™ื” ืขืจืš ืžืชืื™ื ื‘ืžืคืจื˜ ื”ืคื•ื“ tolerations, ืœื ื ื™ืชืŸ ืœืคืจื•ืก ืื•ืชื• ืœืฆื•ืžืช (ื‘ื“ื•ื’ืžื” ื–ื• node10).

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

  • NoExecute - ืืคืงื˜ ื–ื” ืžืคืขื™ืœ ืคื™ื ื•ื™ ืžื™ื™ื“ื™ ืฉืœ ืชืจืžื™ืœื™ื ืฉืื™ืŸ ืœื”ื ืขืจืš ืชื•ืื tolerations.

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

ื›ืš ื™ื™ืจืื” ืžืคืจื˜ ื”ืคื•ื“:

spec:
   tolerations:
     - key: "node-role.kubernetes.io/ingress"
        operator: "Equal"
        value: "true"
        effect: "NoSchedule"

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

8. ื”ื’ื“ืจ ืขื“ื™ืคื•ืช ืคืจื™ืกืช ืชืจืžื™ืœื™ื

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

Kubernetes ืžืฆื™ืขื” ื“ืจื›ื™ื ืฉื•ื ื•ืช ืœื”ื’ื“ื™ืจ ืขื“ื™ืคื•ืช ื•-Preemption ืฉืœ Pod. ื”ื”ื’ื“ืจื” ืžื•ืจื›ื‘ืช ืžื›ืžื” ื—ืœืงื™ื: ืื•ื‘ื™ื™ืงื˜ PriorityClass ื•ืชื™ืื•ืจื™ ืฉื“ื•ืช priorityClassName ื‘ืžืคืจื˜ ื”ืชืจืžื™ืœ. ืฉืงื•ืœ ื“ื•ื’ืžื”:

apiVersion: scheduling.k8s.io/v1
kind: PriorityClass
metadata:
  name: high-priority
value: 99999
globalDefault: false
description: "This priority class should be used for very important pods only"

ืื ื—ื ื• ื™ื•ืฆืจื™ื PriorityClass, ืชืŸ ืœื• ืฉื, ืชื™ืื•ืจ ื•ืขืจืš. ื”ื’ื‘ื•ื” ื™ื•ืชืจ value, ื›ื›ืœ ืฉื”ืขื“ื™ืคื•ืช ื’ื‘ื•ื”ื” ื™ื•ืชืจ. ื”ืขืจืš ื™ื›ื•ืœ ืœื”ื™ื•ืช ื›ืœ ืžืกืคืจ ืฉืœื ืฉืœ 32 ืกื™ื‘ื™ื•ืช ืงื˜ืŸ ืื• ืฉื•ื•ื” ืœ-1. ืขืจื›ื™ื ื’ื‘ื•ื”ื™ื ื™ื•ืชืจ ืฉืžื•ืจื™ื ืœืชืจืžื™ืœื™ื ืฉืœ ืžืขืจื›ืช ืงืจื™ื˜ื™ื™ื ืœืžืฉื™ืžื”, ืฉื‘ื“ืจืš ื›ืœืœ ืœื ื ื™ืชืŸ ืœื”ืงื“ื™ื ืื•ืชื. ื”ืคื™ื ื•ื™ ื™ืชืจื—ืฉ ืจืง ืื ืœืชืจืžื™ืœ ื”ืขื“ื™ืคื•ืช ื”ื’ื‘ื•ื”ื” ืื™ืŸ ืœืืŸ ืœื”ืกืชื•ื‘ื‘, ืื– ื—ืœืง ืžื”ืคื•ื“ื™ื ืžืฆื•ืžืช ืžืกื•ื™ื ื™ืคื•ื ื•. ืื ื”ืžื ื’ื ื•ืŸ ื”ื–ื” ื ื•ืงืฉื” ืžื“ื™ ื‘ืฉื‘ื™ืœืš, ืื– ืืชื” ื™ื›ื•ืœ ืœื”ื•ืกื™ืฃ ืืช ื”ืืคืฉืจื•ืช preemptionPolicy: Never, ื•ืื– ืœื ืชื”ื™ื” ืžืงื“ืžื”, ื”ืคื•ื“ ื™ื”ื™ื” ื”ืจืืฉื•ืŸ ื‘ืชื•ืจ ื•ื™ืžืชื™ืŸ ืœืžืชื–ืžืŸ ื›ื“ื™ ืœืžืฆื•ื ืขื‘ื•ืจื• ืžืฉืื‘ื™ื ืคื ื•ื™ื™ื.

ืœืื—ืจ ืžื›ืŸ, ืื ื• ื™ื•ืฆืจื™ื ืชืจืžื™ืœ, ืฉื‘ื• ืื ื• ืžืฆื™ื™ื ื™ื ืืช ื”ืฉื priorityClassName:

apiVersion: v1
kind: Pod
metadata:
  name: static-web
  labels:
    role: myrole
 spec:
  containers:
    - name: web
      image: nginx
      ports:
        - name: web
          containerPort: 80
          protocol: TCP
  priorityClassName: high-priority
          

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

ื›ืš, ื‘ืžื™ื“ืช ื”ืฆื•ืจืš, ืชื•ื›ืœ ืœื”ื’ื‘ื™ืจ ืืช ื”ื™ืขื™ืœื•ืช ืฉืœ ืคืจื™ืกืช ืฉื™ืจื•ืชื™ื ืงืจื™ื˜ื™ื™ื, ื›ื’ื•ืŸ nginx-ingress-controller, coredns ื•ื›ื•'.

9. ื‘ืฆืข ืื•ืคื˜ื™ืžื™ื–ืฆื™ื” ืฉืœ ืืฉื›ื•ืœ ื”-ETCD ืฉืœืš

ืชืฉืขื” ื˜ื™ืคื™ื ืœื‘ื™ืฆื•ืขื™ื ืฉืœ Kubernetes

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

ืชืฉืขื” ื˜ื™ืคื™ื ืœื‘ื™ืฆื•ืขื™ื ืฉืœ Kubernetes

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

ืื ืื ื—ื ื• ืžื“ื‘ืจื™ื ืขืœ ื”ื’ื“ืจืช ื”ืฉื™ืจื•ืช, ืื– ื™ืฉ ื›ืžื” ื”ืžืœืฆื•ืช:

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

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

ืžืกืงื ื”

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

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