αα½ααααΈβα’αααβααΆααα’ααααααΆ! ααααααααααααα»αααΊ Oleg Sidorenkov αααα»αααααΎααΆααα DomClick ααΆαααααΆααααα»αα αααααΆαα ααΆααααααααα ααΎαααΆαααααΎααααΆαα Kubik αα αααα»αααα·αααααα’ααααααααααΆα 3 ααααΆαααα αΎα α αΎααααα»αα’αα‘α»ααααααα ααΎαααΆααα½ααααααααΉααααααααΆαααα½αα±ααα αΆααα’αΆααααααααΆα αααΎαααΆαα½αααΆα ααααααααααα»αααΉαααααΆααα’αααααΈαααα ααΆαα½αααΉααα·ααΈααΆαααααααααααΉαααααΌα α’αααα’αΆα α ααααΆα αααααΎαααΆαααΆααααα αααΎαα ααααΈ vanilla Kubernetes αααααΆααα αααααααααα’αααα αααααβαααα½αβααΆβαα·α αα !
α’αααααΆααα’ααααααΆααΉααααΆαα αααΆααααΆ Kubernetes ααΊααΆαααααααααααααααΎαα αα αααα’αΆα ααααΎααΆαααααααΆαααΆααααααΆααααΆααααα ααα»αααΊαααα ααΆααΆααααααΎαααΆαα α¬αααααααααααααΈαα ααα½α 5 αααααααΎαααΆααααααααααααααααααααααααααΈαα·αααααααΆααααααΈααααΌααααα’ααααα αααα»αααα·ααΆααΆααααΆαααΈαααα ααΎαααΈααα ααΆααΊααΆα§ααααααααα’αΆα ααααααααΆααααα’αΆα ααααΌαααΆααααα»αα‘αΎαααΌα ααΆ Lego αααααΆααααΆαααααΌαααΆαααααα’αα·ααααΆαααααΆαααα·α αα ααΆαααααααα
α αΎαα’αααΈααααααααΆαα αΆααααΌα ααΆααα’α ααααααΆαααΈαααα αΌααα αααα»αα αααααααΌα ααΆα’α»αα αΌααα αααα»ααααα’ααααααΎα α αΎαα’αααααΉααα·αααΉαααΆαα»ααααααα½αααΆαα½αα‘αΎαα ααα»ααααβααααα·αβααΎβα’αααβααααΎβααΎααααΈβααα·ααααΆα α’αααβααΉαβαα·αβααΆβα βΒ«βααΎβαααα»αβα’αΆα βαααααΆβααααΎαβαααβααααβαααβααααβααΆβ? αααααΆαβαααβααααΎβαααα βααβαα·ααΈβααβαααα’βα αααααΆαα ααΆαααααααα αα·αβααΆααβαααααβααΆαβα αααΆαα
1. αααα½ααα·αα·ααααααα»α αα·αααααΆααααααα·ααΈ
αα·ααΈααΆααααααα½ααααα»αα αααααα·ααΈααΆαααααααΆαααααααα»α ααα»ααααααΆαααααα·αααααΆαααΊααΆαααααΆαα’αααΈααααΎ/ααααααααα αααα αααααααα·ααΈααα namespaces αα·α namespaces ααααααα»αα’αα·ααααααα αα»ααααααΆααα±ααααααΎααααΆαα αααααααααααααααα·ααΈαααααΆααααΆαααααΎααααΆαααααααααΆααααΎαααΆα α’αααα αα αΆα αα·αααΆααααα»ααα·ααααααΆααα
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
αα»αααααα αααααααααΆα namespace ααΌα αααααααα»ααα½ααα·αα’αΆα αααααααααααααΆαααΆααα’ααααα αααααααΆαααα
β ~ 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 α
ααααΆαααααααΆα pods αααααΉαααααΎααααΆαααααΈααΈααΌ 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 α αΎααα·αααΆααααααααααΆαα αααΎαααα
-
ααααΎ SSDs αααααΆαααααα·αααααΆαααααα α¬ααααΌααα NVMe (ααααα·αααΎα’αααααααααααααααααααΉαααααΆαααααα½αααααα’ααα)α
-
ααΆαααααααααααα·αααααΆαααΆααααΎα
-
ααααΎαααα»ααα "ααααΆααα" ααααααααααααααΎααΆα (
podAntiAffinity
).
α’ααααααααΆαααΎαααα αΆαααΈα’αααΈαααααΎαα‘αΎααα ααααα nginx-ingress-controller αα ααΆααααΆα αα ααααααααΆαα αΌαααααΎαααΆα logs ααααΌαααΆαααΎα (~12 ααΆαααααααα ααα»/αα·ααΆααΈ)α αααααααααααα’αΆα ααΆαα±ααααΆαααΆααα·α αα·ααααααααα·ααΈααΆααα’αααα ααΎααααΆαααααα
αααααΆαα PV, alas, αααα»ααα·αααΆαααααΆααΆαα’αααΈααααααααΆα
3. αααααΌαααΌαααΆααααααΆααααααα’
ααΆααΆααΆαααα’αααα»ααααα»αααΆαααααΎααΌαααΆαααααααααα’αα»αααΊααα ααΎααααΈα±αα Kubernetes α’αΆα ααΆααααα½αααΆααΆαααΏαααΆααα»α αα·αααααΎαααΆααα½αααΆααΆααααααΆαααααα·αααααΆαα
Optimized ααΆααααααΆααΌαααΆαα
-
ααΆααααααα·ααΈαααα½α α¬α’αα»αααααα»αααΆααααα½αα
-
ααα αααΌα ααΈαααααααΌαααΆαααααααΌαααΆααααααΌαααΆααααα’αΆααααααα ααΎαααααΆαα
-
ααΆαα ααα»α αααα αααααα»αααΆα αα·αααΆαααααααααα½ααααα’αα»ααααΆαα±αα Kubernetes ααααΎαααααααΆααααα»αααααΉαααα·ααΆαααααααΆαααααααααΆαα
-
ααααΎααααααααααααα·ααααα·ααΆααααααΆααααα½αααααΎαααα»ααα»αααΊααα (ααΌα ααΆ Alpine α¬ CoreOS) αααααΆαααΆααααααΉαααα α»ααααα»αααΆαααααααα ααΆααααααααα
-
ααααΎααΆααααααΎααα α»ααααΆααααΆα ααΌα ααααα’αααα’αΆα ααΆααα±ααααααΎαααααααα·ααΈαααααΆαα αααααααα»ααααα αα·ααααααααααααααααΆααααααΆαα½ααααααα
ααΆαα§ααααα αα·αααααΆααααααΆα αααΎααααα’αα»ααααΆαα±ααα’ααααααα½ααα·αα·ααα αα·ααααααΎαααααα·αααααΆαααΌαααΆαααααΆααα ααΆααΆαααΆααααααΆααααΆαααααα»αααΆααααααΆαα½αααΆα±ααααΆααααααααΆαα·α αα αα·αααααΎαααααααΎααααΈαα»ααααα·ααΆαα ααΆααααααα’αααααα½αααΆαα
-
ααΆαααααααααΆααααα»ααααααΆααα ααΎα αααααααΆααααΌαα
-
ααΆααααααααααααααΆα αΆααααααΎααα»αααΊαααα
-
ααα αααΌα ααΆαααααΆαα α»ααααααΈ Docker ααΆααααΌαααααα’αααα
4. ααααΎααααΆαααααααΆαα DNS
ααααα·αααΎααΎααα·ααΆαα’αααΈααΆααααα»αααααα αααααΈαα·αααΊα’αΆαααααααΆααααααα·αα
αΆαααΆα
ααααααααΌααααααααα DNS ααααα
ααααααααααα ααΆαααααα½α α’αααα’αα·αααααα Kubernetes ααΆαααΆαααααααααααααΆα kube-dns αααααα½αααα ααΆααααααΌαααΆαα’αα»αααααα
ααΈαααααααα ααα»αααααααααα·ααΈααααα·αααααΌαααΆαααααα½αααΆαα·ααα αα·ααα·αααα·αααααΎαααΆααααααααΌαααΆα αααααΈααΆααΆα αΆααααΌα
ααΆαα·α
αα
ααΆαααΆαααααααααα αααααΆαααα coredns ααΆααααα αΆααααα½α αααααΎαααααΌααα
α αΎααα·αααΆααα»ααααααα½α αααααααααΆααΆαααααΆαααΆααααΆ DNS ααααΆαααΎααα
αααα»α K8s α αα
α
ααα»α
ααααααΎαααΆαααΎαα‘αΎαααα 40 ααΆαα rps αα
αααααααα DNS α αΎααααααααααΆαααααααα·ααααααααααΆαααααα ααα»αααααααααααΆα Nodelocaldns ααΆαα
αααα aka node local cache, aka
α ααα»α’αααΈααΆαααΆααΎαααααΎααΆ? ααΆαααα α»ααα αααα»αααΊαααααΈαα»α ααααα ααααααααΆαα α α αααΎαααΆαααα NAT conntrack ααΎ UDP ααΆαα±ααααΆαααααααααααααΆααααααΆαααααααΆααααΆαα»αα αααα»αααΆααΆα conntrack α αΎααααααααα ααΆα αααΆαααα NAT ααααΌαααΆαααΆααααα (ααΆααααΆαααααΎααααΎαααΆααααααααΆααααααΊ NAT) α Nodelocaldns αααααααΆααααα αΆαααααααααα αΆαα NAT αα·αααα‘αΎαααααααΆααααααΆαααα TCP ααΎααααΈαααα αΌα DNS ααααΌα ααΆααΆααααααΆαα»ααααα½α DNS ααΆαααΎαααα»αααΌαααααΆα (αα½αααΆααααααΆαααααααΆααα’αα·αααααΆααααααα 5 αα·ααΆααΈ)α
5. ααααΎααΆαααααααΆα pods ααααααα·αααααααααααααααααααααα·
ααΎα’αααα’αΆα
αα·ααΆαααααααα»αα
α·αααααΆααααΆααΈααααΌααααα’αααααΆααα’ααααΆαααααααα½α
ααΆαααααααΆααααΆαααΎαα‘αΎαααΈααα
ααΈαααα? ααΎααααΎααΌα
ααααα
ααΎααααΈαααα
ααααααΆαα±ααααΆαααααΉαααααΌααα
αααααα·ααΈααααα’ααα? ααΆααααααΆααααΈαααΈαααααααΎαααΆαααΎαααΈααααα»αααΆαααΆαα’αΆα
ααΉααααααααΌαααΆαααα
ααα ααα»ααααααΆααααααΆααΆα±ααααααααααααααα·α ααααΎαααΆαα αΆαα·ααααααααααααΆααα
αΆαααΈααΆαααΎαα‘αΎαααααΆααααα
ααΆα
ααααα
ααΆααααααΆααααα ααααΆααααααΌα
ααΆ
VPA α’αα»ααααΆαα±ααα’ααααααααΎαααααΎ/αααααααααααα»αααααα’ααααααααααααααααααα·αα αααα»ααα α’αΆαααααααΎααΆαααααΎααααΆααααΆαααααααα ααΎααΆα’αΆα ααΆααααααααααααΆαααΌα ααααα ? ααααα·αααΎα’αααααΆαααααααα·αα’αΆα ααααΎααΆαααααααΆαααααααααα ααα»αααα½αα ααα½α (ααααα·ααα½αα±αααα»αα α·αααααΆαααααα»α) αααα’αααα’αΆα ααααΆααΆαααααααααΆαααααΆααααααΌαααααΆαααααααΆαα VPA α αααααααα·αααααααααΆααΊααΆααααααααααααΆααααααα’ααααΎαα·αααααααααααααα·ααΆααααα αα·ααα αα α»ααααααααΈ metric-server ααΌα ααααααααα·αααΎα’ααααα·αα ααααααΆααααααΌαααααΎ/αααααααααααααααααααααααα·αα α’αααα’αΆα ααΆαααΆαααααΆααααααΆαααααΆααααααΆαααα»αααΊαααααααα’ααα αα·ααααααΎαααααα·αααααΆαααΆααααααααΎααααΈαααααΆαα»α CPU αα·α ααΆαα αα αΆααα αααα»αα αααααα
ααΌαααΆαααΆαααααΈ https://levelup.gitconnected.com/kubernetes-autoscaling-101-cluster-autoscaler-horizontal-pod-autoscaler-and-vertical-pod-2a441d9ad231
αααααα·ααΈαααααααααα αααα»α Kubernetes αααααααα’ααααΎααααΎα α’αααΈααααααααα’αααααΆααααααααα ααΈααα α’αααααααααααααΉααααααααααααΆααααααααααααααααα’ααααΎααΆα ααααααααααααΊα αΆαααΆα ααααααΆαα cubelet ααΎααααΈαααααΈαααααΆααααΌααα·αααΎα α¬αααααΆαα pod α α αΎαα αΆααααΆααααΈαααΆαααΆααααααααααΆαααααα½ααααααΊαααααααααΎ VPA ααΉαααααΎααΆαααΆαα½αααΆα αα αααααΆαααα’αααααααΎααΆαααααααΆααααααα·ααΈαα½αααααα α’ααααααααααΌαα’αααΈαααααααΎαα½αααααΆα ααΎααΉαααΆαα’αααΈααΎαα‘αΎαα ααααααααααααααα? αααΆαααΆαααααααααααααΉαααααΌαααΆαααααΎααΆαααααααΆαααΆααααΆααΆααααααααα
α§ααΆα ααα ααΆαααααααααααΆααΆααααααααααααααΆα
resources:
requests:
memory: 250Mi
cpu: 200m
limits:
memory: 500Mi
cpu: 350m
αααΆαααΈαααααΆααααααααΆαααααα·ααΈααααα’αααααααΌαααΆααααΈααΈααΌ 300m αα·α 500Mi ααΎααααΈααααΎαααΆαααΆαααααΉαααααΌαα α’αααααΉαααα½αααΆαααΆααααααααΌα ααΆααααααα
resources:
requests:
memory: 500Mi
cpu: 300m
limits:
memory: 1000Mi
cpu: 525m
ααΌα αααααΆααααααΆααααΆαααΎ αααααΊααΆααΆαααααΎααΆαααααααΆαααΆααααΆααΆααααααααα’ααααΎαααΆααΆαααααααΎ/αααααααααααα»αααΆααααα αΆαα
-
CPU: 200m β 300m: αααΆααΆααα 1:1.75;
-
α’αααα αα αΆαα 250Mi β 500Mi: αααΆααΆααα 1:2 α
ααΆααααααΉα HPAαααααΆααααααααααΆαααααααα·ααααα·ααΆαααΆααααααΆααααααΆααΆαα ααΆαααααααΆαααΌα ααΆ CPU αα·αα’αααα αα αΆαααααΌαααΆαααααα·α α αΎαααααα·αααΎαααααααΆαααααΆαα ααααααΆααα’ααααΎαααΈααααα·αααααα αααααα·ααΈαααααααΌαααΆαααααΎααΆαααααααΆαααα +1 αααα αΌαααααααααααααΆααα α»ααααααααααα·α α¬αα αΌααααα ααα½αα’αα·ααααΆααααΆαα ααααααααΌαααΆαααΆααααα
ααΌαααΆαααΆαααααΈ https://levelup.gitconnected.com/kubernetes-autoscaling-101-cluster-autoscaler-horizontal-pod-autoscaler-and-vertical-pod-2a441d9ad231
ααααααααΈααΎαααααΆααααααααΆααΌα ααΆ CPU αα·αα’αααα αα αΆα α’αααα’αΆα αααααααααα·αααΎαααααΆααααααΆαααααα½αααααα’αααααΈ Prometheus α αΎαααααΎααΆαααΆαα½ααα½ααα ααααα·αααΎα’ααααα·αααΆαααααΆααΆαα ααα’α»ααααα αΆαααααΉαααααΌααααα»αα’αααΈαααααΆαααααααΌααααααααα ααααααα·ααΈααααα’αααα αα αααααααααααα·ααΈααΆααααααααΆααα ααΆααααααααααα·ααααααααααααΆααααααΆαα HPA ααΉαα αΆααααααΎαααααΎααΆαααααααΆα pods α α»ααααα ααα½αα’αααααααΆααααΆαα αααα α¬αα αΌααααααΆααααα»ααααααααΆαααααα·ααααααΆααααααΆααα
6. αα»αααααα α’αααΈ Node Affinity αα·α Pod Affinity
αα·αααααααααααααΆααααΆααα’ααααααΎαααΆαααΎαααααααΉαααΌα ααααΆαα α αΎααα·ααααααααΆααα’ααααααΌαααααΎαααΆααααααα·ααΈαααααΉαααα’ααααΎαα»αααααΌααααααααα Kubernetes α’αα»ααααΆαα±ααα’ααααααααα―αααααα nodes αα·α pods αααααααΎ Node Affinity ΠΈ ααΆααααα·αααααααΆααααααα.
ααααα·αααΎα’αααααΆαααααΆααααααααααα·αααααααΆααααααα·ααααα·ααΆααααααΉαααα’ααααΎαα»αααααΌααα ααααααααΆααααααα·αααααΆαα’αα·ααααΆ ααΆααΆααΆααααααΎααααα»αααΆαααααΆαααααααα·ααΈαα
ααααΆαααααααααΌαααααΆα ααΎααααΈααααΎααΌα
αααααααΌαααααΎ nodeSelector
ααΆαα½αααΉαααααΆαααααΆααα
α§αααΆααΆα’αααααΆαααααΆααααΈαα αα½αααΆαα½α CPUType=HIGHFREQ
αα·ααα½αα
ααα½αααααααααΌαααααΏαααΏα, αα½αααααααααααΆαα½α MemoryType=HIGHMEMORY
α’αααα
αα
αΆαααΆααααα
αααΎα αα·αααααΎαααΆαααΏαααΆααα»αα αααααααΆαααΆααααα½ααααα»αααΊαααααααΆαααΆαααααααΆααα
ααααΆαα HIGHFREQ
ααααααααααα
ααααα spec
α§αααααααααΎαααΎααααα
β¦
nodeSelector:
CPUType: HIGHFREQ
αα·ααΈβαααβααααβααΆα αα·αβααΆααααΆααβαααα»αβααΆαβααααΎβαααβαααβααΊβααααΌαβααααΎ nodeAffinity
αα
αααα»αααΆα affinity
Π°Π·Π΄Π΅Π»Π° spec
. ααΆααααααΎαααΈαα
-
requiredDuringSchedulingIgnoredDuringExecution
α ααΆααααααααΉα (αααααα·ααΈααααααααααΉαααΆαααααααΆα pods αααα ααΎααααΆααααΆααααΆαα (αα·ααααααααααααααααα)); -
preferredDuringSchedulingIgnoredDuringExecution
α ααΆααααααααα (αααααα·ααΈααααααααααΉαααααΆααΆαααΆαααααααΆααα ααΆααααααΆααααΆααααΆαα α αΎαααααα·αααΎααΆαααΆααα ααΆααΉαααααΆααΆαααΆαααααααΆααα ααΆααααααΆαααααααΆααααααΆαα)α
α’αααα’αΆα
αααααΆααααΆαααααααααααααΆααααΆαααααααΆααααΆααααααααααααααΆαααααΆαα ααΌα
ααΆ In
, NotIn
, Exists
, DoesNotExist
, Gt
α¬ Lt
. αααααΆαααΆαααΆααααα ααΌαα
αΆαααΆαα·ααΈααΆααααααααα»αααααααΆααα
αααα»ααααααΈαααααααααΆαααΉααααααααααΏααααα»αααΆααααααα
α
α·ααααααα»αααααΆαααΆααααααααααα αα
αααα»αααΆααααααααααααααααΆααΆα±ααααΆααααα
ααΌα αααααΆααααααΆααααΆαααΎ Kubernetes α’αα»ααααΆαα±ααα’ααααααααααΆααααα·αααααααΆααααααααα αα α»ααααααα αααβααΊ α’αααβα’αΆα βααααΎβα±ααβααααΆααβααΆβ pods ααΆααααΆααβααααΎααΆαβααΆαα½αβααααΆβααΉαβ pods αααααβαααβαααα»αβαααααβαααβα’αΆα βααααΎβααΆαβααΌα ααααΆβ (ααΆαααααααβααΉαβ clouds) α¬ nodes α
Π podAffinity
ααΆα affinity
Π°Π·Π΄Π΅Π»Π° spec
ααΆαααΌα
ααααΆααΊα’αΆα
ααααΆαααΌα
αα
αααα»αααααΈαα nodeAffinity
: requiredDuringSchedulingIgnoredDuringExecution
ΠΈ preferredDuringSchedulingIgnoredDuringExecution
. ααΆααα»αααααΆαααα½ααααααΊααΆ matchExpressions
ααΉαα
α pods αα
node ααααααα»αααααΎαααΆα pods ααΆαα½α label αααα
Kubernetes ααααααααααααααα½ααααααα podAntiAffinity
ααααααα»ααααα·α ααΆαα·αααααΆαααααααα
ααΉαααααΆαααααααΆαααααΆααααΆααααα
α’αααΈαααααα nodeAffinity
ααααΌααααΆαααΌα
ααααΆα’αΆα
ααααΌαααΆααααααα±ααα ααααΆααΆααααααΆα
αααΆααααΆαααα αα·αααα ααα»αααα αα»αααααΆααΆααααα»αααΎαααααααααααααααα
αααΆαααααα»αααααΆαα ααΆααΆααααα½αααΆαααααα»αααΆααααααΎαα
αααΆαααααααΉααα·αααααΌααααααααααααααα
ααααα αααααΎαααΆααααα»ααα·αα
αΆαααΆα
ααα
ααΎαααααα·ααΈαααααααα αα·αααΆαααααααααααΎαααΆαααΆααααΌαα
7. αα·αααα & ααΆαα’ααα±α
ααΆααα·ααΈαα½αααααααααααΎααααΈααααααααααααααα·ααΈααααααααα ααααα·αααΎα’αααααΆαα ααααααααααααΆαααααΆααααΆαααα αα·αααΈααααΌααααΆααΆααααΆααααα ααΆαα·αααΆααααΆαααΆαααααα»αααΆααα·αα’αα»ααααΆαα±αααααα½αα ααα½αααααΌαααΆαααΆαααα ααΎααααΆααααΆααααΆααα
ααααααΆαααααΆααα·αααα’αΆα - α
αααΆααα αΆαααΆαα - αα½ααααα»αααΏααααα ααΆα§ααΆα ααα αααα»αααααΆααΈαααΌαα½αα
ααα½α α’αααα’αΆα
α αΆαααΆααααααΆαααα½αα
ααα½αααΈααΆαααααΎαααΆαααα ααΎααααΈα’αα»ααααααααΆααααα‘αΆαααα
ααααΆααααΆααααΆαααα½α α’αααααααΌαααααΎαααααΎα taint
αα
kubectl α αααααΆααβαααααΉαβαα·αβαααααβα αΎαβαααααΆααβααβααΌα
βααΌα
βααΆβ NoSchedule
α¬ NoExecute
:
$ kubectl taint nodes node10 node-role.kubernetes.io/ingress=true:NoSchedule
αα½ααααααααΆαααααααααΆ ααααααΆαααααΆααααα‘αΆααααΆαααααααααααΆααααααΆαααα
ααα½αααΈα NoSchedule
, NoExecute
ΠΈ PreferNoSchedule
.
-
NoSchedule
ααΆααααααΆαααααΆααααααααααΉααα·αααΆαααΆαα»αααααααΌαααααΆαα αααα»αααΆααααααΆαα pod αααtolerations
ααΆβααΉαβαα·αβα’αΆα βααααΌαβααΆαβααβααΆααβαααααΆαβαα βααΎ node (αααα»αβα§ααΆα αααβαααnode10
). -
PreferNoSchedule
- ααααααΆααααNoSchedule
. αααα»αααααΈααα αααααα·ααΈααααααααααΉαααααΆααΆααα·ααααα αα pods ααααα·αααΆαααΆαα»αααααααΌαααααΆαtolerations
αααα»ααα½α node ααα»ααααααααα·ααααααΆααΆαααααααα·ααΆαααα ααααα·αααΎαα·αααΆαααααΆααα αααα»αα αααααααααα ααααααΉαα αΆααααααΎαααΆαααααααΆααα ααΎααααΆαααααα -
NoExecute
- α₯αααα·ααααααααα»αα±ααααΆαααΆαααααααααααΆααααααααααα·αααΆαααΆαα»αααααααΌαααααΆtolerations
.
αα½αα±ααα αΆααα’αΆαααααα α₯αα·ααΆαααααα’αΆα ααααΌαααΆααα»αα αααααααααΎααααααΆαα’ααα±αα ααΆααΆααααα½ααα ααααααααΆαααααΆαα "α αΆαααΆαα" α αΎαα’αααααααΆααααααααΌαααΆααααααΆα αααααΆαα ααΆαααααααααα ααΎααΆα ααΎααααΌαααααΎααΌα ααααα ? α’αα»ααααΆαβα±ααβααβαααααβααΆαααααβαααβααΆαβααΆαβα’ααα±αβααααααα
αααααΆα’αααΈαααααΆααααααΆαααααα pod ααΉαααΎααα α
spec:
tolerations:
- key: "node-role.kubernetes.io/ingress"
operator: "Equal"
value: "true"
effect: "NoSchedule"
ααααα·αααΆααααααΆααΆαααΆααα‘αΎααα·ααααααΆααααΉαααααΆααααΎααααΆαααα·αααααααα ααααα·ααααααΆααααααΆα Node Affinity αα·α nodeSelector
. ααα»αααααααααΆααα½ααααα
αΌααα»αααΆαααΆα
αααΎα α’αααα’αΆα
αααααα
ααΆαααΌαααΆαααααααααααα·ααΈαααααααααααα’αΆα
ααααααααΆαα
8. αααααα’αΆαα·ααΆαααααΆαααΆαααααααΆα Pod
αααβααΆαβααβα’αααβααΆα pods αααβααααΌαβααΆαβαααααβαα nodes αα·αβααΆαβαααβααΆ pods ααΆααα’ααβααααΌαβααβααααΌαβααΆαβα αΆααβαα»αβααΆβα’αΆαα·ααΆαβααΌα βααααΆβαααβααα α§ααΆα ααα α’αααβαααα ααβααΆβα ααβααΆααβαααααΆα pods αα½αβα ααα½αβαα»αβα’αααβαααααα
Kubernetes αααααααΌααα·ααΈαααααααααΆααΎααααΈααααααα
ααΆαααααααα Pod Priority αα·α Preemption α ααΆααααααααΆααααααααΆα
αααΎαα ααααα» PriorityClass
αα·αααΆααα·αααααΆααΆα priorityClassName
αα
αααα»αααΆααααααΆαα pod α αααααΎαα§ααΆα αααα
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 α’αΆα ααααΌαααΆαααα α ααΆαα½αααααΆαααα αααααααΆααααΌαα ααΆααΆαααΆααααααΆααααααΆααααΆαααααα»αααΆααααααααΆααααα·ααααα·ααΆαααααΌαααααΆααα·ααααααααααα ααααα·αααααααα½α α αΆααααΆααααΈααααΏαααααααα·ααααα·ααΆααα αααα»α Cube α’αΆαααααααΎααΆα αααααααΆαααααΉαααααΌα α αΎααααα»ααααααΆαα½αααααΆ αααααααααΆαααααα’ααΊααααΌααααααΆα ααααα ETCD αα ααΎααααΆαααα ααΎααααΈααΆαααΆααααααΆαααα’αααααααΆααα kube-apiserver α ααααα·αααΎα’ααααα·αα’αΆα ααααΎααΌα αααααΆααα ααΌαααΆαα ETCD α±αααα·ααααα»αααΆααααα’αΆα ααααΎαα ααΆα ααΆαα½αααΉαααααα·ααααααΌαααααα’αααΆαα’αααα αΌααα½αα ααα α·ααααα»αααΆαααααααα ααααα ααα½αααααΆααααΈ ETCD α’αΆα ααααΆααα ααααααα·ααααααααααααααΆαααααα ααααα
ααΌαα αα αΆαααΆααΆααααααΎαα ααα½ααααΆαα·αα αααΎαααααα αααα»αα αααααα’αΆα αααααΎαααΆαα’ααα±αα ααααααα α»ααααα αααΆαααΎααΆαα’αα»αααα α’αααΈααααααααΆααα½ααααααα·ααααα»αααααα·ααααααα
ααααα·αααΎααΎααα·ααΆαα’αααΈααΆαααα‘αΎαααααΆααααααα ααΆαααΆαααααΆααα½αα ααα½αα
-
ααΆααααααααΉαααα’ αααααα’ααααΎααα αααα ααααα (α’αααα’αΆα α’αΆα
αα ααΈααα ). -
αααααααααΆαααΆαααααααα½αα ααα½α ααααα·αααΎα’αααααΆαααΈαααΆαααΆαα ααααααααΆα DCs αα½αααΌ α¬αααααΆα αα·αααΈαααααα’ααααα»αααΆα αααΎααααα’αααα ααααΆα (α’αααα’αΆα α’αΆα
αα ααΈααα ).
ααα ααααΈααααα·ααααΆα
α’αααααααααα·αααααΆα’αααΈα ααα»α ααααααα»αααααααΎαααααΆααΆαα’αα»ααααααΆαα ααααα·ααααααΆααΆααα·αααααΆααα αΆααααααα½αααααααααααΆαααααα ααα»αααααααααΎααααα’αΆα ααΆααααααααααααααΆααααΆααααααΎαααααα·αααααΆαααΎα αααααα ααΆα αααΆααααΆααααΆα αααααααΈαα½ααααΆααααααααααααααΈααααΆααα·ααΈααααααΆ α αΎααααααααααΆαααΆαααααααα ααΆααααααααα’αΆα αααααααα½ααααΆαααααΆαα ααΌα ααααααΆαα½αα±ααα αΆααα’αΆαααααααααα»αααΆαααα½αααΆαααα·αααααα’ααααα’αααα’αααΈαααααααα’ααααααα½ααα·αα·αααα ααααα Kubernetes ααααα’ααα αα·ααααααααα’ααααααααα’ααααΎαααΆαααααααΆα α ααααααααααα·αααααααααα’ααααα αααα»αααα·ααααα ααΆααΉααα½αα±ααα αΆααα’αΆαααααααααα»αααΆαααΉαα
ααααα: www.habr.com