á¡á¬ážáá¯á¶ážáááºá¹ááá¬áá«! áá»áœááºá¯ááºáá¡áááºááŸá¬ Oleg Sidorenkov ááŒá áºááŒá®ážá áá»áœááºá¯ááºááẠá¡ááŒá±áá¶á¡áá±á¬ááºá¡áŠá¡ááœá²á·áá¡ááŒá®ážá¡áá²á¡ááŒá ẠDomClick ááœááºá¡áá¯ááºáá¯ááºáá«áááºá áá»áœááºá¯ááºááá¯á·ááẠáá¯ááºáá¯ááºááŸá¯ááœáẠKubik ááᯠáá¯á¶ážááŸá áºáá»á±á¬áºá¡áá¯á¶ážááŒá¯áá²á·ááŒá®áž ááá¯á¡áá»áááºá¡ááœááºáž áááºážááŸáá·áºááá°ááœá²ááŒá¬ážáá±á¬ á áááºáááºá á¬ážá áá¬á¡ááá¯ááºá¡ááá·áºáá»á¬ážááᯠááœá±á·ááŒá¯á¶áá¶á á¬ážáá²á·ááááºá ááŸááºáááºáá±á¬áá»ááºážáááºáááºážááŒáá·áº ááá·áºá¡á á¯á¡áá±ážá¡ááœáẠvanilla Kubernetes á០ááá¯ááá¯á áœááºážáá±á¬ááºáááºááᯠááŸá áºáá¯ááºááá¯ááºáá¯á¶ááᯠááá±á· áá»áœááºá¯ááºááŒá±á¬ááŒáá«áááºá á¡áááºááá·áºáá² ááŒáááºááœá¬ážááá¯ááºáá«á
Kubernetes ááẠcontainer orchestration á¡ááœáẠá¡ááœááºáááºááá¯ááºáá±á¬ open source á áá áºááŒá áºáááºááᯠáááºáá±á¬ááºážá áœá¬áááá«áááºá áá¬áá¬áááºáááºážáá»ááºááœáẠááá·áº microservices áá»á¬ážááááá¶ááá¬ááᯠá á®áá¶ááá·áºááœá²ááŒááºážááŒáá·áº ááŸá±á¬áºáááºáá±á¬á¡áá¯ááºáá¯ááºáá±á¬ ááœáá á¯á¶ 5 áá¯á ááá¯á·á¡ááŒááºá áááºážááẠááá°áá®áá±á¬áá¯ááºáááºážáá±á¬ááºáá¬áá»á¬ážá¡ááœáẠá¡áá»á¬ážáá¯á¶ážá áááºááŒáá¯ááºááŒá¯áá¯ááºáááºá¡ááœáẠLego áá²á·ááá¯á· á á¯á ááºážááá¯ááºááá·áº áá»áŸáá»áŸááááŒá±á¬ááºážááœááºááŒááºááœááºááŸááá±á¬áááááá¬áá áºáá¯ááŒá áºáááºá
á¡á¬ážáá¯á¶ážá¡áááºááŒá±áá¯á¶ááááº- áá¬áá¬áá»á¬ážááᯠáá®ážáá¯á¶ážáá²ááá¯á· áááºážáá²á·ááá¯á· á¡á á¯á¡áá±ážáá²ááá¯á· áá áºáá»ááá¯ááºááŒá®áž áááºááá·áºáááºážáááºážáá°ááœá±ážááŸá¯ááá¯áá»áŸ áááºáááááá¯ááºáá«á áá«áá±ááá·áº áááºá áááºáááºážáá»ááºá¡ááœááºááá¯áááºáá±á¬á· âáá®ážááᯠáááºááá¯ááááºážááŒá®áž áá±á¬ááᯠááŸááŒá±á¬ááá²â ááá¯á· ááœá±ážáá«áááá·áºáááºá áá áºáááºážááá¯ááá±á¬áº á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶áá»á¬áž ááŒáŸáá·áºáááºáááºááŸáá·áº áá¯ááºáá»á ááááºáá»á¬áž áá»áŸá±á¬á·áá»ááẠáááºážáááºážáá»á¬áž ááŸá¬ááœá±áááºážá
1. á¡ááœá²á·ááŸáá·áº áá»áŸá±á¬ááºááœáŸá¬á¡áááºážá¡ááŒá áºáá»á¬ážááᯠá á±á¬áá·áºááŒáá·áºáá«á
á¡áá¯á¶ážá¡áá»á¬ážáá¯á¶ážááŒá áºáá±á¬áºáááºáž áááá±á¬ááºáá±á¬áááºážáááºážáá»á¬ážáá²ááŸáá áºáá¯ááŸá¬ áá±á¬ááºážááá¯ááŸá¯áá»á¬áž/ááá·áºáááºáá»ááºáá»á¬ážááᯠáááá«ááºážáá»áá¯ážááŒááºážááŒá áºáááºá á¡ááá®áá±ážááŸááºážáá»á¬ážááᯠnamespace áá»á¬ážá¡ááá¯ááºá ááŸáá·áº namespaces áá»á¬ážááᯠááœá¶á·ááŒáá¯ážááá¯ážáááºáá±ážá¡ááœá²á·áá»á¬ážááŒáá·áº ááá¯ááºážááŒá¬ážáá«á ááŒáá·áºáá»ááºááŒááºážáááŒá¯áá®á áááá¯áááºáá¬á¡áá»áááºá ááŸááºáá¬ááºááŸáá·áº ááááºá¹áááá¯ááŸá±á¬ááºááŸá¯á¡áá¯á¶ážááŒá¯ááŸá¯á¡ááœáẠá¡ááá®áá±ážááŸááºážáááºááá¯ážáá»á¬ážááᯠáááºááŸááºáá«á
resources:
requests:
memory: 2Gi
cpu: 250m
limits:
memory: 4Gi
cpu: 500m
á¡ááœá±á·á¡ááŒá¯á¶á¡á¬ážááŒáá·áº áá»áœááºá¯ááºááá¯á·ááẠáááá¯á¶ážáá»á¯ááºááá«áááº- áááºááẠááá·áºáááºáá»ááºáá»á¬ážá០áá±á¬ááºážááá¯áá»ááºáá»á¬ážááᯠááŸá áºááŒáááºáááºááá¯á ááá»á²á·ááá·áºáá«á áá±á¬ááºážááá¯ááŸá¯áá»á¬ážá¡áá±á«áºá¡ááŒá±áá¶á á¡á á¯á¡áá±ážááá¬áááᯠááœááºáá»ááºááŒá®áž á¡áááºážá¡ááŒá áºáá»á¬ážááœáẠá¡ááá®áá±ážááŸááºážáá»á¬ážááœá¬ááŒá¬ážáá»ááºááᯠá¥ááá¬á¡á¬ážááŒáá·áº 5-10 ááŒáááºáá±ážáááºááá¯áá«áá áááºážááẠpods áá»á¬ážááŒáá·áºáá¬ááŒá®áž áá¯ááºáááẠload áááŸááá±á¬á¡áá«ááœáẠáááºá node ááœáẠáá¬ááŒá áºáááºááᯠá áááºáá°ážááŒáá·áºáá«á áá¬á០ááá±á¬ááºážáá«áá°ážá á¡áááá·áºáá¯á¶ážá á¡ááá·áºá¡áá¬ážááŒá áºá á±ááŒá®áž á¡ááŒáá·áºáá¯á¶ážááœááºá áááºááẠáá¯ááºáá¬ážá¡á¬áž ááŸá¯ááºáááºááŒá®áž á¡á á±á·áá»á¬ážá áááºááœá±á·áá»á¬ážááŒá®ážáá±á¬áẠáá»ááºááŸááá±á¬ node áá»á¬ážáá±á«áºááœáẠá ááºáá®ážá á®ážááá·áºáááºááᯠáááŸááááºááŒá áºáááºá
áá±á¬ááºááŒá®áž á¡áá°á¡áá®áá²á· 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 á¡ááœá²á·ááẠá¡ááŒá¬ážáá±á¬ 10 cpu ááá¯á
á¬ážáá¯á¶ážááá·áº pods áá»á¬ážááᯠá¡áá¯á¶ážáá»ááá¯áá«áá á
á®á
ááºáá°ááẠáááºážááᯠááœáá·áºáááŒá¯áá² á¡ááŸá¬ážá¡ááœááºážáá
áºáᯠááŒá¯áá¯ááºáááá·áºáááº-
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
ááá¯áá²á·ááá¯á·áá±á¬ááŒá¿áá¬ááá¯ááŒá±ááŸááºážáááº, á¥ááá¬, áá²á·ááá¯á·áá±á¬ tool ááá¯áá±ážááá¯ááºáá«áááºá
2. á¡áá±á¬ááºážáá¯á¶ážáá±á¬ ááá¯ááºááá¯ááŸá±á¬ááºááŸá¯ááᯠááœá±ážáá»ááºáá«á
á€ááœáẠáá»áœááºá¯ááºááẠá¡ááŒá²ááŸááá±áá±á¬ volumes áá»á¬ážááŸáá·áº Kubernetes á¡áá¯ááºááá¬áž node áá»á¬ážá disk subsystem ááŸáá·áºáááºáááºáá±á¬ á¡ááŒá±á¬ááºážá¡áá¬ááᯠááŒá±á¬áá»ááºáá«áááºá áá¯ááºáá¯ááºááŸá¯ááœáẠHDD ááœáẠ"Cube" ááá¯áááºáá°áá»áŸá¡áá¯á¶ážáááŒá¯áááºáá»áŸá±á¬áºááá·áºáá±á¬áºáááºáž áá áºáá«áá áºáá¶ááœáẠáá¯á¶ááŸáẠSSD ááẠááá¯á¶áá±á¬ááºáá±á¬á·áá«á I/O áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááŒá±á¬áá·áº ááŸááºáááºážáá»á¬ážááẠdisk ááᯠáááºáá áºááá·áº ááŒá¿áá¬áá áºáᯠááŒá¯á¶ááœá±á·áááŒá®áž ááŒá±ááŸááºážáááºážáá»á¬ážá áœá¬ áááŸááá«-
-
á áœááºážáá±á¬ááºáááºááŒáá·áº SSDs ááá¯áá¯á¶ážáá« ááá¯á·ááá¯áẠNVMe ááá¯á·ááŒá±á¬ááºážáá« (áááºááá¯ááºááá¯ááºáá¬á·ááºáá²ááᯠá á®áá¶ááá·áºááœá²áá«á)á
-
áá áºáá¯ááºááŒááºážá¡ááá·áºááᯠáá»áŸá±á¬á·áá»áá«á
-
áá áºááᯠáá¯ááááºážáá»áá·áºáá±á¬ pods áá»á¬ážá "á áááº" áááºáá»ááºáá®ááŸá¯ááᯠááŒá¯áá¯ááºáá« (
podAntiAffinity
).
access_logs ááŸááºáááºážááá¯ááœáá·áºáá¬ážáá±á¬á¡áá«ááœáẠnginx-ingress-controller á¡á±á¬ááºááŸá áá»ááºááŸá¬ááŒááºááẠááŒá áºáá»ááºáá±ááẠ(~12 logs/sec) ááá¯ááŒááááºá á€á¡ááŒá±á¡áá±ááẠဠnode áá±á«áºááŸá application á¡á¬ážáá¯á¶ážááᯠáá»ááºá á®ážááœá¬ážá á±ááá¯ááºáááºá
PV á¡ááœáẠááŒá
áºáá»ááºáá±á¬á· áá»áœááºáá±á¬áº á¡áá¯ááºáá
ááºážáá°ážáá«áá°ážá
3. á¡áá±á¬ááºážáá¯á¶ážááŒá áºá¡á±á¬áẠááŒá¯áá¯ááºáá¬ážáá±á¬ áá¯á¶áá»á¬ážááᯠá á¯áá±á¬ááºážáá«á
Kubernetes ááẠáááºážááá¯á·ááᯠááá¯ááŒááºá á±ááŒá®áž áááºážááá¯á·ááᯠááá¯ááá¯áááá±á¬ááºá áœá¬ áá¯ááºáá±á¬ááºááá¯ááºá á±áááºá¡ááœáẠááœááºááááºáá¬-á¡áá±á¬ááºážááœááºáá¯á¶ážáá¯á¶áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááŒááºážááẠá¡áá±á¬ááºážáá¯á¶ážááŒá áºáááºá
Optimized ááá¯áááºááŸá¬ áá¯á¶áá»á¬ážááᯠááá¯ááá¯áááº-
-
á¡ááá®áá±ážááŸááºážáá áºáá¯áá¬áá«áááºáá« ááá¯á·ááá¯áẠáá¯ááºáá±á¬ááºáá»ááºáá áºáá¯áá¬áá¯ááºáá±á¬ááºáá«á
-
á¡ááœááºá¡á á¬áž áá±ážáááºáá±á¬ááŒá±á¬áá·áºá ááŒá®ážáá¬ážáá±á¬áá¯á¶áá»á¬ážááᯠááœááºáááºáá±á«áºááœáẠááá¯ááá¯ážá á±áá±á¬ááŒá±á¬áá·áºá
-
á ááºáááºáá»áááºááœáẠKubernetes á¡á¬áž á¡áá±ážáá°áá±á¬ááºááœááºááá¯ááºááẠáá»ááºážáá¬áá±ážááŸáá·áº á¡áááºááá·áº á¡áá¯á¶ážááŸááºáá»á¬áž ááŸááááºá
-
Configuration á¡ááŸá¬ážáá»á¬ážááᯠááá¯ááá¯áá¶ááá¯ááºáááºááŸááá±á¬ ááœááºááááºáá¬-áá±á¬áºááœá±áá±á¬ áááºáááºááŸá¯á áá áºáá»á¬áž (Alpine ááá¯á·ááá¯áẠCoreOS áá²á·ááá¯á·) ááᯠá¡áá¯á¶ážááŒá¯áá«á
-
áá±á«ááºážá ááºáá¬ážáá±á¬ á¡ááá®áá±ážááŸááºážáá»á¬ážááá¯áᬠá¡áá¯á¶ážááŒá¯ááá¯ááºááŒá®áž áá«áááºááá·áºáááºážááŒá áºáá»á¬ážááá¯áᬠá¡áá¯á¶ážáá»ááá¯ááºá á±ááẠmulti-stage áááºáá±á¬ááºááŸá¯áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯áá«á
áá¯á¶áá»á¬ážááᯠá¡áá»áááºááŸáá·áºáááŒá±ážáá® á á áºáá±ážááá¯ááºá á±áááºááŸáá·áº á¡áá±á¬ááºážáá¯á¶ážááŒá áºá¡á±á¬áẠáá¯ááºáá±á¬ááºááá¯ááºááá·áº áááááá¬áá»á¬ážááŸáá·áº áááºáá±á¬ááºááŸá¯áá»á¬ážá áœá¬ááŸááá«áááºá áááºážááá¯á·ááᯠá¡ááŒá²áááºáž áá±ááºáá®áá±á á±áááºááŸáá·áº áá±ážáááºážá á±ááẠá ááºážáááºá á áºáá±ážááẠá¡áá±ážááŒá®ážáá«áááºá ááááºá¡áá±ááŒáá·áº áááºáááŸááááº-
-
á¡á á¯á¡áá±ážáá áºáá¯áá¯á¶ážááœáẠááœááºáááºáááºááᯠáá»áŸá±á¬á·áá»áá¬ážáááºá
-
ááœááºááááºáᬠá áááºáá»áááºááᯠáá»áŸá±á¬á·áá»ááŒááºážá
-
áááºá Docker ááŸááºáá¯á¶áááºááŒááºážáá áºáá¯áá¯á¶ážá áá±ážáááºáá±á¬á¡ááœááºá¡á á¬ážá
4. DNS cache ááá¯áá¯á¶ážáá«á
ááŒáá·áºáá¬ážáá±á¬áááºáá»á¬ážá¡ááŒá±á¬ááºážááŒá±á¬áá«áá á¡á
á¯á¡ááœá²á·á DNS á
áá
áºá¡á¬áž áá»áááºááŸáááŒááºážáááŒá¯áá² ááááẠá¡ááœááºááá¯ážááœá¬ážáááºá áá
áºáá»áááºá Kubernetes developer áá»á¬ážááẠáááºážááá¯á·á kube-dns ááŒá±ááŸááºážáá»ááºááᯠáá±á¬ááºáá¶áá²á·ááŒáááºá áááºážááᯠá€áá±áá¬ááœááºáááºáž á¡áá±á¬ááºá¡áááºáá±á¬áºáá¬ážáá±á¬áºáááºážá á€áá±á¬á·ááºáá²ááᯠá¡áá°ážáá»áááºááŸááá¬ážááŒááºážáááŸááá²á·áá² ááá¯á¡ááºáá±á¬á
áœááºážáá±á¬ááºáááºááᯠááá¯ááºáá¯ááºááá¯ááºáá²á·áá²á áááºážááẠááá¯ážááŸááºážáá±á¬á¡áá¯ááºááŒá
áºáá¯á¶ááááºá ááá¯á·áá±á¬ááºááœáẠáá»áœááºá¯ááºááá¯á·á០ááŒá±á¬ááºážáá²áá²á·ááŒá®áž áá°ááœá±ážááŒááºážáááŸááá±á¬ coredns áá±á«áºáá¬áááºá áááºážááẠáá±á¬ááºááá¯ááºážááœáẠK8s ááœáẠáá°áááºáž DNS áááºáá±á¬ááºááŸá¯ááŒá
áºáá¬áá²á·áááºá áá
áºáá»áááºáá»áááºááœááºá áá»áœááºá¯ááºááá¯á·ááẠDNS á
áá
áºááá¯á· 40 rps ááá¯ážáá¬áᬠá€ááŒá±ááŸááºážáá»ááºááŸá¬áááºáž ááá¯á¶áá±á¬ááºáá±á¬á·áá«á ááá¯á·áá±á¬áº áá¶áá±á¬ááºážáá±á¬ááºáá
áœá¬ááŒáá·áº Nodelocaldnsá aka node local cache, aka ááœááºáá¬áá²á·áááºá
áá«ááá¯á·áá¬ááŒá±á¬áá·áº áá«ááá¯áá¯á¶ážáá¬áá²á Linux kernel ááœáẠUDP ááŸáááá·áº conntrack NAT ááŸáááá·áº áá±á«áºááá¯ááŸá¯á¡áá»á¬ážá¡ááŒá¬ážááŒá¯áá¯ááºáá±á¬á¡áá«á conntrack tables áá»á¬ážááœáẠentries áá»á¬ážá¡ááŒáá¯ááºá¡ááá¯ááºááŒá áºáá±á«áºáá¬ááŒá®áž NAT ááŸáááá·áº traffic ááá áºá áááºáá áºááá¯ááºážáá¯á¶ážááŸá¯á¶ážááœá¬ážááẠ( Service ááŸáááá·áºááá®ážá ááºááá¯ááºážááẠNAT ááŒá áºáááº)á Nodelocaldns ááẠNAT ááá¯áááºááŸá¬ážááŒá®áž TCP ááá¯á· áá»áááºáááºááŸá¯ááᯠupstream DNS ááá¯á· á¡ááá·áºááŒáŸáá·áºáááºááŒááºážá áá±á á®ážááŒá±á¬ááºážáá±á«áºááŸá DNS áá±ážááŒááºážáá»ááºáá»á¬ážááᯠá ááºááœááºážá ááááºážáááºážááŒááºáž (ááá¯áá±á¬ááºážáá±á¬ 5 á áá¹ááá·áºá¡áá¯ááºááá¹ááᬠáááºááŸáºáá áºáá¯á¡áá«á¡áááº) ááŒáá·áº á€ááŒá¿áá¬ááᯠááŒá±ááŸááºážáá±ážáá«áááºá
5. á¡á á±á·áá»á¬ážááᯠá¡áá»á¬ážááá¯áẠáá±á«ááºááá¯áẠá¡ááá¯á¡áá»á±á¬áẠáá»áááºááŸááá«á
áááºá microservices á¡á¬ážáá¯á¶ážááẠááŸá
áºáá០áá¯á¶ážáá¡áá ááá¯ážáá¬áááºá¡ááœáẠá¡áááºááá·áºááŒá
áºáá±ááŒá®áᯠáá¯á¶ááŒááºá
áááºáá»á
áœá¬ ááŒá±á¬ááá¯ááºáá«ááá¬ážá ááá·áºá¡ááá®áá±ážááŸááºážáá»á¬ážáᶠá¡áááºážá¡ááŒá
áºáá»á¬ážááᯠáááºááá¯á·ááœá²áá±áá±ážáááºáááºážá á¡áá¯ááºáááºáááºáá»á±á¬áºááœááºá á¡áá¯ááºáá¯ááºáá±á¬ pods ááŸá
áºáá¯ááᯠáá¬ážááŸáááŒááºážááẠáááá¯á¡ááºáá±á¬á·áá±á¬áºáááºáž áááºážááá¯á·ááᯠáá±á¬ááºááŒá±á¬ááºážááŒááºáá¬ážááŒááºážááŒáá·áº áááºáá±á¬ááºááŸá¯ááá¯á· á¡ááœá¬ážá¡áá¬áá¯ááºáááẠááá¯ážáá¬áá¬á០á¡áá»áááºáááºááá·áºááœá¬ážááá¯ááºááá·áº á¡áá¹ááá¬ááºááŸááááºá á¡á
ááŸááá²á· áááºáá±á¬ááºááŸá¯áá»á¬áž
VPA á¡ááŸááºááááºá¡áá¯á¶ážááŒá¯ááŸá¯áá±á«áºáá°áááºá pod á¡ááœááºážááŸá ááá·áºááœááºááááºáá¬áá»á¬ážá áá±á¬ááºážááá¯ááŸá¯áá»á¬áž/ááá·áºáááºáá»ááºáá»á¬ážááᯠá¡ááá¯á¡áá»á±á¬áẠááŒáŸáá·áºáááºááá¯ááºáááºááŒá áºáááºá áááºááá¯á¡áá¯á¶ážáááºááá¯ááºááá²á á¡áááºá ááá·áºááœáẠá¡ááŒá±á¬ááºážáá áºáá¯áá¯ááŒá±á¬áá·áº á¡áá»á¬ážááá¯áẠáá»áááºááŸáááááá±á¬ á¡ááœááºáá»á¬ážááŸááá«á (áá¯á¶ážá á áááºááá»ááá±á¬)á ááá¯á·áá±á¬áẠáááºážáá¡áááºážá¡ááŒá áºáá»á¬ážááᯠVPA ááá¯á· ááŒá±á¬ááºážáá²ááŸá¯áá»á¬áž á¡ááºááŸááºážááẠááŒáá¯ážá á¬ážááá¯ááºáá«áááºá áááºážáá¡ááºá¹áá«áááºááẠáááºááá áºáá¬áá¬á០áááá¯ááºážáááºááŸáá·áº áááºááŸááá±áá¬á¡áá±á«áºá¡ááŒá±áá¶ááá·áº á¡ááŒá¶ááŒá¯áá»ááºá áá áºááŒá áºáá±á¬ááŒá±á¬áá·áº áá±á¬ááºážááá¯ááŸá¯áá»á¬áž/ááá·áºáááºáá»ááºáá»á¬ážááᯠá¡ááá¯á¡áá»á±á¬ááºáááŒá±á¬ááºážáá²ááá¯áá«áá áááºááẠáááºáááœááºááááºáá¬á¡ááœáẠá¡ááŒá¶ááŒá¯áá¬ážáá±á¬áááºážááŒá áºáá»á¬ážááᯠááá¯ážááŸááºážá áœá¬á á±á¬áá·áºááŒáá·áºááá¯ááºááŒá®áž CPU ááᯠááááºážáááºážáááºá¡ááœáẠáááºáááºáá»á¬ážááᯠá¡áá±á¬ááºážáá¯á¶ážááŒá áºá¡á±á¬áẠááŒá¯áá¯ááºááá¯ááºáááºá á¡á á¯á¡áá±ážááœááºááŸááºáá¬ááºá
áá¯á¶á¡á¬áž https://levelup.gitconnected.com/kubernetes-autoscaling-101-cluster-autoscaler-horizontal-pod-autoscaler-and-vertical-pod-2a441d9ad231 á០ááá¯ááºáá°áá¬ážáááº
Kubernetes ááŸá á¡áá»áááºááá¬ážááœá²ááẠáá±á¬ááºážááá¯áá»ááºáá»á¬ážá¡áá±á«áº á¡ááŒá²á¡ááŒá±áá¶áááºá áááºááá·áºáááºááá¯ážááᯠáááºááá·áºáá¬ážáá«á á±á á¡á á®á¡á ááºáá±ážááœá²áá°ááẠáááºážá¡áá±á«áºá¡ááŒá±áá¶á ááá·áºáá»á±á¬áºáá±á¬ node áá áºáá¯ááᯠááŸá¬ááœá±áááºááŒá áºáááºá áá°ážááᯠáááºá¡áá»áááºááŸá¬ á¡ááŸáááºááŒáŸáá·áºáááá² ááá¯á·ááá¯áẠáááºáá áºááẠcubelet á¡ááœáẠááá·áºáááºáááºááá¯ážáá»á¬áž ááá¯á¡ááºáá«áááºá áá áºáá¯áááºážáá±á¬á¡áá±ážááŒá®ážáá±á¬ááá·áºáááºáá»ááºááẠáá±á¬ááºážááá¯ááŸá¯áááºááá¯ážááŒá áºáá±á¬ááŒá±á¬áá·áº VPA ááẠáááºážááŸáá·áºá¡áá¯ááºáá¯ááºáááºááŒá áºáááºá á¡ááá®áá±ážááŸááºážáá áºáá¯á¡á¬áž áá±á«ááºááá¯ááºá¡ááá¯ááºážá¡áá¬ááŒáá·áº ááá¯ááºážáá¬ááá·áºá¡áá«ááá¯ááºážá áá±á¬ááºážááá¯áá»ááºáá»á¬ážááẠáááºááá·áºá¡áá¬ááŒá áºááá·áºáááºááᯠáááºáááºááŸááºáááºá á¡á²áá®á¡áá« ááá·áºáááºáá»ááºááœá±á áá¬ááŒá áºááá²á á€ááá·áºáááºáá»ááºááá¯áááºáž á¡áá»áá¯ážáá» áá»áááºááŸááááºááŒá áºáááºá
á¥ááá¬á¡á¬ážááŒáá·áºá á€áááºááŸá¬ áá¯á¶ááŸáẠpod áááºáááºáá»á¬ážááŒá áºáááº-
resources:
requests:
memory: 250Mi
cpu: 200m
limits:
memory: 500Mi
cpu: 350m
ááá·áºá¡ááá®áá±ážááŸááºážááẠáá±á¬ááºážá áœá¬áááºáááºááẠ300m CPU ááŸáá·áº 500Mi ááá¯á¡ááºááŒá±á¬ááºáž á¡ááŒá¶ááŒá¯áá»ááºá¡ááºáá»ááºá áá¯á¶ážááŒááºáááºá á¡á±á¬ááºáá«áááºáááºáá»á¬ážááᯠáááºáááŸááá«áááº-
resources:
requests:
memory: 500Mi
cpu: 300m
limits:
memory: 1000Mi
cpu: 525m
á¡áááºááœááºáá±á¬áºááŒáá²á·ááá·áºá¡ááá¯ááºážá áááºážááẠáááºáá®ážáááºá áºááŸá áá±á¬ááºážááá¯áá»ááº/ááá·áºáááºááŸá¯á¡áá»áá¯ážá¡áá±á«áºá¡ááŒá±áá¶á á¡áá»áá¯ážáá»á áá±ážáá»á²á·ááŒááºážááŒá áºáááº-
-
CPU: 200m â 300m: á¡áá»áá¯áž 1:1.75;
-
áááºááá¯áá®- 250Mi â 500Mi: á¡áá»áá¯áž 1:2á
ááŸáá»á· ááá»ááá». HPAáá«ááᯠáááºáááºááŸá¯ ááá¹ááá¬ážá ááá¯ááœáá·áºáááºážáááºá CPU ááŸáá·áº Memory áá²á·ááá¯á·áá±á¬ áááºááá áºáá»á¬ážááᯠááá·áºáááºáá¬ážááŒá®ážá áá¯á¶áá°á¡á¬ážáá¯á¶ážá áá»ááºážáá»áŸááá¬áááẠáááºááŸááºáá»ááºáááºáá»á±á¬áºááœááºáá«áá áááºááá¯ážáááºááŸááºáá»ááºá¡á±á¬ááºááá¯á· áá»áááºážááœá¬ážáááºá¡áá ááá¯á·ááá¯áẠáá¯á¶áá°ááœá¬ážááŸá¯ á¡áá»á¬ážáá¯á¶ážá¡áá±á¡ááœááºááá¯á· ááá±á¬ááºááá»ááºáž á¡ááá®áá±ážááŸááºážááᯠ+1 ááœá²ááŒáá·áº áá»áááºááŸááááºááŒá áºáááºá
áá¯á¶á¡á¬áž https://levelup.gitconnected.com/kubernetes-autoscaling-101-cluster-autoscaler-horizontal-pod-autoscaler-and-vertical-pod-2a441d9ad231 á០ááá¯ááºáá°áá¬ážáááº
CPU ááŸáá·áº Memory áá²á·ááá¯á·áá±á¬ áá¯á¶ááŸááºáááºááá áºáá»á¬ážá¡ááŒáẠPrometheus á០ááá·áºá áááºááŒáá¯ááºáááºááá áºáá»á¬ážáá±á«áºááœáẠá¡ááá·áºáááºááŸááºáá»ááºáá»á¬áž áááºááŸááºááá¯ááºááŒá®áž áááºážááẠááá·áºá¡ááá®áá±ážááŸááºážááᯠá áá±ážáá»áááºááẠá¡áááá»áá¯á¶ážááŒá áºááŒá±á¬ááºáž áááºáá°ááá«á áááºážááá¯á·ááŸáá·áº áá¯ááºáá±á¬ááºááá¯ááºáááºá á¡ááá®áá±ážááŸááºážááẠáááºááŸááºáá¬ážáá±á¬ áááºááá áºáááºááŸááºáá»ááºá¡á±á¬áẠáááºááŒáááºááœá¬ážáááºááŸáá·áºá HPA ááẠá¡áááá·áºáá¯á¶ážáá¯á¶á á¶áá° á¡áá±á¡ááœááºá¡áá ááá¯á·ááá¯áẠáááºá¡á¬áž áááºááŸááºáá¬ážááá·áº á¡ááá¯ááºážá¡áá¬ááŸáá·áº ááŒáá·áºáá®ááá·áºááá¯ááºá¡á±á¬áẠá¡áá»áááºá¡áááºáá»á¬ážááᯠá áááºáááºááŒá áºáááºá
6. Node Affinity ááŸáá·áº Pod Affinity á¡ááŒá±á¬ááºáž ááá±á·áá«ááŸáá·áº
node áá»á¬ážá¡á¬ážáá¯á¶ážááẠáá°áá®áá±á¬áá¬á·ááºáá²áá±á«áºááœáẠá¡áá¯ááºáá¯ááºáááºááá¯ááºáá«á áá±á«á·ááºá¡á¬ážáá¯á¶ážááẠááœááºáá»ááºááŸá¯á¡áá°ážááŒá¯áá±á¬ á¡ááá®áá±ážááŸááºážáá»á¬ážááᯠáá¯ááºáá±á¬ááºáááºáááá¯á¡ááºáá«á Kubernetes ááᯠá¡áá¯á¶ážááŒá¯á node ááŸáá·áº pods áá»á¬ážá á¡áá°ážááŒá¯ááŸá¯ááᯠáááºááŸááºááœáá·áºááŒá¯áááºá Node Affinity О Pod Affinity.
á¡áááºá ááá·áºááœáẠááœááºááŒá°áá¬áá¯á¶ážáá±á¬ áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážá¡ááœáẠááá·áºáá»á±á¬áºáá±á¬ node áá»á¬ážááŸááá«áá á¡ááŒáá·áºáá¯á¶ážáááá±á¬ááºááŸá¯áááŸáááẠáááºážááẠá¡ááá®áá±ážááŸááºážáá»á¬ážááᯠáááºááá¯ááºáᬠnode áá»á¬ážááŸáá·áº áá»áááºáááºááŒááºážááẠááá¯áá±á¬ááºážáá«áááºá áá®ááá¯áá¯ááºááá¯á· áá¯á¶ážáááºá nodeSelector
node áá¶ááááºáá
áºáá¯ááŸáá·áºá
ááá·áºááœáẠnode ááŸá
áºáá¯ááŸááááº- one with CPUType=HIGHFREQ
ááŸáá·áº ááŒááºáááºáá±á¬ cores á¡áá»á¬ážá¡ááŒá¬ážá áá±á¬ááºáá
áºáᯠMemoryType=HIGHMEMORY
Memory ááá¯ááŒááºááŒá®áž á
áœááºážáá±á¬ááºááẠááá¯ááŒááºáá«áááºá á¡ááœááºáá¯á¶ážáááºážáááºážááŸá¬ node áá
áºáá¯ááá¯á· deployment ááᯠáááºááŸááºáááºááŒá
áºáááºá HIGHFREQ
á¡ááá¯ááºážááᯠáá±á«ááºážááá·áºááŒááºážááŒáá·áº spec
á€ááœá±ážáá»ááºááŸá¯á
áá
áº-
âŠ
nodeSelector:
CPUType: HIGHFREQ
ááá¯ááá¯á
á»á±ážááŒá®ážááŒá®áž áááá»áá±á¬áááºážáááºážááᯠá¡áá¯á¶ážááŒá¯áááºááŒá
áºáááºá nodeAffinity
áááºá affinity
азЎела spec
. ááœá±ážáá»ááºá
áá¬ááŸá
áºáá¯ááŸááááºá
-
requiredDuringSchedulingIgnoredDuringExecution
: hard setting (á¡áá»áááºááá¬ážááœá²áá°ááẠáá®ážááŒá¬áž node áá»á¬áž (ááŸáá·áº á¡ááŒá¬ážáááºááá·áºáá±áá¬ááŸ) ááœááºáᬠpods áá»á¬ážááᯠááŒáá·áºáá»ááºáá±ážáááº); -
preferredDuringSchedulingIgnoredDuringExecution
: áá»á±á¬á·áá»á±á¬ááºážáá±á¬áááºááẠ(á¡áá»áááºááá¬ážááœá²áá°ááẠáá®ážááŒá¬áž node áá»á¬ážááá¯á· ááŒáá·áºáá»ááºááẠááŒáá¯ážá á¬ážáááºááŒá áºááŒá®áž áááºážááẠáá»ááºááœááºáá«áá áááºážááẠáá±á¬ááºáááºáááŸáááá¯ááºááá·áº node ááá¯á· ááŒáá·áºáá»ááºááẠááŒáá¯ážá á¬ážáááá·áºáááº)á
áá²á·ááá¯á·áá±á¬ node á¡ááœáŸááºážáá»á¬ážááᯠá
á®áá¶ááá·áºááœá²áááºá¡ááœáẠáá®ážááŒá¬áž syntax ááᯠááẠáááºááŸááºááá¯ááºáááºá In
, NotIn
, Exists
, DoesNotExist
, Gt
ááá¯á·ááá¯áẠLt
. ááá¯á·áá±á¬áºá ááŸááºáá»á¬ážáá±á¬ á¡ááœáŸááºážáá»á¬ážá
á¬áááºážááœáẠááŸá¯ááºááœá±ážáá±á¬áááºážáááºážáá»á¬ážááẠá¡áá±ážááŒá®ážáá±á¬á¡ááŒá±á¡áá±áá»á¬ážááœáẠáá¯á¶ážááŒááºáá»ááºáá»ááŒááºážááᯠááŸá±ážááœá±ážá
á±ááŒá±á¬ááºáž áááááá«á áá
áºáááºážá¡á¬ážááŒáá·áº ááá¯ážááá¯ážááŸááºážááŸááºážáá¬ážáá«á
á¡áááºááœááºáá±á¬áºááŒáá¬ážááá·áºá¡ááá¯ááºáž Kubernetes ááẠááá·áºá¡á¬áž áááºááŸá pods áá»á¬ážá áááºážááŸá®ážááŸá¯ááᯠáááºááŸááºááá¯ááºá á±áá«áááºá ááá¯ááá¯áááºááŸá¬á á¡áá»áá¯á·áá±á¬ pods áá»á¬ážááẠáá°áá®áá±á¬áááŸáááá¯ááºááŸá¯áá¯áẠ(clouds á¡ááœááºáááºááá¯ááºáá¬) ááá¯á·ááá¯áẠnode áá»á¬ážááœáẠá¡ááŒá¬áž pods áá»á¬ážááŸáá·áºá¡áá° á¡áá¯ááºáá¯ááºááŒá±á¬ááºáž áá±áá»á¬á á±ááá¯ááºáá«áááºá
Ð podAffinity
áááºááœááºáž affinity
азЎела spec
áá°áá®áá±á¬á¡ááœááºáá»á¬ážááᯠááá
á¹á
áááºááœáẠáááŸáááá¯ááºáááºá nodeAffinity
: requiredDuringSchedulingIgnoredDuringExecution
О preferredDuringSchedulingIgnoredDuringExecution
. áá
áºáá¯áááºážáá±á¬ ááŒá¬ážáá¬ážáá»ááºá á¡á²áá«áá«áá²á matchExpressions
pods áá»á¬ážááᯠááá¯áá¶ááááºááŒáá·áº pod áá
áºáá¯ááᯠáá¯ááºáá±á¬ááºáá±ááŒá®ážááŒá
áºáá±á¬ node áá
áºáá¯ááŸáá·áº áá»áááºáá«áááºá
Kubernetes áááºáááºáž á¡ááœááºáá
áºáá¯ááᯠáá±ážáááºá podAntiAffinity
ááá·áºáá»ááºáááºá¡áá±ááŸáá·áºá pod ááᯠáá®ážááŒá¬áž pods áá»á¬ážáá«ááá·áº node áá
áºáá¯ááŸáá·áº áá»áááºááá¬ážáá«á
á¡áá¯á¶ážá¡ááŸá¯ááºážáá»á¬ážá¡ááŒá±á¬ááºáž nodeAffinity
áá°áá®áá±á¬á¡ááŒá¶áá¬ááºááᯠáá±ážááá¯ááºáááº- á
ááºážáá»ááºážáá»á¬ážááᯠááá¯ážááŸááºážááŒá®áž áá»áá¯ážááŒá±á¬ááºážáá®áá»á±á¬áºá¡á±á¬áẠááŒáá¯ážá
á¬ážáá«á ááŸá¯ááºááœá±ážáá±á¬ á
ááºážáá»ááºážáá»á¬ážááŒáá·áº pod specification ááᯠááœááºááœááºáá²áá² áááŒáá¯ážá
á¬ážáá«ááŸáá·áºá á¡á
á¯á¡ááœá²á·á á¡ááŒá±á¡áá±áá»á¬ážááŸáá·áº áááá¯ááºáá®ááá·áº á
ááºážáá»ááºážáá
áºáá¯ááᯠáááºáá®ážáááºá á¡áá»áááºááá¬ážááœá²áá°ááœáẠáááá¯á¡ááºáá±á¬áááºááᯠáááºáá®ážáᬠá¡áá¯á¶ážá
á¯á¶á
áœááºážáá±á¬ááºáááºááᯠáá»áŸá±á¬á·áá»ááẠá¡ááœááºááœááºáá°áááºá
7. á¡á¬ááá±á«ááá¬ážááŸáá·áº áááºážáá¶ááŒááºážááá¬áž
á¡á á®á¡á ááºááœá²áá°ááᯠá á®áá¶ááá·áºááœá²ááẠá¡ááŒá¬ážáááºážáááºážáá áºáá¯ááŸááááºá ááá·áºááœáẠnode áá¬áá±á«ááºážáá»á¬ážá áœá¬ááŸáá·áº áá±á¬ááºáá±á«ááºážáá»á¬ážá áœá¬áá±á¬ microservice áá»á¬ážáá«ááŸááá±á¬ ááŒá®ážáá¬ážáá±á¬á¡á á¯á¡áá±ážáá áºáá¯ááŸááá«áá á¡áá»áá¯á·áá±á¬ pods áá»á¬ážááᯠá¡áá»áá¯á·áá±á¬ node áá»á¬ážááœáẠáááºáá¶áá¬ážáááºááŸá¬ á¡ááœááºáááºáá²áá«áááºá
á¡á¬ááá±á«ááá¬ážááá¯á·á ááá¹ááá¬ážâáááá¹áá¬áá¯ááºááᯠáá¬ážááŒá
áºááŒááºážâá€ááá¯á· áá°áá®áá±ážáá á¥ááá¬á¡á¬ážááŒáá·áºá á¡áá»áá¯á·áá±á¬á¡ááŒá±á¡áá±áá»á¬ážááœáẠáááºááẠpods áá»á¬ážáááºáááºááŒááºážá០á¡áá»áá¯á·áá±á¬ node áá»á¬ážááᯠáá¬ážááŒá
áºááá¯ááºáááºá áá®ážááŒá¬áž node áá
áºáá¯ááœáẠáá
áºáááºážááŸá¯ááᯠá¡áá¯á¶ážáá»ááẠááœá±ážáá»ááºááœáá·áºááᯠáááºá¡áá¯á¶ážááŒá¯ááẠááá¯á¡ááºáááºá taint
kubectl ááœáẠáá±á¬á·áá²á·áááºááá¯ážááᯠáááºááŸááºááŒá®ážáá±á¬á· áá
áºáááºážáá¬áá»áá¯áž NoSchedule
ááá¯á·ááá¯áẠNoExecute
:
$ kubectl taint nodes node10 node-role.kubernetes.io/ingress=true:NoSchedule
áá
áºáááºážááŸá¯ááá¹ááá¬ážááẠá¡áááá¡áá»áá¯ážáááºáá±á¬ááºááŸá¯áá¯á¶ážáá¯ááᯠáá¶á·ááá¯ážáá±ážááŒá±á¬ááºážááá¯áááºáž áááááŒá¯ááá·áºáá«áááºá NoSchedule
, NoExecute
О PreferNoSchedule
.
-
NoSchedule
ááá¯ááá¯áá¬á á¡áá¯á¡áá»áááºááŸá¬ pod specification ááŸá¬ áááºááá¯ááºáá²á· entry ááœá± ááŸááá±á¬á·ááŸá¬ ááá¯ááºáá«áá°ážátolerations
á áááºážááẠnode áá±á«áºááœáẠdeploy áá¯ááºáááá·áºáááºááá¯ááºáá« (á€á¥ááá¬ááœááºnode10
). -
PreferNoSchedule
- ááá¯ážááŸááºážáá±á¬áá¬ážááŸááºážNoSchedule
. á€ááá á¹á ááœááºá á¡áá»áááºááá¬ážááœá²áá°ááẠááá¯ááºáá®áá±á¬ entry ááá«áá±á¬ pods áá»á¬ážááᯠááœá²áá±ááá±ážááẠááŒáá¯ážá á¬ážáá«áááºátolerations
node áá áºáá¯á á®á áá«áá±ááá·áº áá«á áááºáá²áá²á· ááá·áºáááºáá»áẠááá¯ááºáá«áá°ážá á¡á á¯á¡áá±ážááœáẠáááºážááŒá áºáá»á¬ážáááŸááá«áá pods áá»á¬ážááẠဠnode áá±á«áºááœáẠá áááºá¡áá¯á¶ážááŒá¯ááá¯ááºáááºááŒá áºáááºá -
NoExecute
- á€á¡áá»áá¯ážáááºáá±á¬ááºááŸá¯ááẠáááºááá¯ááºáᬠentry áá»á¬ážáááŸááá±á¬ pods áá»á¬ážááᯠáá»ááºááŒááºážááœáŸá±á·ááŒá±á¬ááºážááẠá¡á áá»áá¯ážáá±ážáá«áááºátolerations
.
á áááºáááºá á¬ážá áá¬áá±á¬ááºážáááºááŸá¬á á€á¡ááŒá¯á¡áá°ááá¯áááºážáá¶ááŒááºážááá¹ááá¬ážáá¯á¶ážááŒá®ážáááºáá»ááºááá¯ááºáááºá "áá¬ážááŒá áºáá¬ážáá±á¬" node áá áºáá¯ááŸááá±á¬á¡áá«ááœááºáááºážáááºá¡áááºááŒá±ááŒá®ážáááºážáá±á«áºááœááºá¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶áááºáá±á¬ááºááŸá¯áá»á¬ážááá¯áá¬áááºáá¬ážáááºááá¯á¡ááºáááºá áááºááᯠáá¯ááºáááá²? ááá·áºáá»á±á¬áºáá±á¬ áá¶ááá¯ááºáááºááŸááá±á¬ á¡ááá¯áá« pods áá»á¬ážááá¯áᬠááœáá·áºááŒá¯áá«á
á€ááœáẠpod specification áááºáááºáá²á·ááá¯á·ááŒá áºáááºáááºážá
spec:
tolerations:
- key: "node-role.kubernetes.io/ingress"
operator: "Equal"
value: "true"
effect: "NoSchedule"
áááºážááẠáá±á¬ááºáá
áºááŒááẠááŒááºáááºá¡áá¯á¶ážáá»ááŒááºážááẠá€á¡áá°áž Node áá±á«áºááœáẠáá»áá±á¬ááºáááºáᯠáááá¯ááá¯áá«á áááºážááẠNode Affinity ááá¹ááá¬ážááá¯ááºáá«á nodeSelector
. ááá¯á·áá±á¬áº á¡ááºá¹áá«áááºáá»á¬ážá
áœá¬ááᯠáá±á«ááºážá
ááºááŒááºážááŒáá·áº áááºááẠá¡ááœááºááŒá±á¬ááºážááœááºááŒááºááœáẠá¡áá»áááºááá¬ážááœá²ááŒááºáž áááºáááºáá»á¬ážááᯠáááºáááŸáááá¯ááºáá«áááºá
8. Pod Deployment ááᯠáŠážá á¬ážáá±áž áááºááŸááºáá«á
ááá·áºááœáẠnode áá»á¬ážá¡ááœáẠáááºááŸááºáá±ážáá¬ážáá±á¬ pods áá»á¬ážááŸááá±á pods á¡á¬ážáá¯á¶ážááᯠáá°áá®áá±á¬áŠážá á¬ážáá±ážááŒáá·áº áááºáá¶ááááºáᯠáááá¯ááá¯áá«á á¥ááá¬á¡á¬ážááŒáá·áºá áááºááẠá¡áá»áá¯á·áá±á¬ pods áá»á¬ážááᯠá¡ááŒá¬ážáá°áá»á¬ážááŸá±á·ááœáẠá¡áá¯á¶ážáá»ááá¯áá±áááºá
Kubernetes ááẠPod Priority ááŸáá·áº Preemption ááᯠá
á®á
ááºáááºááŸááºááẠááá°áá®áá±á¬áááºážáááºážáá»á¬ážááᯠáá±ážáá±á¬ááºáááºá áááºáááºááœáẠá¡á
áááºá¡ááá¯ááºážáá»á¬ážá
áœá¬ áá«áááºáááº- á¡áá¬ááá¹áᯠPriorityClass
ááŸáá·áº á¡ááœááºáá±á¬áºááŒáá»ááºáá»á¬áž priorityClassName
pod specification áá²ááŸá¬á á¥ááá¬áá
áºáá¯ááá¯ááŒáá·áºáá¡á±á¬ááºá
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-bit ááááºážááŒáá·áº 1 áááºáááºážááá·áº ááá¯á·ááá¯áẠáá®áá»áŸááá¯ááºáááºá áá±áá¯áá»á¡á¬ážááŒáá·áº ááŒáá¯áááºáááŒáá¯áááºááááá¯ááºáá±á¬ mission-critical system pods áá»á¬ážá¡ááœáẠáá®ážááá·áºáááºááá¯ážáá»á¬ážá áŠážá
á¬ážáá±ážá¡ááá·áºááŒáá·áº pod ááẠááŸáá·áºáááºáá±áá¬áááŸáááŸáᬠáá±áá¬ááœáŸá±á·ááŒá±á¬ááºážááŸá¯ááŒá
áºáá±á«áºáááºááŒá
áºááŒá®ážá á¡áá»áá¯á·áá±á¬ node áá
áºáá¯á០pods áá»á¬ážááᯠáááºáá¯ááºáááºááŒá
áºáááºá á€ááá¹ááá¬ážááẠááá·áºá¡ááœáẠáááºážáá»ááºááœááºážáá«áá áááºááẠááœá±ážáá»ááºááŸá¯ááᯠááá·áºááá¯ááºáááºá preemptionPolicy: Never
á ááá¯á·áá±á¬áẠááŒáá¯áááºááŸá¬áá°ááŒááºáž áááŸááá±á¬á·áá«á pod ááẠáááºážá
á®ááŒááºážááœáẠáŠážá
áœá¬áááºáááºááŒá
áºááŒá®áž áááºážá¡ááœáẠá¡ááá²á·á¡áááºážá¡ááŒá
áºáá»á¬ážááᯠááŸá¬ááœá±ááẠá
á®á
ááºáá°á¡á¬áž á
á±á¬áá·áºááá¯ááºážáááºááŒá
áºáááºá
ááá¯á·áá±á¬áẠáá»áœááºá¯ááºááá¯á·ááẠá¡áááºááá¯ááœáŸááºááŒááá·áº pod áá
áºáá¯ááᯠáááºáá®ážáááºá 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 á áááºáááºááŸá¯á¡ááŒááºááŸá¯ááºážááẠáááºážáá±á«áºááœááºáá°áááºáá±á¬ááŒá±á¬áá·áº á€áá±áá¬áá±á·á áºá áá¯ááºáá±á¬ááºáá»ááºááᯠááŒáá·áºáá¬ážáá±á¬á¡ááá·áºááœáẠááááºážááááºážáá¬ážááẠá¡ááœááºá¡áá±ážááŒá®ážáá«áááºá áá»áŸááá±á¬á á¶ááŸá¯ááºážáá áºáá¯ááŒá áºááŒá®áž áá áºáá»áááºáááºážááœááºá áá±á¬ááºážáá±á¬ááŒá±ááŸááºážáá»ááºááŸá¬ kube-apiserver ááá¯á· á¡áááºážáá¯á¶ážááŸá±á¬áá·áºááŸá±ážá á±áááºá¡ááœáẠETCD cluster ááᯠmaster node áá»á¬ážáá±á«áºááœááºáá¬ážáááºááŒá áºáááºá áááºá€ááá¯á·ááá¯ááºááá¯ááºáá«á áá«áááºáá°áá»á¬ážááŒá¬ážááœáẠbandwidth áá±á¬ááºážáá±á¬ááºážááŒáá·áº ETCD ááᯠáááºááá¯ááºááá»áŸ áá®ážá ááºá¡á±á¬ááºáá¬ážáá«á ETCD á០node áááºáá»áŸ á¡á á¯á¡áá±ážá០ááááá¯ááºááŸá¯áááŸááá² ááœááºááœá¬ážááá¯ááºááŒá±á¬ááºážááá¯áááºáž á¡á¬áá¯á¶á áá¯ááºáá«á
á¡á á¯á¡ááœá²á·áá áºáá¯ááŸá á¡ááœá²á·áááºá¡áá±á¡ááœááºááᯠá¡ááœááºá¡áá»áœá¶ ááá¯ážááŒáŸáá·áºááŒááºážááẠá áœááºážáá±á¬ááºáááºáá¯ááºáá»á ááááºááŒáá·áº á¡ááŸá¬ážá¡ááœááºážáá¶ááá¯ááºáááºááᯠááá¯ážáá¬á á±ááá¯ááºááŒá®áž á¡áá¬á¡á¬ážáá¯á¶ážááẠááááºážááŸááá±ážááá·áºáááºáᯠááŸááºáá¬ážáá¬ážáá«á
áááºáá±á¬ááºááŸá¯ááᯠá áááºáááºááŸááºááŒááºážá¡ááŒá±á¬ááºáž áá»áœááºá¯ááºááá¯á·ááŒá±á¬ááá¯áá«áá á¡ááŒá¶ááŒá¯áá»ááºá¡áááºážáááºááŸááá«áááºá
-
á¡á á¯á¡áá±ážáá¡ááœááºá¡á á¬ážáá±á«áºáá°áááºá áá±á¬ááºážááœááºáá±á¬ áá¬á·ááºáá²ááŸááá« (áááºáááºááŸá¯ááá¯ááºáá«áááºá
áá®ááŸá¬ ). -
á¡áááºá áááºááẠDCs áá áºá á¯á¶ ááá¯á·ááá¯áẠááá·áºááœááºáááºááŸáá·áº áá áºááºáá»á¬ážááŒá¬ážááœáẠá¡á á¯á¡áá±ážáá áºáá¯ááᯠááŒáá·áºáá»ááºáá¬ážáá»áŸáẠááá·áºáááºáá»ááºá¡áááºážáááºááᯠááŒááºáááºáá« (áááºáááºááá¯ááºáááºá
áá®ááŸá¬ ).
áá±á¬ááºáá»ááº
á€áá±á¬ááºážáá«ážááœáẠáá»áœááºá¯ááºááá¯á·á¡ááœá²á·ááẠááá¯ááºáá¬áááºááŒáá¯ážá á¬ážááá·áºá¡áá»ááºáá»á¬ážááᯠáá±á¬áºááŒáááºá áááºážááẠáá¯ááºáá±á¬ááºáá»ááºáá»á¬ážá á¡ááá·áºááá·áºáá±á¬áºááŒáá»ááºááá¯ááºáá±á¬áºáááºáž á¡á á¯á¡ááœá²á·á¡áá±á«áºááá¯ááºážááᯠá¡áá±á¬ááºážáá¯á¶ážááŒá áºá¡á±á¬ááºááŒá¯áá¯ááºááẠá¡áá¯á¶ážáááºááá¯ááºááá·áº ááœá±ážáá»ááºá áá¬áá»á¬ážá á¡á á¯á¡áá±ážáá áºáá¯á á®ááẠáááºážáááá¯ááºááá¯ááºáááºážááŒáá·áº áá áºáá°áá°ážááŒá¬ážááŒá±á¬ááºáž ááŸááºážááŸááºážáááºážáááºážáááááŒá®áž ááœá²á·á ááºážááŸá¯ááá¯ááºáá¬ááŒá±ááŸááºážáá»ááºáá»á¬ážááẠáá»á¬ážá áœá¬ááœá²ááŒá¬ážááá¯ááºáááºá ááá¯á·ááŒá±á¬áá·áº áááºá Kubernetes á¡á á¯á¡áá±ážááᯠáááºáááºááá¯á·á á±á¬áá·áºááŒáá·áºáááºážááŸáá·áº áááºážáá áœááºážáá±á¬ááºáááºááᯠááŒáŸáá·áºáááºáá¯á¶ááŸáá·áºáááºáááºá ááá·áºáá¯á¶á·ááŒááºáá»ááºááá°ááẠá áááºáááºá á¬ážááœááºáá±á¬ááºážáá«áááºá ááá·áºá¡ááœá±á·á¡ááŒá¯á¶ááᯠááŸááºáá»ááºáá»á¬ážááœáẠáá»áŸáá±áá«á áááºážááẠá áááºáááºá á¬ážááœááºáá±á¬ááºážááŒá±á¬ááºáž ááááá¯ááºáááºááŒá áºáááºá
source: www.habr.com