á ááºážáááºážá¡áá áááºážáááŸááºáááºááŒá®áž áááºááŒáááºáá±á¬áá¯ááºáá±á¬ááºáá»ááºá¡ááœáẠá¡ááá®áá±ážááŸááºážáá áºáá¯áᶠáá®ážááá·áºá¡áááºážá¡ááŒá áºáá»á¬ážááᯠáá±á¬ááºáá¶á·áá±ážááẠá¡ááŒá²áááºážááá¯á¡ááºáá«áááºá áá«áá±ááá·áº á¡ááá®áá±ážááŸááºážáá±á«ááºážáá»á¬ážá áœá¬áᬠáá«áá«áá áºáá¯áááºážááŸá¬ á¡áá¯ááºáá¯ááºáá±áááºááá¯áááºáá±á¬á áááºážááá¯á·áá áºáŠážá á®á¡á¬áž á¡áááá·áºáá¯á¶ážááá¯á¡ááºáá±á¬ á¡áááºážá¡ááŒá áºáá»á¬ážááᯠáááºááá¯á·áá¶á·ááá¯ážáá±ážáááºáááºážá á¡áááºážá¡ááŒá áºáá¯á¶ážá áœá²ááŸá¯ááᯠáááºáááºáá²á·ááá¯á·ááá·áºáááºááá¯ááºááááºážá node áá»á¬ážááŒá¬áž load ááᯠááŸááºáááºá áœá¬ ááŒáá·áºáá±áááºážá á¡ááá®áá±ážááŸááºážááááºááá¯ážáá¬áá«á á¡áá»á¬ážááá¯ááºá áá±ážáá»ááá·áºááá¹ááá¬áž á¡áá¯ááºáá¯ááºááŒá±á¬ááºážááᯠáááºááá¯á·áá±áá»á¬á á±áááºáááºážá
á áá áºááœááºááŸááá±ááá·áº á¡áááºážá¡ááŒá áºá¡áá»áá¯ážá¡á á¬ážáá»á¬ážááŸáá·áº á áááºááẠááá¯á¡ááºááẠ- á€áááºááŸá¬ áááá¯áááºáá¬á¡áá»áááºááŸáá·áº RAM ááŒá áºáááºá k8s ááœáẠá€á¡áááºážá¡ááŒá áºá¡áá»áá¯ážá¡á á¬ážáá»á¬ážááᯠá¡á±á¬ááºáá«áá°áá áºáá»á¬ážááŒáá·áº ááá¯ááºážáá¬áááº-
- CPU - cores áá»á¬áž
- RAM - ááá¯ááº
ááá¯á·á¡ááŒááºá á¡áááºážá¡ááŒá áºáá áºáá¯á á®á¡ááœáẠááá¯á¡ááºáá»ááºáá»á¬áž ááŸá áºáá»áá¯ážáááºááŸááºááá¯ááºáááº- áá±á¬ááºážááá¯ááŸá¯áá»á¬áž О áááºá·áááº. áá±á¬ááºážááá¯áá»ááºáá»á¬áž - ááœááºááááºáá¬áá áºáá¯á¡á¬ážáááºáááºááẠnode áá áºáá¯áá¡ááá²á·á¡áááºážá¡ááŒá áºáá»á¬áž (ááŸáá·áº pod áá áºáá¯áá¯á¶áž) á¡ááœáẠá¡áááá·áºáá¯á¶ážááá¯á¡ááºáá»ááºáá»á¬ážááᯠááá·áºáááºáá»ááºáá»á¬ážááẠááœááºááááºáá¬á¡ááœááºáááá¯ááºáá±á¬á¡áááºážá¡ááŒá áºáá»á¬ážá¡áá±á«áº ááá·áºáááºááá·áºáááºááŸá¯áá áºáá¯áááºááŸááºáá±ážáááºá
áááºáá®ážáááºá áºááẠá¡áá»áá¯ážá¡á á¬áž ááŸá áºáá»áá¯ážáá¯á¶ážááᯠááŒááºáá¬ážá áœá¬ áááºááŸááºááẠáááá¯á¡ááºááŒá±á¬ááºáž áá¬ážáááºááẠá¡áá±ážááŒá®ážáá±á¬áºáááºáž á¡ááŒá¯á¡áá°ááẠá¡á±á¬ááºáá«á¡ááá¯ááºáž ááŒá áºáááá·áºáááº-
- á¡áááºážá¡ááŒá áºáá áºáá¯á ááá·áºáááºáá»ááºáá»á¬ážááá¯áᬠá¡ááá¡áááºážáá±á¬áºááŒáá¬ážáá«áá á€á¡áááºážá¡ááŒá áºá¡ááœáẠáá±á¬ááºážááá¯áá»ááºáá»á¬ážááẠááá·áºáááºáá»ááºáá»á¬ážááŸáá·áºáá®áá±á¬áááºááá¯ážááᯠá¡ááá¯á¡áá»á±á¬ááºáá°ááẠ(á€á¡áá¬ááᯠáá±á¬áºááŒááá·áºá¡áá¬áá»á¬ážááᯠáá±á«áºááá¯ááŒááºážááŒáá·áº áááºá¡áááºááŒá¯ááá¯ááºáááº)á á¡á²áá«ááœá±á ááááºáá±á¬á·á ááœááºááááºáá¬ááᯠáááºáááºááẠááá¯á¡ááºááá·áº á¡áááºážá¡ááŒá áºááá¬á áá áºáá¯áááºážááá¯áᬠááá·áºáááºáá¬ážáááºááŒá áºáááºá
- á¡áááºážá¡ááŒá áºáá áºáá¯á¡ááœáẠáá±á¬ááºážááá¯ááŸá¯áá»á¬ážááá¯áᬠá¡ááá¡áááºážáááºááŸááºáá¬ážáá«áá á€á¡áááºážá¡ááŒá áºá¡áá±á«áº ááá·áºáááºáá»ááºáá»á¬áž áá»ááŸááºáá¬ážááŒááºáž áááŸááá«á container ááẠnode áá¡áááºážá¡ááŒá áºáá»á¬ážááŒáá·áºáá¬ááá·áºáááºáá¬ážáááºá
áá®ážááŒá¬ážááœááºááááºáá¬á¡ááá·áºááœááºáá¬áá á¡á±á¬ááºáá«á¡áá¬áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯á á¡áááºážá¡ááŒá áºá á®áá¶ááá·áºááœá²ááŸá¯á¡ááá·áºááœááºáá¬áá namespace á¡ááá·áºááœááºáááºáž configure áá¯ááºááá¯ááºáá«áááºá
- ááá·áºáááºáá±á¬áẠâ ns ááŸá container/pod á¡ááá·áºááœáẠááá·áºáááºáá°áá«áááᯠáá±á¬áºááŒááŒá®áž container/pod áá±á«áºááŸá áá¯á¶áá±ááá·áºáááºáá»ááºáá»á¬ážááᯠáá±á¬áºááŒáááºá¡ááœáẠááá¯á¡ááºááá·áºá¡ááŒáẠáááá¬áááºááŸá¬ážáá±á¬ á¡áá®ááœááºááááºáá¬/ pods (ááá¯á·ááá¯áẠá¡ááŒááºá¡ááŸááºá¡á¬ážááŒáá·áº) áááºážááá¯á·á á¡áá±á¡ááœááºááᯠááá·áºáááºááẠááá¯á¡ááºááẠááá·áºáááºáá»ááºáá»á¬ážááŸáá·áº áá±á¬ááºážááá¯ááŸá¯áá»á¬ážááŸá áááºááá¯ážáá»á¬ážááœáẠááŒá áºááá¯ááºáá»á±ááœá¬ááŒá¬ážááŸá¯ááᯠáá¯á¶ážááŒááºáá«á
- á¡áááºážá¡ááŒá ẠQuotas â ns ááŸá ááœááºááááºáá¬á¡á¬ážáá¯á¶ážá¡ááœáẠáá±áá¯áá»á¡á¬ážááŒáá·áº ááá·áºáááºáá°áá«áááᯠáá±á¬áºááŒááŒá®áž áááºáááºážáá»ááºáá»á¬ážááŒá¬ážááœáẠá¡áááºážá¡ááŒá áºáá»á¬ážááᯠááá¯ááºážááŒá¬ážááẠá ááºážáááºážá¡ááŒá Ạá¡áá¯á¶ážááŒá¯ááẠ(áááºáááºážáá»ááºáá»á¬ážááᯠnode á¡ááá·áºááœáẠáááºážááŒááºá áœá¬ ááá¯ááºážááŒá¬ážááá¬ážááá·áºá¡áá« á¡áá¯á¶ážáááºáááº)
á¡á±á¬ááºáá«ááá¯á·ááẠá¡áááºážá¡ááŒá áºááá·áºáááºáá»ááºáá»á¬ážááᯠáááºááŸááºáá±ážááá·áº áááºáá®ážáááºá áºáá»á¬áž á¥ááá¬áá»á¬ážááŒá áºáááº-
-
áááºááŸááºáá¬ážáá±á¬ ááœááºááááºáá¬á¡ááá·áºááœááº-
containers: - name: app-nginx image: nginx resources: requests: memory: 1Gi limits: cpu: 200m
á¡á²áá«ááœá±á á€ááá á¹á ááœááºá nginx ááŒáá·áº container áá áºáá¯ááᯠrun ááẠnode ááœááºá¡áááºážáá¯á¶áž 1G á¡ááá²á· RAM ááŸáá·áº 0.2 CPU ááá¯á¡ááºáááºááŒá áºááŒá®áž ááœááºááááºáá¬á¡áá»á¬ážá á¯ááŸá¬ 0.2 CPU ááŸáá·áº node áá±á«áºááŸá RAM á¡á¬ážáá¯á¶ážááᯠá á¬ážáá¯á¶ážááá¯ááºáááºá
-
ááááºážááŒáá·áºá¡ááá·áº ns:
apiVersion: v1 kind: ResourceQuota metadata: name: nxs-test spec: hard: requests.cpu: 300m requests.memory: 1Gi limits.cpu: 700m limits.memory: 2Gi
á¡á²áá«ááœá±á áá°áááºáž ns ááŸá áá±á¬ááºážááá¯áá»áẠááœááºááááºáá¬á¡á¬ážáá¯á¶ážá áá±á«ááºážáááºááẠCPU á¡ááœáẠ300m ááŸáá·áº OP á¡ááœáẠ1G ááẠááá»á±á¬áºááœááºááá¯ááºáá«á ááá·áºáááºáá»ááºá¡á¬ážáá¯á¶ážá áá±á«ááºážá á¯ááẠCPU á¡ááœáẠ700m ááŸáá·áº OP á¡ááœáẠ2G ááŒá áºáááºá
-
ns ááŸá ááœááºááááºáá¬áá»á¬ážá¡ááœáẠáá°áááºážááá·áºáááºáá»ááºáá»á¬áž
apiVersion: v1 kind: LimitRange metadata: name: nxs-limit-per-container spec: limits: - type: Container defaultRequest: cpu: 100m memory: 1Gi default: cpu: 1 memory: 2Gi min: cpu: 50m memory: 500Mi max: cpu: 2 memory: 4Gi
á¡á²áá«ááœá±á ááœááºááááºáá¬á¡á¬ážáá¯á¶ážá¡ááœáẠáá°áááºážá¡áááºáá±áá¬ááœááºááœáẠáá±á¬ááºážááá¯áá»ááºááᯠCPU á¡ááœáẠ100m ááŸáá·áº OP á¡ááœáẠ1Gá ááá·áºáááºáá»áẠ- 1 CPU ááŸáá·áº 2Gá áá áºáá»áááºáááºážááŸá¬áááºá CPU (50m < x < 2) ááŸáá·áº RAM (500M < x < 4G) á¡ááœáẠáá±á¬ááºážááá¯ááŸá¯/ááá·áºáááºáá»ááºááœáẠááŒá áºááá¯ááºááá·áºáááºááá¯ážáá»á¬ážááᯠááá·áºáááºáááºááŸááºáá¬ážáááºá
-
Pod á¡ááá·áºááá·áºáááºáá»ááºáá»á¬áž ns-
apiVersion: v1 kind: LimitRange metadata: name: nxs-limit-pod spec: limits: - type: Pod max: cpu: 4 memory: 1Gi
á¡á²áá«ááœá±á default ns ááŸá pod áá áºáá¯á á®á¡ááœáẠ4 vCPU ááŸáá·áº 1G ááá·áºáááºáá»ááºááŸááá«áááºá
á¡áᯠáá®ááá·áºáááºáá»ááºááœá±ááᯠáááºááŸááºááŒááºážá áááºááᯠá¡áá»áá¯ážáá»á±ážáá°ážááœá± áá±ážá áœááºážááá¯ááºáááºááá¯áᬠááŒá±á¬ááŒáá»ááºáá«áááºá
node áá»á¬ážááŒá¬ážááœáẠáá»áááºááœááºáá»áŸá¬ áá»áááºááŸáááŸá¯ ááá¹ááá¬ážááᯠLoad áá¯ááºááŒááºážá
áááºááááá·áºá¡ááá¯ááºážá k8s á¡á áááºá¡ááá¯ááºážááẠááá¯áá²á·ááá¯á·áá±á¬ node áá»á¬ážááŒá¬ážááœáẠpods áá»á¬ážááŒáá·áºáá±ááŸá¯á¡ááœáẠáá¬áááºááŸááááºá Scheduleráááá»áá±á¬ algorithm á¡á á¡áá¯ááºáá¯ááºáááºá á áááºááẠá¡áá±á¬ááºážáá¯á¶áž node ááᯠááœá±ážáá»ááºáá±á¬á¡á᫠ဠalgorithm ááẠá¡ááá·áºááŸá áºááá·áºááŒáá·áº ááœá¬ážáááº-
- filtering ááá¯
- Ranging
á¡á²áá«ááœá±á áá±á¬áºááŒáá¬ážáá±á¬áá°áá«áá¡áá set áá áºáá¯á¡áá±á«áºá¡ááŒá±áá¶á pod áá áºáá¯ááᯠá áááºááẠááŒá áºááá¯ááºááá·áºá¡ááœáẠnode áá»á¬ážááᯠáááŠážááœá±ážáá»ááºáá¬ážáááºá ááá·áºááŸááºážáá»ááºáá»á¬áž (PodFitsResources ááᯠrun ááẠnode ááœáẠá¡áááºážá¡ááŒá áºáá»á¬áž á¡áá¯á¶á¡áá±á¬ááºááŸááááŸá á á áºáá±ážááŒááºážá¡áá«á¡áááº)á ááá¯á·áá±á¬áẠá¡ááá¯áá« node áá áºáá¯á á®á¡ááœááºá á¥á®ážá á¬ážáá±áž á¡ááŸááºáá»á¬áž áá»á®ážááŒáŸáá·áºááŒááºáž (á¡áá«á¡áááºá node áá áºáá¯ááœáẠá¡ááá²á·áááºážááŒá áºáá»á¬áž áá»á¬ážáá±áá±á á¡ááŸááºáá»á¬áž áá»á¬ážáá±áá± - LeastResourceAllocation/LeastRequestedPriority/BalancedResourceAllocation) ááŸáá·áº pod ááᯠá¡ááŸááºá¡áá»á¬ážáá¯á¶ážááŒáá·áº node áá±á«áºááœáẠá áááºááá¯ááºááẠ(node ââáá»á¬ážá áœá¬ááẠá€á¡ááŒá±á¡áá±á¡á¬áž áá áºááŒáááºáááºáž áá»á±áááºááœá¬ážáá«áá ááá¯á·áá±á¬áẠáá»áááºážáá áºáá¯ááᯠááœá±ážáá¬ážáááº)á
áá
áºáá»áááºáááºážááŸá¬áááºá node áá
áºáá¯ááááŸáááá¯ááºáá±á¬á¡áááºážá¡ááŒá
áºáá»á¬ážááá¯á¡áá²ááŒááºáá±á¬á¡áá«á á¡áá»áááºááá¬ážááœá²áá°ááẠetcd ááœááºááááºážáááºážáá¬ážááá·áºáá±áá¬ááŸáááºážááœáŸááºáá¬ážáááºááá¯áá¬ážáááºáááºááá¯á¡ááºáááºá ဠnode áá±á«áºááœáẠáá¯ááºáá±á¬ááºáá±ááá·áº pod áá
áºáá¯á
á®á áá±á¬ááºážááá¯áá¬ážáá±á¬/ááá·áºááẠá¡áááºážá¡ááŒá
áºááá¬áá¡ááœááºá ááá¯á·áá±á¬áº á¡ááŸááºááááºá¡áááºážá¡ááŒá
áºáá¯á¶ážá
áœá²ááŸá¯á¡ááœáẠááá¯ááºáá«á á€á¡áá»ááºá¡áááºááᯠcommand output á០ááá°ááá¯ááºáááºá kubectl describe node $NODE
á¥ááá¬:
# kubectl describe nodes nxs-k8s-s1
..
Non-terminated Pods: (9 in total)
Namespace Name CPU Requests CPU Limits Memory Requests Memory Limits AGE
--------- ---- ------------ ---------- --------------- ------------- ---
ingress-nginx nginx-ingress-controller-754b85bf44-qkt2t 0 (0%) 0 (0%) 0 (0%) 0 (0%) 233d
kube-system kube-flannel-26bl4 150m (0%) 300m (1%) 64M (0%) 500M (1%) 233d
kube-system kube-proxy-exporter-cb629 0 (0%) 0 (0%) 0 (0%) 0 (0%) 233d
kube-system kube-proxy-x9fsc 0 (0%) 0 (0%) 0 (0%) 0 (0%) 233d
kube-system nginx-proxy-k8s-worker-s1 25m (0%) 300m (1%) 32M (0%) 512M (1%) 233d
nxs-monitoring alertmanager-main-1 100m (0%) 100m (0%) 425Mi (1%) 25Mi (0%) 233d
nxs-logging filebeat-lmsmp 100m (0%) 0 (0%) 100Mi (0%) 200Mi (0%) 233d
nxs-monitoring node-exporter-v4gdq 112m (0%) 122m (0%) 200Mi (0%) 220Mi (0%) 233d
Allocated resources:
(Total limits may be over 100 percent, i.e., overcommitted.)
Resource Requests Limits
-------- -------- ------
cpu 487m (3%) 822m (5%)
memory 15856217600 (2%) 749976320 (3%)
ephemeral-storage 0 (0%) 0 (0%)
á€áá±áá¬ááœáẠpods á¡á¬ážáá¯á¶ážááᯠáá®ážááŒá¬áž node áá áºáá¯áá±á«áºááœáẠáá¯ááºáá±á¬ááºáá±ááá·áºá¡ááŒáẠpod áá áºáá¯á á®á áá±á¬ááºážááá¯ááá·áº á¡áááºážá¡ááŒá áºáá»á¬ážááᯠáá»áœááºá¯ááºááá¯á· ááŒááºááœá±á·ááááºá cronjob-cron-events-1573793820-xt6q9 pod ááᯠá áááºáá±á¬á¡áá« á¡áá»áááºááá¬ážáá±ážááœá²áá° ááŸááºáááºážáá»á¬ážááẠáááºáá²á·ááá¯á· ááŒá áºááẠ(á áááºááŒááºáž ááœááºáááºážá á¡ááŒá±á¬ááºážááŒáá»ááºáá»á¬áž -v=10 ááœáẠ10 áá¯ááŒá±á¬áẠlogging á¡ááá·áºááᯠáááºááŸááºáá±á¬á¡áá« á€á¡áá»ááºá¡ááẠáá±á«áºáá¬áááá·áºááẠá ):
ááŸááºáááºáž
I1115 07:57:21.637791 1 scheduling_queue.go:908] About to try and schedule pod nxs-stage/cronjob-cron-events-1573793820-xt6q9
I1115 07:57:21.637804 1 scheduler.go:453] Attempting to schedule pod: nxs-stage/cronjob-cron-events-1573793820-xt6q9
I1115 07:57:21.638285 1 predicates.go:829] Schedule Pod nxs-stage/cronjob-cron-events-1573793820-xt6q9 on Node nxs-k8s-s5 is allowed, Node is running only 16 out of 110 Pods.
I1115 07:57:21.638300 1 predicates.go:829] Schedule Pod nxs-stage/cronjob-cron-events-1573793820-xt6q9 on Node nxs-k8s-s6 is allowed, Node is running only 20 out of 110 Pods.
I1115 07:57:21.638322 1 predicates.go:829] Schedule Pod nxs-stage/cronjob-cron-events-1573793820-xt6q9 on Node nxs-k8s-s3 is allowed, Node is running only 20 out of 110 Pods.
I1115 07:57:21.638322 1 predicates.go:829] Schedule Pod nxs-stage/cronjob-cron-events-1573793820-xt6q9 on Node nxs-k8s-s4 is allowed, Node is running only 17 out of 110 Pods.
I1115 07:57:21.638334 1 predicates.go:829] Schedule Pod nxs-stage/cronjob-cron-events-1573793820-xt6q9 on Node nxs-k8s-s10 is allowed, Node is running only 16 out of 110 Pods.
I1115 07:57:21.638365 1 predicates.go:829] Schedule Pod nxs-stage/cronjob-cron-events-1573793820-xt6q9 on Node nxs-k8s-s12 is allowed, Node is running only 9 out of 110 Pods.
I1115 07:57:21.638334 1 predicates.go:829] Schedule Pod nxs-stage/cronjob-cron-events-1573793820-xt6q9 on Node nxs-k8s-s11 is allowed, Node is running only 11 out of 110 Pods.
I1115 07:57:21.638385 1 predicates.go:829] Schedule Pod nxs-stage/cronjob-cron-events-1573793820-xt6q9 on Node nxs-k8s-s1 is allowed, Node is running only 19 out of 110 Pods.
I1115 07:57:21.638402 1 predicates.go:829] Schedule Pod nxs-stage/cronjob-cron-events-1573793820-xt6q9 on Node nxs-k8s-s2 is allowed, Node is running only 21 out of 110 Pods.
I1115 07:57:21.638383 1 predicates.go:829] Schedule Pod nxs-stage/cronjob-cron-events-1573793820-xt6q9 on Node nxs-k8s-s9 is allowed, Node is running only 16 out of 110 Pods.
I1115 07:57:21.638335 1 predicates.go:829] Schedule Pod nxs-stage/cronjob-cron-events-1573793820-xt6q9 on Node nxs-k8s-s8 is allowed, Node is running only 18 out of 110 Pods.
I1115 07:57:21.638408 1 predicates.go:829] Schedule Pod nxs-stage/cronjob-cron-events-1573793820-xt6q9 on Node nxs-k8s-s13 is allowed, Node is running only 8 out of 110 Pods.
I1115 07:57:21.638478 1 predicates.go:1369] Schedule Pod nxs-stage/cronjob-cron-events-1573793820-xt6q9 on Node nxs-k8s-s10 is allowed, existing pods anti-affinity terms satisfied.
I1115 07:57:21.638505 1 predicates.go:1369] Schedule Pod nxs-stage/cronjob-cron-events-1573793820-xt6q9 on Node nxs-k8s-s8 is allowed, existing pods anti-affinity terms satisfied.
I1115 07:57:21.638577 1 predicates.go:1369] Schedule Pod nxs-stage/cronjob-cron-events-1573793820-xt6q9 on Node nxs-k8s-s9 is allowed, existing pods anti-affinity terms satisfied.
I1115 07:57:21.638583 1 predicates.go:829] Schedule Pod nxs-stage/cronjob-cron-events-1573793820-xt6q9 on Node nxs-k8s-s7 is allowed, Node is running only 25 out of 110 Pods.
I1115 07:57:21.638932 1 resource_allocation.go:78] cronjob-cron-events-1573793820-xt6q9 -> nxs-k8s-s10: BalancedResourceAllocation, capacity 39900 millicores 66620178432 memory bytes, total request 2343 millicores 9640186880 memory bytes, score 9
I1115 07:57:21.638946 1 resource_allocation.go:78] cronjob-cron-events-1573793820-xt6q9 -> nxs-k8s-s10: LeastResourceAllocation, capacity 39900 millicores 66620178432 memory bytes, total request 2343 millicores 9640186880 memory bytes, score 8
I1115 07:57:21.638961 1 resource_allocation.go:78] cronjob-cron-events-1573793820-xt6q9 -> nxs-k8s-s9: BalancedResourceAllocation, capacity 39900 millicores 66620170240 memory bytes, total request 4107 millicores 11307422720 memory bytes, score 9
I1115 07:57:21.638971 1 resource_allocation.go:78] cronjob-cron-events-1573793820-xt6q9 -> nxs-k8s-s8: BalancedResourceAllocation, capacity 39900 millicores 66620178432 memory bytes, total request 5847 millicores 24333637120 memory bytes, score 7
I1115 07:57:21.638975 1 resource_allocation.go:78] cronjob-cron-events-1573793820-xt6q9 -> nxs-k8s-s9: LeastResourceAllocation, capacity 39900 millicores 66620170240 memory bytes, total request 4107 millicores 11307422720 memory bytes, score 8
I1115 07:57:21.638990 1 resource_allocation.go:78] cronjob-cron-events-1573793820-xt6q9 -> nxs-k8s-s8: LeastResourceAllocation, capacity 39900 millicores 66620178432 memory bytes, total request 5847 millicores 24333637120 memory bytes, score 7
I1115 07:57:21.639022 1 generic_scheduler.go:726] cronjob-cron-events-1573793820-xt6q9_nxs-stage -> nxs-k8s-s10: TaintTolerationPriority, Score: (10)
I1115 07:57:21.639030 1 generic_scheduler.go:726] cronjob-cron-events-1573793820-xt6q9_nxs-stage -> nxs-k8s-s8: TaintTolerationPriority, Score: (10)
I1115 07:57:21.639034 1 generic_scheduler.go:726] cronjob-cron-events-1573793820-xt6q9_nxs-stage -> nxs-k8s-s9: TaintTolerationPriority, Score: (10)
I1115 07:57:21.639041 1 generic_scheduler.go:726] cronjob-cron-events-1573793820-xt6q9_nxs-stage -> nxs-k8s-s10: NodeAffinityPriority, Score: (0)
I1115 07:57:21.639053 1 generic_scheduler.go:726] cronjob-cron-events-1573793820-xt6q9_nxs-stage -> nxs-k8s-s8: NodeAffinityPriority, Score: (0)
I1115 07:57:21.639059 1 generic_scheduler.go:726] cronjob-cron-events-1573793820-xt6q9_nxs-stage -> nxs-k8s-s9: NodeAffinityPriority, Score: (0)
I1115 07:57:21.639061 1 interpod_affinity.go:237] cronjob-cron-events-1573793820-xt6q9 -> nxs-k8s-s10: InterPodAffinityPriority, Score: (0)
I1115 07:57:21.639063 1 selector_spreading.go:146] cronjob-cron-events-1573793820-xt6q9 -> nxs-k8s-s10: SelectorSpreadPriority, Score: (10)
I1115 07:57:21.639073 1 interpod_affinity.go:237] cronjob-cron-events-1573793820-xt6q9 -> nxs-k8s-s8: InterPodAffinityPriority, Score: (0)
I1115 07:57:21.639077 1 selector_spreading.go:146] cronjob-cron-events-1573793820-xt6q9 -> nxs-k8s-s8: SelectorSpreadPriority, Score: (10)
I1115 07:57:21.639085 1 interpod_affinity.go:237] cronjob-cron-events-1573793820-xt6q9 -> nxs-k8s-s9: InterPodAffinityPriority, Score: (0)
I1115 07:57:21.639088 1 selector_spreading.go:146] cronjob-cron-events-1573793820-xt6q9 -> nxs-k8s-s9: SelectorSpreadPriority, Score: (10)
I1115 07:57:21.639103 1 generic_scheduler.go:726] cronjob-cron-events-1573793820-xt6q9_nxs-stage -> nxs-k8s-s10: SelectorSpreadPriority, Score: (10)
I1115 07:57:21.639109 1 generic_scheduler.go:726] cronjob-cron-events-1573793820-xt6q9_nxs-stage -> nxs-k8s-s8: SelectorSpreadPriority, Score: (10)
I1115 07:57:21.639114 1 generic_scheduler.go:726] cronjob-cron-events-1573793820-xt6q9_nxs-stage -> nxs-k8s-s9: SelectorSpreadPriority, Score: (10)
I1115 07:57:21.639127 1 generic_scheduler.go:781] Host nxs-k8s-s10 => Score 100037
I1115 07:57:21.639150 1 generic_scheduler.go:781] Host nxs-k8s-s8 => Score 100034
I1115 07:57:21.639154 1 generic_scheduler.go:781] Host nxs-k8s-s9 => Score 100037
I1115 07:57:21.639267 1 scheduler_binder.go:269] AssumePodVolumes for pod "nxs-stage/cronjob-cron-events-1573793820-xt6q9", node "nxs-k8s-s10"
I1115 07:57:21.639286 1 scheduler_binder.go:279] AssumePodVolumes for pod "nxs-stage/cronjob-cron-events-1573793820-xt6q9", node "nxs-k8s-s10": all PVCs bound and nothing to do
I1115 07:57:21.639333 1 factory.go:733] Attempting to bind cronjob-cron-events-1573793820-xt6q9 to nxs-k8s-s10
á€ááœáẠá¡á ááá¯ááºážááœáẠá¡áá»áááºááá¬ážáá±ážááœá²áá°ááẠá á áºáá¯ááºááŒá®áž áááºážááᯠá áááºááá¯ááºááá·áº áá¯á¶ááŸáẠ3 áá¯á á¬áááºáž (nxs-k8s-s8, nxs-k8s-s9, nxs-k8s-s10) ááá¯áá¯ááºáá±ážáááºááᯠáá»áœááºá¯ááºááá¯á·ááœá±á·ááŒááºááá«áááºá ááá¯á·áá±á¬áẠáááºážááẠá¡ááá·áºáá»á±á¬áºáá¯á¶áž node áá áºáá¯á á®á¡ááœáẠ(BalancedResourceAllocationá LeastResourceAllocation á¡áá«á¡áááº) parameters áá»á¬ážá áœá¬ááᯠá¡ááŒá±áá¶á áááŸááºáá»á¬ážááᯠááœááºáá»ááºáááºá á¡áá¯á¶ážá áœááºá¡á¬ážááŒáá·áºá pod á¡á¬áž á¡ááŸááºá¡áá»á¬ážáá¯á¶ážáá¶áá«ááºááŒáá·áº node ááœááºá á®á ááºáá¬ážááẠ(á€áá±áá¬ááœáẠnode ááŸá áºáá¯ááẠáá áºááŒáá¯ááºáááºááœáẠá¡ááŸáẠ100037 ááŸááááºá ááá¯á·ááŒá±á¬áá·áº áá»áááºážáá áºáá¯ááᯠááœá±ážáá¬ážááẠ- nxs-k8s-s10)á
áá±á¬ááºáá»ááº: á¡áááºá ááá·áºáááºáá»ááºáá»á¬ážááááºááŸááºáá¬ážááá·áº áá¯ááºáá áºáá¯ááẠáá±á¬á·ááºáá²áá áºáá¯á¡á¬áž áá¯ááºáá±á¬ááºáá±áá«áá k8s (á¡áááºážá¡ááŒá Ạáá¯á¶ážá áœá²ááŸá¯ ááŸá¯áá±á¬áá·áºááŸááŒáá·áºáá»áŸááº) áááºážááẠဠnode ááœáẠááá¯ááá¯á·áá±á¬ pods áá¯á¶ážááááŸáááá²á·ááá¯á· áá®áá»áŸáááºááŒá áºáááºá ááá¯á·ááŒá±á¬áá·áºá á¡áááºá ááá·áºááœááºá á¡ááŒá±á¡áá±á¡áá áá áºáááºážáá±á¬áá¯ááºáááºážá áẠ(á¥ááᬠwowza) ááŸáááŒá®áž áááºážá¡ááœáẠááá·áºáááºáá»ááºáá»á¬ážááááºááŸááºáá¬ážáá«áá ဠpod ááẠnode áá¡áááºážá¡ááŒá áºá¡á¬ážáá¯á¶ážááᯠá¡ááŸááºááááºá á¬ážáá±á¬á¡áá«ááœáẠá¡ááŒá±á¡áá±áá áºáá¯ááŒá áºáá±á«áºáá¬ááá¯ááºáááºá ááá¯á·áá±á¬áº k8s á¡ááœáẠဠnode á¡áá¯ááºááá¯ááºáá±á¬ áá¯ááºáá»á¬ážááá«áá±á¬ node á¡ááŒá Ạá¡ááá·áºáááºááŸááºááá¯ááºáá±á¬á¡áá« (áááŸáááá¯ááºáá±á¬á¡áááºážá¡ááŒá áºáá»á¬ážááᯠá¡áá²ááŒááºáá¬ááœáẠá¡ááá¡áá») á¡ááŸááºáá±ážááá·áºá¡áá« áá°áá®áá±á¬á¡ááŸááºá¡áá±á¡ááœááºááᯠáá»á®ážááŒáŸáá·áºáááºááŒá áºááŒá®ážá áááºážááẠá¡áá¯á¶ážááœáẠnode áá»á¬ážááŒá¬áž load ááᯠááá®ááá¬ááœá²áá±ááŸá¯ááŒá áºá á±ááá¯ááºáááºá
Pod á ááŸááºáá¯ááºááŒááºáž
áááºááááá·áºá¡ááá¯ááºážá pod áá áºáá¯á á®ááẠQoS á¡áááºáž 3 áá¯áá²á០áá áºáá¯ááᯠáááºááŸááºáá±ážáááº-
- á¡á¬ááá¶áá«áááºá â pod á¡ááœááºážááŸá container áá áºáá¯á á®á¡ááœáẠmemory ááŸáá·áº cpu á¡ááœáẠáá±á¬ááºážááá¯áá»ááºááŸáá·áº ááá·áºáááºáá»ááºáá»á¬ážááᯠáááºááŸááºáá¬ážáá±á¬á¡áá«ááœáẠáááºááŸááºáá±ážáá¬ážááŒá®áž á¡ááá¯áá«áááºááá¯ážáá»á¬ážááẠáá°áá®ááááº
- áá±á«ááºááœá²ááá¯ááºáá±á¬ â áá°ážáá²ááœáẠá¡áááºážáá¯á¶áž ááœááºááááºáá¬áá áºáá¯ááẠáá±á¬ááºážááá¯áá»áẠ<ááá·áºáááºáá»ááºááŒáá·áº áá±á¬ááºážááá¯áá»ááºááŸáá·áº ááá·áºáááºáá»ááºáá áºáá¯ááŸááááºá
- á¡áá±á¬ááºážáá¯á¶ážá¡á¬ážáá¯ááºááŸá¯ - áá°ážáá²ááœáẠááœááºááááºáá¬áá áºáá¯á¶ážááŸáááŸáááá·áºá¡áá« á¡áááºážá¡ááŒá áºá¡ááá·áºá¡áááºááŸááááºá
áá áºáá»áááºáááºážááŸá¬áááºá node áá áºáá¯ááẠá¡áááºážá¡ááŒá áºáá»á¬áž (diská memory) áá»áá¯á·áá²á·ááŸá¯ááᯠááœá±á·ááŒá¯á¶ááá±á¬á¡áá«á kubelet ááẠpod ááŸáá·áº áááºážá QoS á¡áááºážá¡á á¬ážááᯠáŠážá á¬ážáá±ážááá·áºááœááºážá ááºážá á¬ážáá±á¬ áá®ážááŒá¬áž algorithm áá áºáá¯á¡á pods áá»á¬ážááᯠá¡ááá·áºáááºááŸááºááŒá®áž ááŸááºáá¯ááºááŒááºáž á áááºáá«áááºá á¥ááá¬á¡á¬ážááŒáá·áºá áá»áœááºá¯ááºááá¯á·ááẠRAM á¡ááŒá±á¬ááºážááŒá±á¬áá±áá»áŸáẠQoS á¡áááºážá¡á á¬ážáá±á«áºá¡ááŒá±áá¶á á¡á±á¬ááºáá«áá°á¡á á¡ááŸááºáá»á¬ážááᯠáá»á®ážááŒáŸáá·áºáááº-
- á¡á¬ááá¶: -998
- á¡áá±á¬ááºážáá¯á¶ážáá±á¬ááºááœááºááŸá¯: 1000
- áá±á«ááºááœá²ááá¯ááºáá±á¬: áááá áº(á¡ááŒáá·áºáá¯á¶áž(2, 1000 - (1000 * memoryRequestBytes) / machineMemoryCapacityBytes), 999)
á¡á²áá«ááœá±á áá°áá®áá±á¬áŠážá á¬ážáá±ážááŒáá·áºá kubelet ááẠnode ááŸá¡áá±á¬ááºážáá¯á¶ážááŒáá¯ážá á¬ážá¡á¬ážáá¯ááºááŸá¯ QoS á¡áááºážá¡á á¬ážááŸáá·áº pods áá»á¬ážááᯠáŠážá áœá¬ááŸááºáá¯ááºáááºááŒá áºáááºá
áá±á¬ááºáá»ááº: á¡áááºá áááºááẠáááºážááœáẠá¡áááºážá¡ááŒá áºáá»á¬áž áááŸááá±á¬á¡áá«ááœáẠááá¯áá»ááºáá±á¬ pod ááᯠnode á០ááŸááºáá¯ááºáá¶áááá¯ááºááŒá±ááᯠáá»áŸá±á¬á·áá»ááá¯áá«á áááºážááᯠáŠážá á¬ážáá±ážááŸáá·áºá¡áá°á áááºážá¡ááœáẠáá±á¬ááºážááá¯ááŸá¯/ááá·áºáááºáá»ááºááᯠáááºááŸááºááẠááá¯á áá¯ááºááẠááá¯á¡ááºáá«áááºá
á¡ááá®áá±ážááŸááºáž pods (HPA) á á¡áá»á¬ážááá¯áẠá¡ááá¯á¡áá»á±á¬áẠá¡ááœááºá¡á á¬áž ááŒá±á¬ááºážáá²ááŒááºážá¡ááœáẠááá¹ááá¬áž
á¡áááºážá¡ááŒá áºáá»á¬ážá¡áá¯á¶ážááŒá¯ááŸá¯á¡áá±á«áºáá°áááºá pods á¡áá±á¡ááœááºááᯠá¡ááá¯á¡áá»á±á¬ááºááá¯ážáááºááŸáá·áº áá»áŸá±á¬á·áá»ááẠáá¯ááºáá±á¬ááºááá·áºá¡áá« (system - CPU/RAM ááá¯á·ááá¯áẠuser - rps) ááŒá áºááá·áº k8s entity á HPA (á¡áá»á¬ážááá¯áẠPod Autoscaler)á á¡ááá¯áá« algorithm ááŸá¬ á¡á±á¬ááºáá«á¡ááá¯ááºážááŒá áºááẠá
- áá±á·áá¬áá¬ážáá±á¬á¡áááºážá¡ááŒá áºáá»á¬ážá áááºááŸááááºááŸá¯ááŸá¯áá»á¬ážááᯠáá¯á¶ážááŒááºááẠ(currentMetricValue)
- á¡áááºážá¡ááŒá áºá¡ááœáẠááá¯áá»ááºáá±á¬áááºááá¯ážáá»á¬ážááᯠáá¯á¶ážááŒááºááẠ(desiredMetricValue) ááẠá áá áºá¡áááºážá¡ááŒá áºáá»á¬ážá¡ááœáẠáá±á¬ááºážááá¯ááŸá¯ááᯠá¡áá¯á¶ážááŒá¯á áááºááŸááºáá±ážáááºá
- áááºááŸááá¯á¶á á¶áá°á¡áá±á¡ááœááºááᯠáá¯á¶ážááŒááºááẠ(currentReplicas)
- á¡á±á¬ááºáá«áá¯á¶áá±áááºážááẠááá¯áá»ááºáá±á¬áá¯á¶áá°áá»á¬áž (desiredReplicas) ááᯠááœááºáá»ááºáááº
desiredReplicas = [CurrentReplicas * (CurrentMetricValue/desiredMetricValue )]
á€á¡ááŒá±á¡áá±ááœááºá coefficient (currentMetricValue/heavoredMetricValue) ááẠ1 ááŸáá·áº áá®ážá ááºáá±á¬á¡áá«ááœááºá á¡ááá¯ááºážá¡áᬠáá»á²á·ááœááºááŒááºáž ááŒá áºáá±á«áºáá¬áááºááá¯ááºáá« (á€ááá á¹á ááœááºá áá»áœááºá¯ááºááá¯á·ááẠááœáá·áºááŒá¯ááá¯ááºáá±á¬á¡ááŸá¬ážááᯠááá¯ááºááá¯ááºáááºááŸááºááá¯ááºáááºá áááºážááẠáá°áááºážá¡á¬ážááŒáá·áº 0.1) ááŒá áºáááºá
CPU áá¯á¶ážá áœá²ááŸá¯áá±á«áºáá°áááºá áá¯á¶áá°á¡áá±á¡ááœááºááᯠááŒá±á¬ááºážáá²áááºááá¯á¡ááºááá·áº app-test application (Deployment áá¯áá±á¬áºááŒáá¬ážáááº) á á¥ááá¬ááᯠá¡áá¯á¶ážááŒá¯á hpa á¡áá¯ááºáá¯ááºáá¯á¶ááᯠááŒáá·áºááŒáá«á áá¯á·á
-
áá»áŸá±á¬ááºááœáŸá¬áá±á¬áºááŒáá»ááº
kind: Deployment apiVersion: apps/v1beta2 metadata: name: app-test spec: selector: matchLabels: app: app-test replicas: 2 template: metadata: labels: app: app-test spec: containers: - name: nginx image: registry.nixys.ru/generic-images/nginx imagePullPolicy: Always resources: requests: cpu: 60m ports: - name: http containerPort: 80 - name: nginx-exporter image: nginx/nginx-prometheus-exporter resources: requests: cpu: 30m ports: - name: nginx-exporter containerPort: 9113 args: - -nginx.scrape-uri - http://127.0.0.1:80/nginx-status
á¡á²áá«ááœá±á áááºááŸááºáá¬ážáá±á¬ áá áºáá¯á á®á¡ááœáẠnginx ááŸáá·áº nginx-exporter containers ááŸá áºáá¯áá«ááŸááá±á¬ á¡ááá®áá±ážááŸááºáž pod ááᯠáááŠážááœáẠá¥ááá¬ááŸá áºáá¯ááŒáá·áº á áááºáá¯ááºáá±á¬ááºáááºááᯠáá»áœááºá¯ááºááá¯á·ááœá±á·ááŒááºááá«áááºá áá±á¬ááºážááá¯ááŸá¯áá»á¬áž CPU á¡ááœááºá
-
HPA ááŒá±ááŒá¬áá»ááº
apiVersion: autoscaling/v2beta2 kind: HorizontalPodAutoscaler metadata: name: app-test-hpa spec: maxReplicas: 10 minReplicas: 2 scaleTargetRef: apiVersion: extensions/v1beta1 kind: Deployment name: app-test metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 30
á¡á²áá«ááœá±á áá»áœááºá¯ááºááá¯á·ááẠDeployment app-test ááᯠá á±á¬áá·áºááŒáá·áºááŒá®áž cpu ááœáŸááºááŒáá»ááºá¡áá±á«áº á¡ááŒá±áá¶á á¡ááá®áá±ážááŸááºážááŸáá·áº pods á¡áá±á¡ááœááºááᯠáá»áááºááŸááá±ážááá·áº hpa áá áºáá¯ááᯠáááºáá®ážáá²á·ááẠ(áá»áœááºá¯ááºááá¯á· áá»áŸá±á¬áºááá·áºáá¬ážááá·áºá¡áá¬ááẠáááºážáá±á¬ááºážááá¯áá¬ážáá±á¬ CPU á 30% á á¬ážáá¯á¶ážááá·áºáááºáᯠáá»áœááºá¯ááºááá¯á· áá»áŸá±á¬áºááá·áºáá¬ážáááº)á 2-10 á¡ááœá¬á¡áá±ážá
ááá¯á áá»áœááºá¯ááºááá¯á·ááẠáá®ážááá¯áá»á¬ážáá²á០áá áºáá¯ááá¯á· áááºáá áºáá¯á¡á¬áž ááá·áºáá«á hpa áááºáááºááŸá¯ ááá¹ááá¬ážááᯠááŒáá·áºááŒáá«á áá¯á·á
# kubectl top pod NAME CPU(cores) MEMORY(bytes) app-test-78559f8f44-pgs58 101m 243Mi app-test-78559f8f44-cj4jz 4m 240Mi
á á¯á á¯áá±á«ááºáž áá»áœááºá¯ááºááá¯á·ááœáẠá¡á±á¬ááºáá«á¡ááá¯ááºáž ááŸááá«áááºá
- ááá¯áá»ááºáá±á¬áááºááá¯áž (desiredMetricValue) - hpa áááºáááºáá»á¬ážá¡áá áá»áœááºá¯ááºááá¯á·ááœáẠ30% ááŸááááº
- áááºááŸááááºááá¯áž (currentMetricValue) - ááœááºáá»ááºáááºá¡ááœááºá ááááºážáá»á¯ááºáá°-áááºáá±áá»á¬ááẠá¡áááºážá¡ááŒá
áºáá¯á¶ážá
áœá²ááŸá¯ááá»ááºážáá»áŸáááºááá¯ážááᯠ% ááœáẠááœááºáá»ááºáááºá á¡ááŒá±á¡áá±á¡á á¡á±á¬ááºáá«ááá¯á·ááᯠáá¯ááºáá±á¬ááºáááº-
- áááºááá áºáá¬áá¬á០pod áááºááá áºáá»á¬ážá áááááááºááá¯ážáá»á¬ážááᯠáááºáá¶áááŸáááẠá i.e. 101m ááŸáá·áº 4m
- áá»ááºážáá»áŸ áááááááºááá¯ážááᯠááœááºáá»ááºááẠ(101m+4m)/2=53m
- ááá¯áá»ááºáá±á¬ á¡áááºážá¡ááŒá Ạáá¯á¶ážá áœá²ááŸá¯á¡ááœáẠáááááááºááá¯ážááᯠáááŸáááẠ(áááºážá¡ááœááºá ááœááºááááºáá¬á¡á¬ážáá¯á¶ážá áá±á¬ááºážááá¯ááŸá¯áá»á¬ážááᯠá¡áá»ááºážáá»á¯ááºáá¬ážáááº) 60m + 30m = 90m
- áá±á¬ááºážááá¯áá»áẠpod ááŸáá·áºáááºá áẠCPU áá¯á¶ážá áœá²ááŸá¯ áá»ááºážáá»áŸáá¬ááá¯ááºááŸá¯ááºážááᯠááœááºáá»ááºááẠ53m/90m*100%=59%á
ááᯠáá»áœááºá¯ááºááá¯á·ááœáẠáá¯á¶á á¶áá° á¡áá±á¡ááœááºááᯠááŒá±á¬ááºážáá²ááẠááá¯á¡ááºááŒááºáž ááŸáá áááŸá áá¯á¶ážááŒááºááẠááá¯á¡ááºááá·áº á¡áá¬á¡á¬ážáá¯á¶áž ááŸááááºá áááºážááᯠááŒá¯áá¯ááºáááºá áá»áœááºá¯ááºááá¯á·ááẠááááºážááááºážááᯠááœááºáá»ááºáááº-
ratio = 59% / 30% = 1.96
á¡á²áá«ááœá±á áá¯á¶áá°á¡áá±á¡ááœááºááᯠ~á á ááá¯ážááŒá®áž ááá¬áááŸá¬ [2*2] = 1.96 ááŒá áºáááºá
áááá¯á¶ážáá»á¯ááº: áááºááœá±á·ááŒááºáááá·áºá¡ááá¯ááºáž á€ááá¹ááá¬ážá¡áá¯ááºáá¯ááºáááºá¡ááœáẠááá¯á¡ááºáá±á¬á¡ááŒá±á¡áá±ááŸá¬ á á±á¬áá·áºááŒáá·áºáá±á·áá¬áá¬ážáá±á¬ pod á¡ááœááºážááŸá ááœááºááááºáá¬áá»á¬ážá¡á¬ážáá¯á¶ážá¡ááœáẠáá±á¬ááºážááá¯ááŸá¯áá»á¬ážááŸááá±ááŒááºážáááºááŒá áºáááºá
node áá»á¬ážá á¡áá»á¬ážááá¯áẠá¡ááá¯á¡áá»á±á¬áẠá¡ááá¯ááºážá¡áᬠáá»á²á·ááœááºááŒááºážá¡ááœáẠááá¹ááá¬áž (Cluster Autoscaler)
load surges áá»á¬ážá¡ááœááºáž á áá áºá¡áá±á«áº á¡áá»ááºááá±á¬áá±á¬ááºáá±á¬ áááºáá±á¬ááºááŸá¯áá»á¬ážááᯠáá»ááºááŒááºá á±áááºá¡ááœáẠconfigured hpa ááŸáááŒááºážááẠááá¯á¶áá±á¬ááºáá«á á¥ááá¬á¡á¬ážááŒáá·áºá hpa controller áááºáá±áá»á¬ááŸá áááºáááºáá»á¬ážá¡áá áá¯á¶áá°á¡áá±á¡ááœááºááᯠá áááá¯ážááẠááá¯á¡ááºááŒá±á¬ááºáž áá¯á¶ážááŒááºáááºá ááá¯á·áá±á¬áº á¡ááá¯áá« pods á¡áá»á¬ážá¡ááŒá¬ážááᯠrun ááẠá¡ááá²á· á¡áááºážá¡ááŒá áºáá»á¬áž áááŸááá« (ááá¯ááá¯áááºááŸá¬ node ááẠáááºážááᯠááá±ážááá¯ááºáá«á áá±á¬ááºážááá¯áá¬ážáá±á¬ á¡áááºážá¡ááŒá áºáá»á¬áž áá±á¬ááºážááá¯ááŸá¯ áá±á«á·ááº) ááŸáá·áº ဠpods áá»á¬ážááẠááá¯ááºážáá¶á·áá¬ážááá·áº á¡ááŒá±á¡áá±ááá¯á· ááŒá±á¬ááºážáááºá
á€ááá á¹á ááœááºá áááºáá±á¬ááºááŸá¯áá±ážáá°ááœáẠáááºááá¯ááºáᬠIaaS/PaaS (á¥ááá¬á GKE/GCEá AKSá EKS á áááºááŒáá·áº) áá²á·ááá¯á·áá±á¬ áááááá¬áá áºáá¯ááŸááá»áŸááºá Node Autoscaler. áááºážááẠááá·áºá¡á¬áž á¡á á¯á¡áá±ážááŸá á¡ááŒáá·áºáá¯á¶ážááŸáá·áº á¡áááá·áºáá¯á¶áž áá¶áá«ááºáá»á¬ážááᯠáááºááŸááºááœáá·áºááŒá¯ááŒá®áž á¡á á¯á¡áá±ážáá»á¬ážááŸáá·áº pods áá»á¬ážááœáẠá¡áááºážá¡ááŒá áºáá»á¬ážáááŸááá±á¬á¡áá«ááœáẠcloud áááºáá±á¬ááºááŸá¯áá±ážáá° API ááá¯áá±á«áºááá¯ááŒááºážááŒáá·áº (cloud provider API ááá¯áá±á«áºááá¯ááŒááºážááŒáá·áº) á¡ááá¯á¡áá»á±á¬ááºáá»áááºááŸáááá¯ááºááẠá¡áá»áááºááá¬ážááœá²ááááá« (á á±á¬áá·áºááá¯ááºážáá±áá±á¬á¡ááŒá±á¡áá±ááœáẠááŸááá±áááº)á
áááá¯á¶ážáá»á¯ááº: node áá»á¬ážááᯠá¡ááá¯á¡áá»á±á¬ááºá áá±ážáá¯ááºááá¯ááºá á±áááºá k8s ááẠnodes áá±á«áºááŸá load ááá¯ááŸááºáááºá áœá¬á¡áá²ááŒááºááá¯ááºá á±áááºááŸáá·áº áá±á¬áẠpod ááá¯á áááºááẠcluster ááœááºá¡áááºážá¡ááŒá áºáá»á¬ážáááŸáááŒá±á¬ááºážá¡á á®áááºáá¶áááºááŒááá¯ááºááẠpod containers ááœááºáá±á¬ááºážááá¯ááŸá¯áá»á¬ážáááºááŸááºáááºááá¯á¡ááºáá«áááºá
áá±á¬ááºáá»ááº
ááœááºááááºáá¬áááºážááŒá áºááá·áºáááºáá»ááºáá»á¬ážááᯠáááºááŸááºááŒááºážááẠá¡ááá®áá±ážááŸááºážááᯠá¡á±á¬ááºááŒááºá áœá¬áááºáááºáááºá¡ááœáẠááá¯á¡ááºáá»ááºááá¯ááºáá±á¬áºáááºáž á¡á±á¬ááºáá«á¡ááŒá±á¬ááºážáá»á¬ážááŒá±á¬áá·áº ááá¯ááá¯á·áá¯ááºáá±á¬ááºááŒááºážá ááá¯áá±á¬ááºážáá«áá±ážáááºá
- k8s nodes áá»á¬ážááŒá¬ážááœáẠload balancing áááºááŸááºáá»ááºáá»á¬ážááŒáá·áº á¡áá»áááºááá¬ážááœá²á ááá¯ááá¯áááá»áá±á¬áá¯ááºáá±á¬ááºáá»ááºá¡ááœááº
- âpod evictionâ ááŒá áºááẠááŒá áºááœá¬ážááá¯ááºááŒá±ááᯠáá»áŸá±á¬á·áá»áááº
- á¡áá»á¬ážááá¯áẠá¡ááá®áá±ážááŸááºáž pods (HPA) á á¡áá»á¬ážááá¯áẠá¡ááá¯á¡áá»á±á¬áẠá¡ááœááºá¡á á¬áž ááŒá±á¬ááºážáá²ááŒááºážá¡ááœááº
- cloud áááºáá±á¬ááºááŸá¯áá±ážáá°áá»á¬ážá¡ááœáẠá¡áá»á¬ážááá¯áẠá¡ááá¯á¡áá»á±á¬áẠá¡ááœááºá¡á á¬ážááœá²ááŒááºáž (Cluster Autoscaling)
áá»áœááºá¯ááºááá¯á·áááá±á¬á·ááºááŸá á¡ááŒá¬ážáá±á¬ááºážáá«ážáá»á¬ážááá¯áááºáž áááºáá«-
Tekton ááá¯ááºááá¯ááºáž - Kubernetes-áá¬ááááá¯ááºááá¯ááºážáá»á¬áž Nginx á¡ááœáẠááŒá±á¬ááºážáá²áá±áá±á¬ áá±á¬áºáá»á°ážáá»á¬ážááᯠáááºáá±á¬ááºááŒááºážá ááœáá·áºááŒá¯áá»ááºáááŸááá² ClickHouse á០ClickHouse ááá¯á· ááŒá±á¬ááºážááœáŸá±á·ááŒááºážááẠáááºááá·áºá¡áá¬áá®ááá¯á· áŠážáááºááœá¬ážááááºážá Golang ááŸá áááºá ááºáááºáá±á·áá»áºááᯠáá¬ážáááºááŒááºážá Docker áá¯á¶áá»á¬ážááá¯áá»á¯á¶á·áááºááá¯ážááŸááºážáá±á¬ááŸáá·áºááœááºáá¯á¶ážáᯠááœá²ááŒá¬ážáá±á¬ áááºááá±á¬áá»ááºáá»á¬ážá áœá¬ááᯠá¡áááºááááºážááŒááºážá
source: www.habr.com