ααΆααααα½ααα½α ααΆαααααααΆααααααΌαααΆααααα»αααΆααααααααΌαααααΆαααααα·αααααααΉαααααααααααΆαααααααα·ααΈαααααΆααααααα·ααααα·ααΆαααααΉαααααΌα αα·ααααα·αααΆαααααααΆα ααα»ααααα α»ααααΆαααΆααΎαααααα·ααΈααΆα αααΎααααα»αααααΎαααΆααααααΆαααααΌα ααααΆ? ααΎααααΎααΌα ααααα ααΎααααΈαααααα±αααα½αααααααΆαααααΌαααααΆαα αΆαααΆα αα’αααααααΆ? ααΎα’αααα’αΆα αααααααΆαααααΎααααΆααααααΆααααααααααΆ? ααΎααααΎααΌα ααααα ααΎααααΈα ααα αΆαααααα»αα±ααααΆαααααΉαααααΌααααΆαααααΆαα? ααΎααααΎααΌα ααααα ααΎααααΈααΆααΆααΆααααααΆαααααΎααΆαααααααΆααααααααααΎαααΆαααααα·αααΎααΆααααα»ααααααα·ααΈααΎαα‘αΎα?
α’αααααααΌαα αΆααααααΎαααΆαα½αααΉαααααααααααααΆαααααΆααααααααΆααα αααα»ααααααααα - ααΆααΆααα·αααΆαααααααΊααΆαααααααΆααααΎαααΆααα·α RAM α αα αααα»α k8s manifests ααααααααααΆαααΆαααααααααΌαααΆαααΆααααΆα―αααΆααΌα ααΆααααααα
- αααΈααΈααΌ - αα αααα»αααααΌα
- RAM - ααΆαα
ααΎαβααΈβαααβαα βααα αααααΆααβααααΆαβααΈαα½αα ααΆβα’αΆα βαααααβαααααΌαβααΆαβααΈαβαααααα - ααααΎ ΠΈ αααααααα. ααααΎ - αα·αααααΆα’αααΈαααααΌαααΆαα’αααααααΆαααααΆααααααΆαα₯ααα·αααααααααααΆααααΎααααΈααααΎαααΆααα»αααΊααα (αα·αααααΆααααΌα) ααααααααααααααααααααααααααααααααΉαααΎααααΆααααααΆααααααΆαααα»αααΊαααα
ααΆααΆααΆαααααΆαααααα»αααΆααααααΆ manifest αα·αα αΆαααΆα αααααααααΆαα αααΆααααΌαααααααααΆααααΈαααααα ααα»ααααα’αΆαααααα·αα·ααΆααΉαααΆαααΌα ααΆααααααα
- ααααα·αααΎααΆαααααααααααααααααΆαααα»ααααααααααααΌαααΆααααααΆαααααΆαα αααΆααααΆαα αααααααΎαααααΆααααααΆαααααααααααααααΎααΉααααααααααααααααααααααααα· (α’αααα’αΆα αααααααααΆααααΆααΆααααααΆαα α αα ααΆααααΆαα»αααααΆ)α ααΆαααααα ααΆααα·α αα»αααΊαααααΉαααααΌαααΆααααααα ααααααα·ααΆαααΌα ααααΆααααααΆααααααΆααΆαααΆαααΎααααΈααααΎαααΆαα
- ααααα·αααΎααΆαααααααΎααααΌαααΆααααααΆαααααΆαα αααΆαααααααΆααααααΆα αααααααΆαααΆαααΉααααααΉαααΆαααΎααααΌαααΆααααααααΎααααΆαααααα - i.e. αα»αααΊαααααααΌαααΆααααααααααΉαααααΆαααααααααΆαααααα½αα―αααα»αααααα
ααΆααα’αΆα ααααΎαα ααΆαααΎααααΈααααααα ααΆααααααααααΆααααααααααααααΆααα·αααααΉααααα ααααα·ααααα»αααΊαααααΆααααΆαααα½αααα»ααααααα ααα»αααααααααΆαααα ααααα·α namespace αααααααΎααΆαα»ααΌα ααΆααααααα
- αα½ααααααααα β αα·αααααΆα’αααΈαααααΆαααααΉααααααΉααα ααααα·ααα»αααΊααα/αααα αααα»α ns α αΎαααααΌαααΆαααΎααααΈαα·αααααΆα’αααΈααΆαααΉααααααΉαααααΆαααΎααα ααΎαα»αααΊααα/αα ααααΌα ααΆααΆαααΆαααΆααααααΎααα»ααααα»α/αα (α¬αααα»ααααα·α) αααααα ααα½ααααααα½ααα αα·ααααααααΆααα»αααααΆαααα’αΆα ααΎαααΆααα αααα»αααααααα αααα»ααααααααααα·αααααΎ
- ααααααααααΆα - αα·αααααΆα’αααΈαααααΆαααααΉααααααΉαααΆααΌαα αααααΆαααα»αααΊαααααΆααα’αααα αααα»α ns α αΎαααααΌαααΆαααααΎααΆαααα½αααΎααααΈαααααααααΆααααα»αα ααααααα·ααααΆα (ααΆααααααααααα ααααααααα·ααααΆααα·αααααΌαααΆαααααααααΆαααΉααααΉααα ααααα·αααααΆαα)
ααΆαβαααααβαααβααΆβα§ααΆα αααβααβααΆαβαααα αΆαβαααβαααααβααααα·αβααααΆαα
-
αα ααααα·ααα»αααΆααααΆααα
containers: - name: app-nginx image: nginx resources: requests: memory: 1Gi limits: cpu: 200m
ααΆαααααα αααα»αααααΈααα ααΎααααΈααααΎαααΆααα»αααΊαααααΆαα½α nginx α’αααααΉαααααΌαααΆααααΆαα αα ααΆαα 1G αα RAM α₯ααα·ααααα αα·ααααΈααΈααΌ 0.2 αα ααΎααααΆαα ααααααααααα»αααΊαααααΆαα αααΎαα’αΆα ααααΎααααΆαααααΈααΈααΌ 0.2 αα·α 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 ααααΆαααΎααα·αα’αΆα ααΎαααΈ 300m αααααΆαααααΈααΈααΌ αα·α 1G αααααΆαα OP α αΎαααααΌαααααααααααααΆααα’ααααΊ 700m αααααΆαααααΈααΈααΌ αα·α 2G αααααΆαα OP α
-
ααααααααααααΆαααΎααααααΆαααα»αααΊααααααα»α 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
ααΆαααααα αα αααα»αα ααααααααααααααΆαααΎααααααΆαααα»αααΊαααααΆααα’αα ααααΎααΉαααααΌαααΆαααααααα 100m αααααΆαα CPU αα·α 1G αααααΆαα OP αααααααα - 1 CPU αα·α 2G α αααα»ααααααΆαα½αααααΆααα ααααααααααααααΌαααΆαααααααααααααΎααααααααα’αΆα ααααΎααΆααα αααα»αααααΎ/αααααααααααααΆαα CPU (50m < x < 2) αα·α RAM (500M < x < 4G) α
-
ααΆαααΉααααααΉαααααα·α Podα
apiVersion: v1 kind: LimitRange metadata: name: nxs-limit-pod spec: limits: - type: Pod max: cpu: 4 memory: 1Gi
ααΆαααααα αααααΆααααααΈαα½αααα αααα»α ns ααααΆαααΎαααΉαααΆααααααααα 4 vCPU αα·α 1G α
α₯α‘αΌαααααααα»αα ααααααΆααα’αααααΈαα»ααααααααα·ααααααααααΆαααΉααααααΉαααΆαααααα’αΆα αααααα±ααααΎαα
αααα»αααααααΆααα»αααααΆααααΆαααααΆαα
ααΌα αααα’αααααΆαααΉαα αΎαααΆ αααΆαααΆαα» k8s ααα½ααα»αααααΌαα ααααααΆαα ααα αΆααα αααα»αα ααααααααΆαα ααΌα ααΆ αααααα·ααΈαααααααααααααααΎαααΆααααααααα ααΆααααα½ααααααααΆαααΆααααΆαααα½αα αααα½ααααααααΆααααααααααΆααααΈαααααΆααααΆααα αααααααΎαααΎαααααΆααααα’αααα»αααΎααααΈα αΆααααααΎαα
- ααΆαα αααα
- αα½α
ααΆαααααα αααααΆααααααΆααααααααΆααα·αααααΆ ααααΆααααααΌαααΆαααααΎαααΎαααααΌα αααααΆα’αΆα ααααΎαααΆααααααααααα’ααααΎαααα»α ααααΆαααα (αα½αααΆααααΆααα·αα·αααααΎαααΆααΎααααΆααααΆαααααΆααααααααααΆααααΎααααΈααααΎαααΆααα - PodFitsResources) α αΎααααααΆαααααααααΆααααααΆααααΈαα½ααααα αααααΆα α’αΆαα·ααΆα αα·αααα»ααααΌαααΆαααααααααααΆαα (αα½αααΆααααααΆαα₯ααα·αααααααΆααααα αααΎααααααααΆααααΆα αα·αααα»ααΆααααα αααΎαααΆααααΌαααΆαα αΆααααΆαα - LeastResourceAllocation/LeastRequestedPriority/BalancedResourceAllocation) α αΎαααααααΌαααΆαααΎαααααΎαααΆααα ααΎααααΆαααααααΆααα·αααα»α αααΎααααα»α (ααααα·αααΎααααΆααααΆα αααΎααααααααααααααααααααα»αααααααα½α αααααΆαααα αα½αα αααααααααΌαααΆαααααΎαααΎα) α
αααα»ααααααΆαα½αααααΆαααα’αααααααΌααααααΆαααααα·ααΈαααααααααα
αααααΆααααααααααΆααααααΆαααααααΆααααααΌαααΆαααΉαααΆαααααα·αααααααααααααΌαααΆααααααΆαα»ααααα»α etcd - i.e. αααααΆααααα·ααΆαααααααΆααααααΆαααααΎαα»α/αααααααααααΈαα½αααααααααΎαααΆαααΎααααΆααααα ααα»αααααα·αααααααααΆααααΆαααααΎααααΆααααααΆααα·αααααΆαααααααα ααααααΆααααα’αΆα
ααα½αααΆαααΈααααααααΆααααααααΆ 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%)
αα ααΈαααααΎαααΎαααααΆααα’ααααααΎαααΆαααΎααααΆααααΆααααΆαααα½α ααααΌα ααΆααααΆααααααααΈαα½ααααααΎαα»αα α αΎααααααΊααΆα’αααΈααααααααα ααα»αααααα·ααΈααααααααααΎααα αα αααααα cronjob-cron-events-1573793820-xt6q9 pod ααααΌαααΆαααΎαααααΎαααΆα (ααααααΆααααααΉααααα αΆααα αααα»ααααααα ααα»αααααα·ααΈαααααααααα αααα’ααααααααααααα·αααααΆααααααααΆααΈ 10 αα αααα»αα’αΆαα»αααααααΆααααααααΆα αΆααααααΎα -v=10):
αααααα ααα»
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) α αααααΆααααααΆααααΆαα·αααα»αααααα’ααααΎαααΆαααΆααααααααΆα αααΎα (αα½αααΆαα BalancedResourceAllocation, LeastResourceAllocation) αααααΆααααααΆααααΆαααααααΈαα½ααααΎααααΈαααααααααΆααααααααααααααα»αα ααΈαααα»α ααααααΌαααΆααααααααααα ααΎααααΆαααααααΆαα ααα½ααα·αααα»ααααααααα»α (αα ααΈαααααααΆααααΈααααα»αααααααα½αααΆαα ααα½ααα·αααα»ααΌα ααααΆ 100037 ααΌα ααααα ααααααα½αααααΌαααΆαααααΎαααΎα - nxs-k8s-s10) α
ααα ααααΈααααα·ααααΆαα ααααα·αααΎ node ααααΎαααΆα pods ααααα·αααΆαααΆαααααα ααααααααΆαα k8s (ααΆαααααααααααΆαααααΎααααΆααααααΆα) ααΆααΉαααααΎααΉαααααα·αααΎαα·αααΆα pods αααααααα ααΎ node ααΆαααααααα ααΌα αααα ααααα·αααΎα’αααααΆα pod αα½αααΆαα½αααΉαααααΎαααΆαααααααααααα (α§ααΆα ααα wowza) α αΎαααααΆαααΆαααΉααααααΉαααΆαα½αααααΌαααΆαααααααααααΆααααΆαα αααααααΆαααΆαα’αΆα ααΉαααΎαα‘αΎααα ααααααααααααα·αααΆαααΈααααΆαααΆααα’ααααααααααΆαα ααα»αααααααααΆαα k8s ααααΆααααα ααααΌαααΆαα αΆαααα»αααΆαα·αααΆααααα»α α αΎαααΆααΉαααααΌαααΆαααααααααααΆααααΌα ααααΆαααα·αααα»αα αααααΆααα αααΆααααααΆαα (αααΆαααΆααααΆαααα αααα»ααα·αααα»αααααΆααααααααααΆααααααΆα) ααΆααααΆααααααα·αααΆααααααααααΎααΆα ααααα ααΈαααα»αα’αΆα ααΆαα±ααααΆαααΆαα ααα αΆαααααα»ααα·αααααΎααααΆαααΆαααααΆααα
ααΆαααααααα αααααα Pod
ααΌα αααα’αααααΉα pod ααΈαα½ααααααΌαααΆαα αΆααααααΆαααα½ααααα»αα αααα 3 QoS classes:
- ααΆααΆ β ααααΌαααΆαααααααα αααααααααααΆαααα»αααΊαααααΈαα½αααα αααα»ααα ααααΎ αα·αααααααααααααΌαααΆααααααΆαααααααΆααα’αααα αα αΆα αα·ααααΈααΈααΌ α αΎααααααααΆαααααααααΌαααααααΌαααα
- α’αΆα αααα»αααΆαα β αααΆαα αα ααΆαααα»ααα½ααα αααα»αααααΆαααααΎ αα·ααααααααα ααΆαα½αααΉαααααΎ < limit
- ααΆααα·αααααααΉααααααααααα’αααα»α - αα αααααααα·αααΆααα»ααααα½ααα αααα»ααα ααΊααααΆαααΆαααααα
αααα»ααααααΆαα½αααααΆααα αα ααααααααααΆαααα½ααααααααΉαααΆαααααααΆαααααΆα (ααΆα α’αααα αα αΆα) kubelet α αΆααααααΎαα αΆααααααΆαα αα·αααααααα ααααααααααΆααααα½ααααααααΆαααΆααααΆαααα½αααααα·αααΌαααΈα’αΆαα·ααΆααααααα αα·αααααΆαα QoS ααααααΆα α§ααΆα αααααααα·αααΎααΎααααα»ααα·ααΆαα’αααΈ RAM αααααΆααααααα’ααααΎααααΆαα QoS αα·αααα»ααααΌαααΆαααααααααααΆααααΆααααααΆαααααΌα ααΆααααααα
- ααΆααΆ: -α€α
- ααΆααα·αααααααΉααααααααα’αααα»α: 1000
- α’αΆα αααα»αααΆαα: min(α’αα·ααααΆ(2, 1000 - (1000 * memoryRequestBytes) / machineMemoryCapacityBytes), 999)
ααΆαααααα ααΆαα½αααΉαα’αΆαα·ααΆαααΌα ααααΆ kubelet ααΉααααααα pods ααΆααααΌαααΆαα½αααΉαααΆααα·αααααααΉααααααααα’αααα»α QoS class ααΈ node α
ααα ααααΈααααα·ααααΆαα ααααα·αααΎα’αααα ααααΆαααααααααααααΆαααααΆααααααααααααα ααααΆαα ααααΈααααΆαααααα»αααααΈααααααααΆαααΎααΆ αααααΆαααααα½αααΆαα½αα’αΆαα·ααΆα α’αααααααααΌαααα α·ααααα»αααΆααααΎααΆααααααααααΎ/αααααααααααααΆααααΆα
ααααααΆααααααΆααααΆαααααΎααΆαααααααΆααααααααααααααααα·ααααααααααααα·ααΈ pods (HPA)
αα ααααααααΆααα·α αα ααΊααΎααααΈαααααΎα αα·ααααααα ααα½ααααααααααααααααααα· α’αΆαααααααΎααΆαααααΎααααΆααααααΆα (αααααααα - CPU/RAM α¬α’αααααααΎααααΆαα - rps) ααΌα ααΆα’αααααΆα k8s ααΌα ααΆ HPA (α§αααααααΆαααααααααααααααααααα· Pod ααααα)α αααα½ααααααααΆαααΆαααΌα ααΆααααααα
- ααΆαα’αΆααα αα α»ααααααααααααΆααααααΆαααααααααααΌαααΆαααααα (CurrentMetricValue)
- ααααααααα ααααΆααααααΆααααααΆαααααΌαααΆαααααα (desiredMetricValue) ααααααααΆααααααΆαααααααααααααΌαααΆαααααααααααααΎααααΎ
- α ααα½αβα ααααβαα αα α»ααααααβααααΌαβααΆαβααααα (currentReplicas)
- ααΌαααααααΆααααααααααΆα
ααα½αα
αααααααα
ααααΆα (desiredReplicas)
desiredReplicas = [CurrentReplicas * (currentMetricValue / desiredMetricValue)]
αααα»αααααΈααα ααΆαααααΎααΆαααααααΆαααΉααα·αααΎαα‘αΎααα αααααααααα»α (currentMetricValue / desiredMetricValue) αα αα·α 1 (αααα»αααααΈααα ααΎαα’αΆα αααααααα α»ααααα’αΆα α’αα»ααααΆαααΆαααααααα½αα―α ααΆαααααΆαααΎαααΆααΊ 0.1)α
ααΌααααα‘ααααΎαααααααα 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 α ααα½αααΈα αααααΆααααΈαα½αααααααΆααααααΆαα ααααΎ αααααΆαα CPU α
-
HPA Manifesto
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
ααΆαααααα ααΎαααΆααααααΎα hpa αααααΉααααα½ααα·αα·ααα Deployment app-test αα·ααααααααΌαα ααα½α pods ααΆαα½αααΉααααααα·ααΈαααααα’ααααΎααΌα ααΆαα cpu (ααΎαααααΉαααΆ pod αα½αααααααΎααααΆαα 30% αα CPU αααααΆααααΎαα»α) ααΆαα½αααΉαα ααα½αααααΆαα ααααααΊαααα·ααα αααα»α αα½α 2-10 α
α₯α‘αΌααααααΌαααΎαααααααΆαααααααα·ααααα·ααΆα hpa ααααα·αααΎααΎαα’αα»ααααααααα»ααα αα½ααα hearths:
# kubectl top pod NAME CPU(cores) MEMORY(bytes) app-test-78559f8f44-pgs58 101m 243Mi app-test-78559f8f44-cj4jz 4m 240Mi
ααα»αααααΎαααΆαααΌα ααΆααααααα
- ααααααααα ααααΆα (desiredMetricValue) - αααααΆαααΆαααααα hpa ααΎαααΆα 30%
- ααααααα
αα
α»αααααα (currentMetricValue) - αααααΆααααΆαααααΆ α’αααααααααααα-αααααααααααααΆααααααααααααααΆαααααΎααααΆααααααΆααααα»α % i.e. ααΆαααααααααααααΎααΌα
ααΆααααααα
- ααα½αααΆααααααααΆα αααΆααα pod metrics ααΈ metric server, i.e. α‘α α‘α αα·α α€α
- ααααΆαααααααΆα αααΆαααΆααααα i.e. (101m + 4m) / 2 = 53m
- ααα½αααΆααααααααΆα αααΆααααααΆααααΆαααααΎααααΆααααααΆααααα ααααΆα (αααααΆααααα ααααΎαααααα»αααΆααα’ααααααΌαααΆαααΌαααα»α) 60m + 30m = 90m
- ααααΆβααΆαααβαααααβααβααΆαβααααΎααααΆααβαααΈααΈααΌβαααβααΆααααβααΉαβααΆαβααααΎαα»αβαα, α§. 53m / 90m * 100% = 59%
α₯α‘αΌααααααΎαααΆαα’αααΈααααααααΆααααααΎαααααΌααααααααΆααΎααΎαααααΌαααΆαααααΆααααααΌαα ααα½αααααΆαα αααα ααΎααααΈααααΎααΌα αααα ααΎαααααΆαααα»αα
ratio = 59% / 30% = 1.96
ααΆαααααα α ααα½αααααΆαα αααααα½αααααααΌαααΆαααΎαα‘αΎα ~ 2 αααα·αα ααα½ααα [2 * 1.96] = 4 α
ααα ααααΈααααα·ααααΆα: ααΌα αααα’αααα’αΆα ααΎαααΎααααΈα±ααααααααΆααααααααΎαααΆαααααααααα αΆαααΆα ααα½αααΊααααααΆαααααααΎαααααΆαααα»αααΆααα’αααα αααα»ααααααααΆαααααααα
ααααααΆααααααΆααααααΎααΆαααααααΆααααααααααααααααα·αααααααααααΆαα (Cluster Autoscaler)
ααΎααααΈαααααΆααααααααΆααα’αα·αααααΆαααΎααααααααααα‘α»αααααααα»αααΎαα‘αΎα ααΆαααΆα hpa αααααΆαααααααα ααΆααααααααααΊαα·ααααααααααΆααααα α§ααΆα ααα ααααα ααΆαααΆαααααααα αααα»ααααααα·ααΈαααααααααα§ααααααααααΆ hpa ααΆαααααα ααΆα ααα½αααααΆαα ααααααααΌαααΎαα‘αΎα 2 αα ααα»ααααααααΆαααα·αααΆαααααΆαα₯ααα·αααααααΎααααΈααααΎαααΆαα ααα½α pods αααααααα (α§ααΆα αααααααΆαααα·αα’αΆα ααααα ααααΆααααααΆαααααΎαα»ααα ααΆααααααααΎαα»α) α αΎαααααααΆαααααααααΌααα ααααΆαααΆααααα»ααααα αΆαα
αααα»αααααΈααα ααααα·αααΎα’ααααααααααααΆααΆα IaaS/PaaS αααααααΌαααααΆ (α§ααΆα ααα GKE/GCE, AKS, EKS ααα) α§αααααααΌα ααΆ Node Autoscaler. ααΆα’αα»ααααΆαα±ααα’ααααααααα ααα½αα’αα·ααααΆ αα·αα’αααααααΆααααααΆαααα αααα»αα ααααα α αΎαααααααα½αα ααα½αααααΆαααα αα α»αααααααααααααααααααααα· (αααααΆαα α αα ααΆαα API ααα’ααααααααααααΆααα ααΎααααΈαααααΆαα·α/ααααααΆααα αα) αα ααααααααΆαααΆαααααααΆαααααΆααα αααα»αα ααααα αα·αααα αα·αβα’αΆα βαααααβαααβααααΆβααΆα (αααα·αβαααα»αβααααΆαααΆαβαααα»αβαααα αΆα)α
ααα ααααΈααααα·ααααΆα: ααΎααααΈα’αΆα ααααΎααΆαααααααΆαααααΆαααααααααααααααααα· ααΆα αΆαααΆα ααααα»αααΆααααααααααΎαα αααα»ααα»ααα ααΌα αααα k8s α’αΆα ααΆααααααααααα»ααα ααΎααααΆααααΆαααααΉαααααΌα α αΎαααΆαααΆαααααΆαα·αααΆαααααΆααα αααα»αα αααααααΎααααΈααΎαααααΎαααΆααααααααΆααααα
ααα ααααΈααααα·ααααΆα
ααΆαα½αααααααΌαααΆαααααααααΆααααΆααΆααααααααααααααααααΆααα»αααΊααααα·ααααααΆαααααΌαααΆααααααΆαααααααα·ααΈααΎααααΈααααΎαααΆαααααααααααααααααα»ααααααΆαα αααααααΎαααΆααααα»αααΆαααααΎααΌα αααααααααΆααα ααα»ααααΌα ααΆααααααα
- αααααΆααααααα·ααααα·ααΆαααααΉαααααΌαααααααααααααααααα·ααΈαααααααααααα»ααααααααααααα»αααααΆαααααα»ααααΆαααααΆαα k8s
- ααΎααααΈααΆαααααααααααααΆαααααααΉαααα·ααΆααα "ααΆαααααααα αα" ααΎαα‘αΎα
- αααααΆααβααΆαβααααΎβααΆαααααααΆαβαααβαααααβαααααααα·βαααααβααβαααααα·ααΈβ pods (HPA) ααΎααααΈβααααΎαααΆα
- αααααΆααβααΆαβααααΎβααΆαααααααΆαβαααβαααααβαααααααα·βαααααβααβααααΆαα (Cluster Autoscaling) αααααΆααβα’αααβαααααβααα
ααΌαα’αΆαα’ααααααααααααααα ααΎαααααααααααΎααααααα
ααααα Tekton - ααααααααα αΌααααααααΎα Kubernetes ααΆααααΆααααΌαα»αααΆααααααααααΆαα Nginx ααΎααΆαααααΎα αααΆααααα»αααΈ ClickHouse αααααααΆαααΆαα’αα»ααααΆααα ClickHouse ααΆαα½αααΉαααΆαα’αα»ααααΆαααΆααα ααα’αααΈ? ααΆααααααΉαα’αααΈαααα ααααα·αααα αααα»α Golang αααα·α ααΆααααα ααα½αααΈααΎααααΈααααα½αααΌαααΆα Docker ααΆαβααααα»αβαα»αβααβααααααβαααααΆαβαα»αβααααΆβαα½αβα ααα½αβαα
ααααα: www.habr.com