ืฉืืื ืืืืื! ืฉืื ืืืื ืกืืืืจื ืงืื, ืื ื ืขืืื ื-DomClick ืืจืืฉ ืฆืืืช ืชืฉืชืืช. ืื ืื ื ืืฉืชืืฉืื ืืงืืืืื ืืืืืจื ืืืจ ืืืชืจ ืืฉืืืฉ ืฉื ืื, ืืืืืื ืืืื ืืื ืืืืื ื ืืืชื ืืจืื ืจืืขืื ืืขื ืืื ืื ืืฉืื ืื. ืืืื ืื ื ืืืื ืื ืืื, ืขื ืืืืฉื ืื ืืื ื, ืืชื ืืืื ืืกืืื ืขืื ืืืชืจ ืืืฆืืขืื ืืงืืืจื ืืก ืื ืื ืขืืืจ ืืืฉืืื ืฉืื. ืืืืื ืืื ืฆื!
ืืืืื ืืืืขืื ืืืื ืฉ-Kubernetes ืืื ืืขืจืืช ืงืื ืคืชืื ื ืืชื ืช ืืืจืืื ืืชืืืืจ ืงืื ืืืื ืจืื; ืืืื, ืื 5 ืงืืฆืื ืืื ืืจืืื ืฉืขืืฉืื ืงืกืืื ืขื ืืื ื ืืืื ืืืืืจ ืืืืื ืฉื ืฉืืจืืชื ืืืืงืจื ืฉืื ืืกืืืืช ืฉืจืช. ืื ืืกืฃ, ืืืืืจ ืืืื ืืืืฉ ืืืื ืฉื ืืชื ืืืจืืื ืืื ืื ืื ืืื ืืืชืืื ืืืฉืืช ืืืจืืืช ืืืฉืืืืช ืฉืื ืืช.
ืื ืจืื ืฉืืื ืืกืืจ: ืืืจืืง ืฉืจืชืื ืืืฉืืื, ืืื ืขืฆื ืืกืงื ืืชืื ืชื ืืฉ, ืืื ืืืขืช ืฆืขืจ. ืืื ืื ืืชื ืืขื ืืกืืืื, ืื ืืชื ืชืืฉืื: "ืืื ืื ื ืืืื ืืฉืืืจ ืขื ืืืฉ ืืชื ืืจ ืืืืฆืืขืจ ืขื ืืืขืจ?". ืืืืืื ืืืจืืช, ืืื ืืืฆืื ืืจืืื ืืฉืคืจ ืชืฉืชืืืช ืืืืคืืืช ืขืืืืืช.
1. ืขืงืื ืืืจ ืืฉืืื ืืฆืืืช ืืืืคืืืงืฆืื
ืืืช ืืฉืืืืช ืืื ืืืืืช ืื ืืืขืืืืช ืืืืชืจ ืืื ืืื ืกืช ืืงืฉืืช/ืืืืืืช. ืืคืจื ืืืฉืืืื ืืคื ืืจืืื ืฉืืืช, ืืืจืืื ืฉืืืช ืืคื ืฆืืืชื ืคืืชืื. ืืืืจ ืืช ืืืคืืืงืฆืื ืืคื ื ืคืจืืกืช ืขืจืืื ืืฆืจืืืช ืืื ืืขืื, ืืืืจืื, ืืืกืื ืืจืข.
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. ืื ื ืืงืืื ืฉืืฃ ืืื ืื ืืฉืชืืฉ ื-"Cube" ื-HDD ืืืืฆืืจ, ืืื ืืคืขืืื ืืคืืื SSD ืจืืื ืืืจ ืื ืืกืคืืง. ืืชืืืืื ื ืขื ืืขืื ืืื ืฉืืืืืื ืืืจืืื ืืช ืืืืกืง ืขื ืืื ืคืขืืืืช I/O, ืืืื ืืื ืืจืื ืคืชืจืื ืืช:
-
ืืฉืชืืฉ ืืืื ื ื SSD ืืขืื ืืืฆืืขืื ืืืืืื ืื ืขืืืจ ื-NVMe (ืื ืืชื ืื ืื ืืช ืืืืืจื ืฉืื).
-
ืืืจื ืืช ืจืืช ืืจืืฉืื.
-
ืขืฉื ืืืืื "ืืื" ืฉื ืชืจืืืืื ืฉืืื ืกืื ืืช ืืืืกืง (
podAntiAffinity
).
ืฆืืืื ืืืกื ืฉืืืขืื ืืจืื ืื ืงืืจื ืชืืช nginx-ingress-controller ืขื ืืืกืง ืืืฉืจ ืจืืฉืื access_logs ืืืคืขื (~12k ืืืื ืื/ืฉื ืืื). ืืฆื ืืื, ืืืืื, ืืืื ืืืืืื ืืคืืืขื ืืื ืืืืฉืืืื ืืฆืืืช ืื.
ืืืื PV, ืืืื, ืื ื ืืกืืชื ืืื.
3. ืื ื ืชืืื ืืช ืืืชืืืืช
ืขืืืฃ ืืืฉืชืืฉ ืืชืืื ืืช ืืืชืืืืช ืืืืื ืืื ืฉ-Kubernetes ืืืื ืืืืื ืืืชื ืืืจ ืืืชืจ ืืืืฆืข ืืืชื ืืืขืืืืช ืจืื ืืืชืจ.
ืืืคืืืืืืฆืื ืคืืจืืฉื ืฉืชืืื ืืช:
-
ืืืืื ืจืง ืืืฉืื ืืื ืื ืืืฆืข ืจืง ืคืื ืงืฆืื ืืืช;
-
ืืืื ืงืื, ืืืืืื ืฉืชืืื ืืช ืืืืืืช ืืืขืืจืืช ืืฆืืจื ืืจืืขื ืืืชืจ ืืจื ืืจืฉืช;
-
ืืฉ ื ืงืืืืช ืงืฆื ืืจืืืืช ืืืืื ืืช ืฉืืื Kubernetes ืืืืื ืืืฉืชืืฉ ืืื ืื ืงืื ืืคืขืืื ืืืงืจื ืฉื ืืฉืืชื;
-
ืืฉืชืืฉ ืืืขืจืืืช ืืคืขืื ืืืืืืชืืืช ืืืืื (ืืื Alpine ืื CoreOS) ืขืืืืืช ืืืชืจ ืืคื ื ืฉืืืืืช ืชืฆืืจื;
-
ืืฉืชืืฉ ืืื ืืื ืืจืืื ืฉืืืื ืื ืฉืชืืื ืืคืจืืก ืจืง ืืืฉืืืื ืืืืืจืื ืืื ืืช ืืืงืืจืืช ืื ืืืืื.
ืืฉื ื ืืืื ืืฉืืจืืชืื ืจืืื ืืืืคืฉืจืื ืื ืืืืืง ืืืืืขื ืชืืื ืืช ืชืื ืืื ืชื ืืขื. ืืฉืื ืืฉืืืจ ืืืชื ืชืืื ืืขืืืื ืื ืืืืืืื. ืืชืืฆืื ืืื, ืืชื ืืงืื:
-
ืขืืืก ืจืฉืช ืืืคืืช ืขื ืืืฉืืื ืืืื.
-
ืืื ืืืคืขืื ืฉื ืืืื ืืงืื.
-
ืืืื ืงืื ืืืชืจ ืฉื ืื ืืจืืฉืื ืฉื Docker ืฉืื.
4. ืืฉืชืืฉ ืืืืืื DNS
ืื ืื ืื ื ืืืืจืื ืขื ืขืืืกืื ืืืืืื, ืื ืืื ืืืืื ืืช ืืขืจืืช ื-DNS ืฉื ืืืฉืืื, ืืืืื ืื ืขืืืืื. ืคืขื, ืืคืชืื Kubernetes ืชืืื ืืคืชืจืื kube-dns ืฉืืื. ืืื ืืืฉืื ืื ืืืจืฆื ื, ืื ืืชืืื ื ืืื ืื ืืชืืืื ื ื โโืืืืืื ืืื ื ืชื ื ืืช ืืืืฆืืขืื ืื ืืจืฉืื, ืื ืื, ืื ื ืจืื, ืืืฉืืื ืคืฉืืื. ืืื ืืืคืืขื coredns, ืืืืื ืขืืจื ื ืืื ืืืขื ื ืฆืขืจ, ืืืืืจ ืืืชืจ ืื ืืคื ืืฉืืจืืช ื-DNS ืืจืืจืช ืืืืื ื-K8s. ืืฉืื ืืกืืื, ืืืื ื ื-40 ืืืฃ rps ืืืขืจืืช ื-DNS, ืืื ืืคืชืจืื ืืื ืื ืืกืคืืง. ืืื, ืืืงืจื ืืื, Nodelocaldns ืืฆื, ืืื ืืื ืืืืื ืืงืืื ืฉื ืฆืืืช, aka
ืืื ืื ืื ื ืืฉืชืืฉืื ืืื? ืืฉ ืืื ืืืืืช ืืืื ืืงืก ืฉืืืฉืจ ืืืฉื ืืจืืืช ืืจื conntrack NAT ืขื UDP, ืืืืืื ืืชื ืื ืืืจืืฅ ืืืชืืื ืืืืืืืช conntrack, ืืืืง ืืืชื ืืขื ืืจื NAT ืืืืืช (ืื ื ืกืืขื ืืจื ืืฉืืจืืช ืืื NAT). Nodelocaldns ืคืืชืจ ืืขืื ืื ืขื ืืื ืืืคืืจืืช ื-NAT ืืฉืืจืื ืงืืฉืืจืืืช TCP ื-DNS ืืืขืื ืืืจื, ืืื ืื ืืืกืื ืืืืืื ืฉื ืฉืืืืชืืช DNS ืืืขืื ืืืจื ืืืืคื ืืงืืื (ืืืื ืืืืื ืฉืืืื ืงืฆืจ ืฉื 5 ืฉื ืืืช).
5. ืงื ื ืืืื ืฉื ืชืจืืืืื ืืืคืงืืช ืืื ืืืช ืืืืคื ืืืืืืื
ืืื ืืชื ืืืื ืืืืจ ืืืืืืื ืฉืื ืฉืืจืืชื ืืืืงืจื ืฉืื ืืืื ืื ืืขืืืื ืฉื ืคื ืฉื ืืื ืขื ืคื ืฉืืืฉื ืืขืืืก? ืืืฆื ืืืงืฆืืช ืืฉืืืื ื ืืื ืืืืฉืืืื ืฉืื? ืฉืืืจื ืขื ืืื ืคืืืื ืคืืขืืื ืืขืืจ ืืขืืืก ืืขืืืื ืขืืืื ืืืืืช ืืืืชืจืช, ืืฉืืืจื ืขืืืื ืื ืื ืื ืืกืื ืช ืืฉืืชื ืืชืืฆืื ืืืืืื ืคืชืืืื ืืชื ืืขื ืืฉืืจืืช. ืืืฆืขื ืืืื ืขืืืจ ืืืฉืื ืืช ืืืฉ ืืืคื ืฉืืจืืชืื ืืืื
VPA ืืืคืฉืจ ืื ืืืขืืืช ืืืืืืืืช ืืช ืืืงืฉืืช/ืืืืืืช ืฉื ืืืืืืืช ืฉืื ืืชืจืืื ืขื ืกืื ืืฉืืืืฉ ืืคืืขื. ืืื ืื ืืืื ืืืืืช ืฉืืืืฉื? ืื ืืฉ ืื Pods ืฉืืกืืื ืืืฉืื ืื ื ืืชื ืืืจืืื ืืืชื ืืฆืืจื ืืืคืงืืช (ืืื ืื ืืืืจื ืืืื), ืื ืืชื ืืืื ืื ืกืืช ืืกืืื ืขื VPA ืฉืชืฉื ื ืืช ืืืฉืืืื ืฉืื. ืืชืืื ื ืฉืื ืืื ืืขืจืืช ืืืืฆืืช ืืืืืกืกืช ืขื ื ืชืื ืื ืืืกืืืจืืื ืืขืืื ืืื ื-metric-server, ืื ืฉืื ืืื ื ืจืืฆื ืืฉื ืืช ืืงืฉืืช/ืืืืืืช ืืืืืืืืช, ืืชื ืืืื ืคืฉืื ืื ืืจ ืืช ืืืฉืืืื ืืืืืืฆืื ืขืืืจ ืืงืื ืืืื ืจืื ืฉืื ืืืืฆืข ืืืคืืืืืืฆืื ืฉื ืืืืืจืืช ืืื ืืืกืื ืืืขืื ืืืืืืจืื ืืืฉืืื.
ืืชืืื ื ื ืืงืื ื-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 ืขื ืฉืืขืจื ืืืจื ืืชืืช ืืกืฃ, ืื ืขื ืฉืืืืขืื ืืืกืคืจ ืืืจืื ืฉื ืืขืชืงืื.
ืืชืืื ื ื ืืงืื ื-https://levelup.gitconnected.com/kubernetes-autoscaling-101-cluster-autoscaler-horizontal-pod-autoscaler-and-vertical-pod-2a441d9ad231
ืื ืืกืฃ ืืืืืื ืืจืืืืื ืืื CPU ืืืืืจืื, ืืชื ืืืื ืืืืืืจ ืกืคืื ืขื ืืืื Prometheus ืืืืชืืืื ืืืฉืืช ืฉืื ืืืขืืื ืืืชื ืื ืืชื ืืจืืืฉ ืฉืื ืืืจื ืืืืืืงืช ืืืืชืจ ืืงืืืข ืืชื ืืืชืืื ืืช ืืืืฉืื ืฉืื. ืืจืืข ืฉืืืคืืืงืฆืื ืชืชืืืฆื ืืชืืช ืืกืฃ ืืืืจื ืฉืฆืืื, HPA ืืชืืื ืืืงืืื ืืช ื-Pods ืืืกืคืจ ืืืื ืืืื ืฉื ืืขืชืงืื ืื ืขื ืฉืืขืืืก ืืขืืื ืืกืฃ.
6. ืื ืชืฉืื ืขื ืืืงื ืืฆืืืช ืืืืงืช โโืคืื
ืื ืื ืืฆืืชืื ืคืืขืืื ืขื ืืืชื ืืืืจื, ืืื ืื ืืคืืืื ืฆืจืืืื ืืืคืขืื ืืืฉืืืื ืขืชืืจื ืืืฉืื. 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 ืฉืื
ETCD ืืืื ืืืืงืจื ืืืื ืฉื ืื ืืืฉืืื. ืืฉืื ืืืื ืืฉืืืจ ืขื ืชืคืขืื ืืืืจ ืื ืืจืื ืืืืื, ืฉืื ืืืืจืืช ืืคืขืืืืช ื"ืงืืืื" ืชืืืื ืืื. ืคืชืจืื ืกืื ืืจืื ืืืื, ืืืืืชื ืืื, ืคืชืจืื ืืื ืืืื ืืืืืืง ืืฉืืื ETCD ืืฆืืชืื ืืจืืฉืืื ืืื ืืงืื ืืฉืืืื ืืื ืืืืืช ื-kube-apiserver. ืื ืื ืื ืืคืฉืจื, ืื ืืงื ืืช ื-ETCD ืงืจืื ืืื ืืืคืฉืจ, ืขื ืจืืื ืคืก ืืื ืืื ืืืฉืชืชืคืื. ืฉืืื ืื ืื ืืืื ืฆืืชืื ื-ETCD ืืืืืื ืืืคืื ืืื ื ืืง ืืืฉืืื.
ืงืื ืืืฉืืื ืฉืืืืื ืืืืื ืืืกืคืจ ืืืฉืชืชืคืื ืืืฉืืื ืืืื ืืืืืืจ ืืช ืกืืืื ืืช ืืชืงืืืช ืขื ืืฉืืื ืืืืฆืืขืื, ืืื ืฆืจืื ืืืืืช ืืืชืื ืืช.
ืื ืื ืื ื ืืืืจืื ืขื ืืืืจืช ืืฉืืจืืช, ืื ืืฉ ืืื ืืืืฆืืช:
-
ืืฉ ืืืืจื ืืืื, ืขื ืกืื ืืืื ืืืฉืืื (ืชืืื ืืงืจืื
ืืื ). -
ืืืื ื ืืื ืคืจืืืจืื ืื ืคืืืจืช ืืฉืืื ืืื ืืื DCs ืื ืืจืฉืช ืฉืื ืืืืกืงืื ืืฉืืืจืื ืืจืื ืื ืืจืฆืืช (ืชืืื ืืงืจืื
ืืื ).
ืืกืงื ื
ืืืืจ ืื ืืชืืจ ืืช ืื ืงืืืืช ืฉืืฆืืืช ืฉืื ื ืื ืกื ืืขืืื ืืื. ืื ืื ืชืืืืจ ืฉืื ืืืจ ืฉืื ืฉื ืคืขืืืืช, ืืื ืืคืฉืจืืืืช ืฉืืืืืืช ืืืืืช ืฉืืืืฉืืืช ืืื ืืืืขื ืืช ืืชืงืืจื ืฉื ืืฉืืื. ืืจืืจ ืฉืื ืืฉืืื ืืื ืืืืืื ืืืจืื ืฉืื, ืืคืชืจืื ืืช ืืืืื ืื ืืืืืื ืืืฉืชื ืืช ืืืื, ืื ืืืื ืืขื ืืื ืืงืื ืืื ืคืืืืง: ืืื ืืชื ืื ืืจ ืืช ืืฉืืื Kubernetes ืฉืื, ืืื ืืชื ืืฉืคืจ ืืช ืืืืฆืืขืื ืฉืื. ืฉืชืฃ ืืช ืืืืืื ืฉืื ืืชืืืืืช, ืืืื ืืขื ืืื ืืืขืช ืืช ืื.
ืืงืืจ: www.habr.com