αž‚αž“αŸ’αž›αžΉαŸ‡αž’αž“αž»αžœαžαŸ’αž Kubernetes αž”αŸ’αžšαžΆαŸ†αž”αž½αž“

αž‚αž“αŸ’αž›αžΉαŸ‡αž’αž“αž»αžœαžαŸ’αž Kubernetes αž”αŸ’αžšαžΆαŸ†αž”αž½αž“

αžŸαž½αžŸαŸ’αžαžΈβ€‹αž’αŸ’αž“αž€β€‹αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž‚αŸ’αž“αžΆ! αžˆαŸ’αž˜αŸ„αŸ‡αžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ†αž‚αžΊ Oleg Sidorenkov αžαŸ’αž‰αž»αŸ†αž’αŸ’αžœαžΎαž€αžΆαžšαž“αŸ… DomClick αž‡αžΆαž”αŸ’αžšαž’αžΆαž“αž€αŸ’αžšαž»αž˜αž αŸαžŠαŸ’αž‹αžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αŸ” αž™αžΎαž„αž”αžΆαž“αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ Kubik αž“αŸ…αž€αŸ’αž“αž»αž„αž•αž›αž·αžαž€αž˜αŸ’αž˜αž’αžŸαŸ‹αžšαž™αŸˆαž–αŸαž›αž‡αžΆαž„ 3 αž†αŸ’αž“αžΆαŸ†αž˜αž€αž αžΎαž™ αž αžΎαž™αž€αŸ’αž“αž»αž„αž’αŸ†αž‘αž»αž„αž–αŸαž›αž“αŸαŸ‡ αž™αžΎαž„αž”αžΆαž“αž‡αž½αž”αž”αŸ’αžšαž‘αŸ‡αž“αžΉαž„αž–αŸαž›αžœαŸαž›αžΆαžŠαŸαž‚αž½αžšαž±αŸ’αž™αž…αžΆαž”αŸ‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸαž‡αžΆαž…αŸ’αžšαžΎαž“αž‡αžΆαž˜αž½αž™αžœαžΆαŸ” αžαŸ’αž„αŸƒαž“αŸαŸ‡αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αž”αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αž–αžΈαžšαž”αŸ€αž” αž‡αžΆαž˜αž½αž™αž“αžΉαž„αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαžŠαŸαžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœ αž’αŸ’αž“αž€αž’αžΆαž…αž…αŸ’αžšαž”αžΆαž…αŸ‹αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αžΆαž“αŸ‹αžαŸ‚αž…αŸ’αžšαžΎαž“αž…αŸαž‰αž–αžΈ vanilla Kubernetes αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž…αž„αŸ’αž€αŸ„αž˜αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αŸ” αžαŸ’αžšαŸ€αž˜β€‹αžαŸ’αž›αž½αž“β€‹αž‡αžΆβ€‹αž“αž·αž…αŸ’αž…!

αž’αŸ’αž“αž€αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž‚αŸ’αž“αžΆαžŠαžΉαž„αž™αŸ‰αžΆαž„αž…αŸ’αž”αžΆαžŸαŸ‹αžαžΆ Kubernetes αž‚αžΊαž‡αžΆαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž”αŸ’αžšαž—αž–αž”αžΎαž€αž…αŸ†αž αžŠαŸ‚αž›αž’αžΆαž…αž’αŸ’αžœαžΎαž˜αžΆαžαŸ’αžšαžŠαŸ’αž‹αžΆαž“αž”αžΆαž“αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαžšαŸ€αž”αž…αŸ†αž€αž»αž„αžαžΊαž“αŸαžšαŸ” αž‡αžΆαž€αžΆαžšαž”αŸ’αžšαžŸαžΎαžšαžŽαžΆαžŸαŸ‹ αž¬αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž‚αŸ„αž›αž–αžΈαžšαž…αŸ†αž“αž½αž“ 5 αžŠαŸ‚αž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžœαŸαž‘αž˜αž“αŸ’αžαžŠαŸ„αž™αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αžœαžŠαŸ’αžαž‡αžΈαžœαž·αžαž“αŸƒαžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž˜αžΈαž€αŸ’αžšαžΌαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž“αŸ…αž€αŸ’αž“αž»αž„αž”αžšαž·αž™αžΆαž€αžΆαžŸαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαŸ” αž›αžΎαžŸαž–αžΈαž“αŸαŸ‡ αžœαžΆαž‚αžΊαž‡αžΆαž§αž”αž€αžšαžŽαŸαžŠαŸ‚αž›αž’αžΆαž…αž”αžαŸ‹αž”αŸ‚αž“αž”αžΆαž“αžŠαŸ‚αž›αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αž‚αž»αŸ†αž‘αžΎαž„αžŠαžΌαž…αž‡αžΆ Lego αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž”αŸ’αžŠαžΌαžšαžαžΆαž˜αž”αŸ†αžŽαž„αž’αžαž·αž”αžšαž˜αžΆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αž·αž…αŸ’αž…αž€αžΆαžšαž•αŸ’αžŸαŸαž„αŸ—αŸ”

αž αžΎαž™αž’αŸ’αžœαžΈαž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„αž αžΆαž€αŸ‹αžŠαžΌαž…αž‡αžΆαž›αŸ’αž’αŸ– αž”αŸ„αŸ‡αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž…αžΌαž›αž‘αŸ…αž€αŸ’αž“αž»αž„αž…αž„αŸ’αž€αŸ„αž˜αžŠαžΌαž…αž‡αžΆαž’αž»αžŸαž…αžΌαž›αž‘αŸ…αž€αŸ’αž“αž»αž„αž”αŸ’αžšαž’αž”αŸ‹αž—αŸ’αž›αžΎαž„ αž αžΎαž™αž’αŸ’αž“αž€αž“αžΉαž„αž˜αž·αž“αžŠαžΉαž„αžαžΆαž‘αž»αž€αŸ’αžαž–αŸ’αžšαž½αž™αžŽαžΆαž˜αž½αž™αž‘αžΎαž™αŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚β€‹αž”αŸ’αžšαžŸαž·αž“β€‹αž”αžΎβ€‹αž’αŸ’αž“αž€β€‹αž’αŸ’αžœαžΎβ€‹αžŠαžΎαž˜αŸ’αž”αžΈβ€‹αž”αžšαž·αžŸαŸ’αžαžΆαž“ αž’αŸ’αž“αž€β€‹αž“αžΉαž„β€‹αž‚αž·αžβ€‹αžαžΆβ€‹αŸ– β€‹Β«β€‹αžαžΎβ€‹αžαŸ’αž‰αž»αŸ†β€‹αž’αžΆαž…β€‹αžšαž€αŸ’αžŸαžΆβ€‹αž—αŸ’αž›αžΎαž„β€‹αž†αŸαŸ‡β€‹αž–αŸ’αžšαŸƒβ€‹αžŠαŸ„αž™β€‹αžšαž”αŸ€αž”β€‹αžŽαžΆβ€‹? αž˜αŸ’αž™αŸ‰αžΆαž„β€‹αž‘αŸ€αžβ€‹αž’αŸ’αžœαžΎβ€‹αž˜αŸ‰αŸαž…β€‹αžšαž€β€‹αžœαž·αž’αžΈβ€‹αž€αŸ‚β€‹αž›αž˜αŸ’αž’β€‹αž αŸαžŠαŸ’αž‹αžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ αž“αž·αž„β€‹αž€αžΆαžαŸ‹β€‹αž”αž“αŸ’αžαž™β€‹αž€αžΆαžšβ€‹αž…αŸ†αžŽαžΆαž™αŸ”

1. αžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αž€αŸ’αžšαž»αž˜ αž“αž·αž„αž’αž“αž’αžΆαž“αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ

αž‚αž“αŸ’αž›αžΉαŸ‡αž’αž“αž»αžœαžαŸ’αž Kubernetes αž”αŸ’αžšαžΆαŸ†αž”αž½αž“

αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž˜αž½αž™αž€αŸ’αž“αž»αž„αž…αŸ†αžŽαŸ„αž˜αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžšαžŸαžΆαž˜αž‰αŸ’αž‰αž”αŸ†αž•αž»αž αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž˜αžΆαž“αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž–αž‚αžΊαž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†αž’αŸ†αž–αžΈαžŸαŸ†αžŽαžΎ/αžŠαŸ‚αž“αž€αŸ†αžŽαžαŸ‹αŸ” αž”αŸ‚αž„αž…αŸ‚αž€αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαŸ„αž™ 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 αž”αŸ’αžšαžΆαŸ†αž”αž½αž“

αž“αŸ…αž‘αžΈαž“αŸαŸ‡αžαŸ’αž‰αž»αŸ†αž…αž„αŸ‹αž”αŸ‰αŸ‡αž›αžΎαž”αŸ’αžšαž’αžΆαž“αž”αž‘αž“αŸƒαž—αžΆαž‚αž”αž“αŸ’αž αž“αž·αž„αž”αŸ’αžšαž–αŸαž“αŸ’αž’αžšαž„αž“αŸƒαžŒαžΈαžŸαž“αŸƒαžαŸ’αž“αžΆαŸ†αž„αž€αž˜αŸ’αž˜αž€αžš Kubernetes αŸ” αžαŸ’αž‰αž»αŸ†αžŸαž„αŸ’αžƒαžΉαž˜αžαžΆαž‚αŸ’αž˜αžΆαž“αž“αžšαžŽαžΆαž˜αŸ’αž“αžΆαž€αŸ‹αž”αŸ’αžšαžΎ "Cube" αž“αŸ…αž›αžΎ HDD αž€αŸ’αž“αž»αž„αž€αžΆαžšαž•αž›αž·αžαž“αŸ„αŸ‡αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž–αŸαž›αžαŸ’αž›αŸ‡ SSD αž’αž˜αŸ’αž˜αžαžΆαž˜αž·αž“αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαžΆαž“αŸ‹αž‘αŸ€αžαž‘αŸαŸ” αž™αžΎαž„αž‡αž½αž”αž”αŸ’αžšαž‘αŸ‡αž”αž‰αŸ’αž αžΆαžŠαŸ‚αž›αž€αŸ†αžŽαžαŸ‹αž αŸαžαž»αž€αŸ†αž–αž»αž„αžŸαž˜αŸ’αž›αžΆαž”αŸ‹αžαžΆαžŸαžŠαŸ„αž™αžŸαžΆαžšαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžš I/O αž αžΎαž™αž˜αž·αž“αž˜αžΆαž“αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž…αŸ’αžšαžΎαž“αž‘αŸαŸ–

  • αž”αŸ’αžšαžΎ SSDs αžŠαŸ‚αž›αž˜αžΆαž“αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž–αžαŸ’αž–αžŸαŸ‹ αž¬αž”αŸ’αžαžΌαžšαž‘αŸ… NVMe (αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž•αŸ’αž“αŸ‚αž€αžšαžΉαž„αž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€)αŸ”

  • αž€αžΆαžαŸ‹αž”αž“αŸ’αžαž™αž€αž˜αŸ’αžšαž·αžαž“αŸƒαž€αžΆαžšαž€αžΆαž”αŸ‹αžˆαžΎαŸ”

  • αž’αŸ’αžœαžΎαžŸαž˜αžαž»αž›αŸ’αž™ "αž†αŸ’αž›αžΆαžαžœαŸƒ" αž“αŸƒαž•αžαžŠαŸ‚αž›αžšαŸ†αž›αŸ„αž—αž›αžΎαžαžΆαžŸ (podAntiAffinity).

αž’αŸαž€αŸ’αžšαž„αŸ‹αžαžΆαž„αž›αžΎαž”αž„αŸ’αž αžΆαž‰αž–αžΈαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž€αžΎαžαž‘αžΎαž„αž“αŸ…αž€αŸ’αžšαŸ„αž˜ nginx-ingress-controller αž‘αŸ…αž€αžΆαž“αŸ‹αžαžΆαžŸ αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž€αžΆαžšαž…αžΌαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš logs αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αžΎαž€ (~12 αž–αžΆαž“αŸ‹αž€αŸ†αžŽαžαŸ‹αž αŸαžαž»/αžœαž·αž“αžΆαž‘αžΈ)αŸ” αž›αž€αŸ’αžαžαžŽαŸ’αžŒαž“αŸαŸ‡αž’αžΆαž…αž“αžΆαŸ†αž±αŸ’αž™αž˜αžΆαž“αž€αžΆαžšαžšαž·αž…αžšαž·αž›αž“αŸƒαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸ…αž›αžΎαžαŸ’αž“αžΆαŸ†αž„αž“αŸαŸ‡αŸ”

αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ PV, alas, αžαŸ’αž‰αž»αŸ†αž˜αž·αž“αž”αžΆαž“αž–αŸ’αž™αžΆαž™αžΆαž˜αž’αŸ’αžœαžΈαž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„ αž‘αžŸαŸ’αžŸαž“αŸˆ αž”αžšαž·αž˜αžΆαžŽαž‡αžΆαž”αŸ‹αž›αžΆαž”αŸ‹αŸ” αž”αŸ’αžšαžΎαž‡αž˜αŸ’αžšαžΎαžŸαžŠαŸαž›αŸ’αž’αž”αŸ†αž•αž»αžαžŠαŸ‚αž›αžŸαžΆαž€αžŸαž˜αž“αžΉαž„αž’αŸ’αž“αž€αŸ” αž‡αžΆαž”αŸ’αžšαžœαžαŸ’αžαž·αžŸαžΆαžŸαŸ’αžαŸ’αžš αžœαžΆαž”αžΆαž“αž€αžΎαžαž‘αžΎαž„αž“αŸ…αž€αŸ’αž“αž»αž„αž”αŸ’αžšαž‘αŸαžŸαžšαž”αžŸαŸ‹αž™αžΎαž„αžŠαŸ‚αž›αž•αŸ’αž“αŸ‚αž€αžαžΌαž…αž˜αž½αž™αž“αŸƒαžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αžαŸ’αžšαžΌαžœαž€αžΆαžšαž”αžšαž·αž˜αžΆαžŽ RWX αž αžΎαž™αžαžΆαŸ†αž„αž–αžΈαž™αžΌαžšαž™αžΆαžšαžŽαžΆαžŸαŸ‹αž˜αž€αž αžΎαž™ αž–αž½αž€αž‚αŸαž”αžΆαž“αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž€αž“αŸ’αž›αŸ‚αž„αž•αŸ’αž‘αž»αž€ NFS αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αž·αž…αŸ’αž…αž€αžΆαžšαž“αŸαŸ‡αŸ” αžαŸ„αž€αž αžΎαž™... αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαžΆαž“αŸ‹αž αžΎαž™αŸ” αž–αž·αžαžŽαžΆαžŸαŸ‹ αž‚αžΆαžαŸ‹ αž“αž·αž„αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž‰αŸ‰αžΆαŸ†αž’αžΈ - αž‡αžΌαž“αž–αžšαž’αŸ’αž“αž€ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž™αžΎαž„αž”αžΆαž“αžšαŸ€αž“αž€αŸ‚αžœαžΆ αž αžΎαž™αž€αŸ’αž”αžΆαž›αžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ†αž˜αž·αž“αžˆαžΊαž‘αŸ€αžαž‘αŸαŸ” αž αžΎαž™αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αžΆαž…αž’αŸ’αžœαžΎαž”αžΆαž“ αžŸαžΌαž˜αž•αŸ’αž›αžΆαžŸαŸ‹αž‘αžΈαž‘αŸ…αž€αž“αŸ’αž›αŸ‚αž„αž•αŸ’αž‘αž»αž€αžœαžαŸ’αžαž» S3 αŸ”

3. αž”αŸ’αžšαž˜αžΌαž›αžšαžΌαž”αž—αžΆαž–αžŠαŸ‚αž›αž”αžΆαž“αž€αŸ‚αž›αž˜αŸ’αž’

αž‚αž“αŸ’αž›αžΉαŸ‡αž’αž“αž»αžœαžαŸ’αž Kubernetes αž”αŸ’αžšαžΆαŸ†αž”αž½αž“

αžœαžΆαž‡αžΆαž€αžΆαžšαž›αŸ’αž’αž”αŸ†αž•αž»αžαž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αŸ’αžšαžΎαžšαžΌαž”αž—αžΆαž–αžŠαŸ‚αž›αž€αŸ‚αž›αž˜αŸ’αž’αž€αž»αž„αžαžΊαž“αŸαžš αžŠαžΎαž˜αŸ’αž”αžΈαž±αŸ’αž™ Kubernetes αž’αžΆαž…αž‘αžΆαž‰αž™αž€αž–αž½αž€αžœαžΆαž”αžΆαž“αž›αžΏαž“αž‡αžΆαž„αž˜αž»αž“ αž“αž·αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž–αž½αž€αžœαžΆαž€αžΆαž“αŸ‹αžαŸ‚αž˜αžΆαž“αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž–αŸ” 

Optimized αž˜αžΆαž“αž“αŸαž™αžαžΆαžšαžΌαž”αž—αžΆαž–αŸ–

  • αž˜αžΆαž“αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ‚αž˜αž½αž™ αž¬αž’αž“αž»αžœαžαŸ’αžαž˜αž»αžαž„αžΆαžšαžαŸ‚αž˜αž½αž™αŸ”

  • αž‘αŸ†αž αŸ†αžαžΌαž… αž–αžΈαž–αŸ’αžšαŸ„αŸ‡αžšαžΌαž”αž—αžΆαž–αž’αŸ†αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž‰αŸ’αž‡αžΌαž“αž€αžΆαž“αŸ‹αžαŸ‚αž’αžΆαž€αŸ’αžšαž€αŸ‹αž“αŸ…αž›αžΎαž”αžŽαŸ’αžαžΆαž‰αŸ”

  • αž˜αžΆαž“αž…αŸ†αžŽαž»αž…αž”αž‰αŸ’αž…αž”αŸ‹αž“αŸƒαžŸαž»αžαž—αžΆαž– αž“αž·αž„αž€αžΆαžšαžαŸ’αžšαŸ€αž˜αžαŸ’αž›αž½αž“αžŠαŸ‚αž›αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™ Kubernetes αž’αŸ’αžœαžΎαžŸαž€αž˜αŸ’αž˜αž—αžΆαž–αž€αŸ’αž“αž»αž„αž–αŸ’αžšαžΉαžαŸ’αžαž·αž€αžΆαžšαžŽαŸαž“αŸƒαž€αžΆαžšαžˆαž”αŸ‹αžŸαž˜αŸ’αžšαžΆαž€αŸ”

  • αž”αŸ’αžšαžΎαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαžŠαŸ‚αž›αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž”αŸ’αžšαžΎαž€αŸ’αž“αž»αž„αž€αž»αž„αžαžΊαž“αŸαžš (αžŠαžΌαž…αž‡αžΆ Alpine ឬ CoreOS) αžŠαŸ‚αž›αž˜αžΆαž“αž—αžΆαž–αž’αž“αŸ‹αž“αžΉαž„αž€αŸ†αž αž»αžŸαž€αŸ’αž“αž»αž„αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αŸ”

  • αž”αŸ’αžšαžΎαž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαž–αž αž»αžŠαŸ†αžŽαžΆαž€αŸ‹αž€αžΆαž› αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž’αŸ’αž“αž€αž’αžΆαž…αžŠαžΆαž€αŸ‹αž±αŸ’αž™αž”αŸ’αžšαžΎαžαŸ‚αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαŸ‚αž›αž”αžΆαž“αž…αž„αž€αŸ’αžšαž„αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡ αž˜αž·αž“αž˜αŸ‚αž“αž”αŸ’αžšαž—αž–αžŠαŸ‚αž›αž—αŸ’αž‡αžΆαž”αŸ‹αž˜αž€αž‡αžΆαž˜αž½αž™αž“αŸ„αŸ‡αž‘αŸαŸ”

αž˜αžΆαž“αž§αž”αž€αžšαžŽαŸ αž“αž·αž„αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž‡αžΆαž…αŸ’αžšαžΎαž“αžŠαŸ‚αž›αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™ αž“αž·αž„αž”αž„αŸ’αž€αžΎαž“αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž–αžšαžΌαž”αž—αžΆαž–αž—αŸ’αž›αžΆαž˜αŸ—αŸ” αžœαžΆαž˜αžΆαž“αžŸαžΆαžšαŸˆαžŸαŸ†αžαžΆαž“αŸ‹αžŽαžΆαžŸαŸ‹αž€αŸ’αž“αž»αž„αž€αžΆαžšαžšαž€αŸ’αžŸαžΆαž–αž½αž€αžœαžΆαž±αŸ’αž™αž‘αžΆαž“αŸ‹αžŸαž˜αŸαž™αž‡αžΆαž“αž·αž…αŸ’αž… αž“αž·αž„αž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαžŠαžΎαž˜αŸ’αž”αžΈαžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž–αŸ” αž‡αžΆαž›αž‘αŸ’αž’αž•αž›αž’αŸ’αž“αž€αž‘αž‘αž½αž›αž”αžΆαž“αŸ–

  1. αž€αžΆαžαŸ‹αž”αž“αŸ’αžαž™αž€αžΆαžšαž•αŸ’αž‘αž»αž€αž”αžŽαŸ’αžαžΆαž‰αž“αŸ…αž›αžΎαž…αž„αŸ’αž€αŸ„αž˜αž‘αžΆαŸ†αž„αž˜αžΌαž›αŸ”

  2. αž€αžΆαžαŸ‹αž”αž“αŸ’αžαž™αž–αŸαž›αžœαŸαž›αžΆαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž€αž»αž„αžαžΊαž“αŸαžšαŸ”

  3. αž‘αŸ†αž αŸ†αžαžΌαž…αž‡αžΆαž„αž“αŸƒαž€αžΆαžšαž…αž»αŸ‡αž”αž‰αŸ’αž‡αžΈ Docker αž‘αžΆαŸ†αž„αž˜αžΌαž›αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αŸ”

4. αž”αŸ’αžšαžΎαžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹ DNS

αž‚αž“αŸ’αž›αžΉαŸ‡αž’αž“αž»αžœαžαŸ’αž Kubernetes αž”αŸ’αžšαžΆαŸ†αž”αž½αž“

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž™αžΎαž„αž“αž·αž™αžΆαž™αž’αŸ†αž–αžΈαž€αžΆαžšαž•αŸ’αž‘αž»αž€αžαŸ’αž–αžŸαŸ‹ αž“αŸ„αŸ‡αž‡αžΈαžœαž·αžαž‚αžΊαž’αžΆαž€αŸ’αžšαž€αŸ‹αžŽαžΆαžŸαŸ‹αžŠαŸ„αž™αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž›αŸƒαžαž˜αŸ’αžšαžΌαžœαž”αŸ’αžšαž–αŸαž“αŸ’αž’ DNS αžšαž”αžŸαŸ‹αž…αž„αŸ’αž€αŸ„αž˜αž“αŸ„αŸ‡αž‘αŸαŸ” αž˜αžΆαž“αž–αŸαž›αž˜αž½αž™ αž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸ Kubernetes αž”αžΆαž“αž‚αžΆαŸ†αž‘αŸ’αžšαžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™ kube-dns αžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸαŸ” αžœαžΆαž€αŸαžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαž“αŸ…αž‘αžΈαž“αŸαŸ‡αž•αž„αžŠαŸ‚αžš αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž“αŸαŸ‡αž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαž˜αŸ’αžšαž½αž›αž‡αžΆαž–αž·αžŸαŸαžŸ αž“αž·αž„αž˜αž·αž“αž•αž›αž·αžαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž€αžΆαžš αž‘αŸ„αŸ‡αž”αžΈαž‡αžΆαžœαžΆαž αžΆαž€αŸ‹αžŠαžΌαž…αž‡αžΆαž€αž·αž…αŸ’αž…αž€αžΆαžšαžŸαžΆαž˜αž‰αŸ’αž‰αž€αŸαžŠαŸ„αž™αŸ” αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€ coredns αž”αžΆαž“αž”αž„αŸ’αž αžΆαž‰αžαŸ’αž›αž½αž“ αžŠαŸ‚αž›αž™αžΎαž„αž”αŸ’αžαžΌαžšαž‘αŸ… αž αžΎαž™αž˜αž·αž“αž˜αžΆαž“αž‘αž»αž€αŸ’αžαž–αŸ’αžšαž½αž™ αž€αŸ’αžšαŸ„αž™αž˜αž€αžœαžΆαž”αžΆαž“αž€αŸ’αž›αžΆαž™αž‡αžΆαžŸαŸαžœαžΆ DNS αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜αž“αŸ…αž€αŸ’αž“αž»αž„ K8s αŸ” αž“αŸ…αž…αŸ†αžŽαž»αž…αžαŸ’αž›αŸ‡αž™αžΎαž„αž”αžΆαž“αž€αžΎαž“αž‘αžΎαž„αžŠαž›αŸ‹ 40 αž–αžΆαž“αŸ‹ rps αž‘αŸ…αž”αŸ’αžšαž–αŸαž“αŸ’αž’ DNS αž αžΎαž™αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž“αŸαŸ‡αž€αŸαž˜αž·αž“αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαžΆαž“αŸ‹αžŠαŸ‚αžšαŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžŠαŸ„αž™αžŸαŸ†αžŽαžΆαž„ Nodelocaldns αž”αžΆαž“αž…αŸαž‰αž˜αž€ aka node local cache, aka NodeLocal DNSCache.

αž αŸαžαž»αž’αŸ’αžœαžΈαž”αžΆαž“αž‡αžΆαž™αžΎαž„αž”αŸ’αžšαžΎαžœαžΆ? αž˜αžΆαž“αž€αŸ†αž αž»αžŸαž“αŸ…αž€αŸ’αž“αž»αž„αžαžΊαžŽαŸ‚αž›αž›αžΈαž“αž»αž… αžŠαŸ‚αž›αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž€αžΆαžšαž αŸ…αž…αŸ’αžšαžΎαž“αžαžΆαž˜αžšαž™αŸˆ NAT conntrack αž›αžΎ UDP αž“αžΆαŸ†αž±αŸ’αž™αž˜αžΆαž“αž›αž€αŸ’αžαžαžŽαŸ’αžŒαž“αŸƒαž€αžΆαžšαž”αŸ’αžšαžŽαžΆαŸ†αž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αžΆαžαž»αž“αŸ…αž€αŸ’αž“αž»αž„αžαžΆαžšαžΆαž„ conntrack αž αžΎαž™αž•αŸ’αž“αŸ‚αž€αž“αŸƒαž…αžšαžΆαž…αžšαžαžΆαž˜αžšαž™αŸˆ NAT αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αžΆαžαŸ‹αž”αž„αŸ‹ (αžšαžΆαž›αŸ‹αž€αžΆαžšαž’αŸ’αžœαžΎαžŠαŸ†αžŽαžΎαžšαžαžΆαž˜αžšαž™αŸˆαžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž‚αžΊ NAT) αŸ” Nodelocaldns αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž”αž‰αŸ’αž αžΆαž“αŸαŸ‡αžŠαŸ„αž™αž€αž˜αŸ’αž…αžΆαžαŸ‹ NAT αž“αž·αž„αžŠαŸ†αž‘αžΎαž„αž€αŸ†αžŽαŸ‚αž€αžΆαžšαžαž—αŸ’αž‡αžΆαž”αŸ‹αž‘αŸ… TCP αžŠαžΎαž˜αŸ’αž”αžΈαž”αž‰αŸ’αž…αžΌαž› DNS αž€αŸαžŠαžΌαž…αž‡αžΆαž€αžΆαžšαžšαž€αŸ’αžŸαžΆαž‘αž»αž€αžŸαŸ†αžŽαž½αžš DNS αžαžΆαž„αž›αžΎαž€αŸ’αž“αž»αž„αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“ (αžšαž½αž˜αž‘αžΆαŸ†αž„αžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹αž’αžœαž·αž‡αŸ’αž‡αž˜αžΆαž“αžšαž™αŸˆαž–αŸαž› 5 αžœαž·αž“αžΆαž‘αžΈ)αŸ”

5. αž’αŸ’αžœαžΎαž˜αžΆαžαŸ’αžšαžŠαŸ’αž‹αžΆαž“ pods αž•αŸ’αžŠαŸαž€αž“αž·αž„αž”αž‰αŸ’αžˆαžšαžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·

αž‚αž“αŸ’αž›αžΉαŸ‡αž’αž“αž»αžœαžαŸ’αž Kubernetes αž”αŸ’αžšαžΆαŸ†αž”αž½αž“

αžαžΎαž’αŸ’αž“αž€αž’αžΆαž…αž“αž·αž™αžΆαž™αžŠαŸ„αž™αž‘αŸ†αž“αž»αž€αž…αž·αžαŸ’αžαžαžΆαžŸαŸαžœαžΆαž˜αžΈαž€αŸ’αžšαžΌαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž”αžΆαž“αžαŸ’αžšαŸ€αž˜αžšαž½αž…αžšαžΆαž›αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž€αžΎαž“αž‘αžΎαž„αž–αžΈαžšαž‘αŸ…αž”αžΈαžŠαž„αž‘αŸ? αžαžΎαž’αŸ’αžœαžΎαžŠαžΌαž…αž˜αŸ’αžαŸαž…αžŠαžΎαž˜αŸ’αž”αžΈαž”αŸ‚αž„αž…αŸ‚αž€αž’αž“αž’αžΆαž“αž±αŸ’αž™αž”αžΆαž“αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαž‘αŸ…αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€? αž€αžΆαžšαžšαž€αŸ’αžŸαžΆαž•αžαž–αžΈαžšαž”αžΈαžŠαŸ‚αž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž›αžΎαžŸαž–αžΈαž”αž“αŸ’αž‘αž»αž€αž€αžΆαžšαž„αžΆαžšαž’αžΆαž…αž“αžΉαž„αž›αŸ‚αž„αžαŸ’αžšαžΌαžœαž€αžΆαžšαžαž‘αŸ…αž‘αŸ€αž αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž€αžΆαžšαžšαž€αŸ’αžŸαžΆαžœαžΆαž±αŸ’αž™αžαŸ’αžšαž›αž”αŸ‹αž€αŸ’αžšαŸ„αž™αžœαž·αž‰ αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž αžΆαž“αž·αž—αŸαž™αž“αŸƒαž–αŸαž›αžœαŸαž›αžΆαžšαž„αž…αžΆαŸ†αž–αžΈαž€αžΆαžšαž€αžΎαž“αž‘αžΎαž„αž—αŸ’αž›αžΆαž˜αŸ—αž“αŸƒαž…αžšαžΆαž…αžšαžŽαŸαž‘αŸ…αž€αžΆαž“αŸ‹αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αŸ” αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αžŠαžΌαž…αž‡αžΆ αž§αž”αž€αžšαžŽαŸαžœαžΆαžŸαŸ‹αžŸαŸ’αž‘αž„αŸ‹αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž· Pod αž•αŸ’αžŠαŸαž€ ΠΈ Vertical Pod Autoscaler.

VPA αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αž”αž„αŸ’αž€αžΎαž“αžŸαŸ†αžŽαžΎ/αžŠαŸ‚αž“αž€αŸ†αžŽαžαŸ‹αž“αŸƒαž’αž»αž„αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αž“αŸ…αž€αŸ’αž“αž»αž„αž•αž αž’αžΆαžŸαŸ’αžšαŸαž™αž›αžΎαž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž‡αžΆαž€αŸ‹αžŸαŸ’αžαŸ‚αž„αŸ” αžαžΎαžœαžΆαž’αžΆαž…αž˜αžΆαž“αž”αŸ’αžšαž™αŸ„αž‡αž“αŸαž™αŸ‰αžΆαž„αžŠαžΌαž…αž˜αŸ’αžαŸαž…? αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž˜αžΆαž“αž•αžαžŠαŸ‚αž›αž˜αž·αž“αž’αžΆαž…αž’αŸ’αžœαžΎαž˜αžΆαžαŸ’αžšαžŠαŸ’αž‹αžΆαž“αž•αŸ’αžŠαŸαž€αžŠαŸ„αž™αž αŸαžαž»αž•αž›αž˜αž½αž™αž…αŸ†αž“αž½αž“ (αžŠαŸ‚αž›αž˜αž·αž“αž‚αž½αžšαž±αŸ’αž™αž‘αž»αž€αž…αž·αžαŸ’αžαž‘αžΆαŸ†αž„αžŸαŸ’αžšαž»αž„) αž“αŸ„αŸ‡αž’αŸ’αž“αž€αž’αžΆαž…αž–αŸ’αž™αžΆαž™αžΆαž˜αž”αŸ’αžšαž‚αž›αŸ‹αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž’αž“αž’αžΆαž“αžšαž”αžŸαŸ‹αžœαžΆαž‘αŸ… VPA αŸ” αž›αž€αŸ’αžαžŽαŸˆαž–αž·αžŸαŸαžŸαžšαž”αžŸαŸ‹αžœαžΆαž‚αžΊαž‡αžΆαž”αŸ’αžšαž–αŸαž“αŸ’αž’αžŽαŸ‚αž“αžΆαŸ†αžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎαž‘αž·αž“αŸ’αž“αž“αŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αžŸαžΆαžŸαŸ’αžšαŸ’αž αž“αž·αž„αž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž–αžΈ metric-server αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž˜αž·αž“αž…αž„αŸ‹αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžŸαŸ†αžŽαžΎ/αžŠαŸ‚αž“αž€αŸ†αžŽαžαŸ‹αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αž‘αŸ αž’αŸ’αž“αž€αž’αžΆαž…αžαžΆαž˜αžŠαžΆαž“αž’αž“αž’αžΆαž“αžŠαŸ‚αž›αž”αžΆαž“αžŽαŸ‚αž“αžΆαŸ†αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αž»αž„αžαžΊαž“αŸαžšαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€ αž“αž·αž„αž”αž„αŸ’αž€αžΎαž“αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž–αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžŠαžΎαž˜αŸ’αž”αžΈαžšαž€αŸ’αžŸαžΆαž‘αž»αž€ CPU αž“αž·αž„ αž€αžΆαžšαž…αž„αž…αžΆαŸ†αž“αŸ…αž€αŸ’αž“αž»αž„αž…αž„αŸ’αž€αŸ„αž˜αŸ”

αž‚αž“αŸ’αž›αžΉαŸ‡αž’αž“αž»αžœαžαŸ’αž Kubernetes αž”αŸ’αžšαžΆαŸ†αž”αž½αž“αžšαžΌαž”αž—αžΆαž–αž”αžΆαž“αž˜αž€αž–αžΈ 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 αžšαž„αžšαž αžΌαžαžŠαž›αŸ‹αžαž˜αŸ’αž›αŸƒαž’αŸ’αž›αžΆαž€αŸ‹αž…αž»αŸ‡αž€αŸ’αžšαŸ„αž˜αž€αž˜αŸ’αžšαž·αž αž¬αžšαž αžΌαžαžŠαž›αŸ‹αž…αŸ†αž“αž½αž“αž’αžαž·αž”αžšαž˜αžΆαž“αŸƒαž€αžΆαžšαž…αž˜αŸ’αž›αž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αžˆαžΆαž“αžŠαž›αŸ‹αŸ”

αž‚αž“αŸ’αž›αžΉαŸ‡αž’αž“αž»αžœαžαŸ’αž Kubernetes αž”αŸ’αžšαžΆαŸ†αž”αž½αž“αžšαžΌαž”αž—αžΆαž–αž”αžΆαž“αž˜αž€αž–αžΈ 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 αž”αŸ’αžšαžΆαŸ†αž”αž½αž“

αž˜αž·αž“αž˜αŸ‚αž“αž‚αŸ’αžšαž”αŸ‹αžαŸ’αž“αžΆαŸ†αž„αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž›αžΎαž•αŸ’αž“αŸ‚αž€αžšαžΉαž„αžŠαžΌαž…αž‚αŸ’αž“αžΆαž‘αŸ αž αžΎαž™αž˜αž·αž“αž˜αŸ‚αž“αž•αžαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžαŸ’αžšαžΌαžœαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαŸ‚αž›αž–αžΉαž„αž•αŸ’αž’αŸ‚αž€αž›αžΎαž€αž»αŸ†αž–αŸ’αž™αžΌαž‘αŸαžšαž“αŸ„αŸ‡αž‘αŸαŸ” 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

αž‚αž“αŸ’αž›αžΉαŸ‡αž’αž“αž»αžœαžαŸ’αž Kubernetes αž”αŸ’αžšαžΆαŸ†αž”αž½αž“

ETCD αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸαž αŸ…αžαžΆαžαž½αžšαž€αŸ’αž”αžΆαž›αž“αŸƒαž…αž„αŸ’αž€αŸ„αž˜αž‘αžΆαŸ†αž„αž˜αžΌαž›αŸ” αžœαžΆαž˜αžΆαž“αžŸαžΆαžšαŸˆαžŸαŸ†αžαžΆαž“αŸ‹αžαŸ’αž›αžΆαŸ†αž„αžŽαžΆαžŸαŸ‹αž€αŸ’αž“αž»αž„αž€αžΆαžšαžαŸ‚αžšαž€αŸ’αžŸαžΆαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž“αŸƒαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αž“αŸαŸ‡αž“αŸ…αž€αž˜αŸ’αžšαž·αžαžαŸ’αž–αžŸαŸ‹αž˜αž½αž™ αž…αžΆαž”αŸ‹αžαžΆαŸ†αž„αž–αžΈαž›αŸ’αž”αžΏαž“αž“αŸƒαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž“αŸ…αž€αŸ’αž“αž»αž„ Cube αž’αžΆαžŸαŸ’αžšαŸαž™αž›αžΎαžœαžΆαŸ” αžŸαŸ’αžαž„αŸ‹αžŠαžΆαžšαžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœ αž αžΎαž™αž€αŸ’αž“αž»αž„αž–αŸαž›αž‡αžΆαž˜αž½αž™αž‚αŸ’αž“αžΆ αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŠαŸαž›αŸ’αž’αž‚αžΊαžαŸ’αžšαžΌαžœαžšαž€αŸ’αžŸαžΆαž…αž„αŸ’αž€αŸ„αž˜ ETCD αž“αŸ…αž›αžΎαžαŸ’αž“αžΆαŸ†αž„αž˜αŸ αžŠαžΎαž˜αŸ’αž”αžΈαž˜αžΆαž“αž€αžΆαžšαž–αž“αŸ’αž™αžΆαž–αŸαž›αž’αž”αŸ’αž”αž”αžšαž˜αžΆαžŠαž›αŸ‹ kube-apiserver αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž˜αž·αž“αž’αžΆαž…αž’αŸ’αžœαžΎαžŠαžΌαž…αž“αŸαŸ‡αž”αžΆαž“αž‘αŸ αžŸαžΌαž˜αžŠαžΆαž€αŸ‹ ETCD αž±αŸ’αž™αž‡αž·αžαž”αŸ†αž•αž»αžαžαžΆαž˜αžŠαŸ‚αž›αž’αžΆαž…αž’αŸ’αžœαžΎαž‘αŸ…αž”αžΆαž“ αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αž˜αŸ’αžšαž·αžαž”αž‰αŸ’αž‡αžΌαž“αžŠαŸαž›αŸ’αž’αžšαžœαžΆαž„αž’αŸ’αž“αž€αž…αžΌαž›αžšαž½αž˜αŸ” αž™αž€αž…αž·αžαŸ’αžαž‘αž»αž€αžŠαžΆαž€αŸ‹αž•αž„αžŠαŸ‚αžšαž…αŸ†αž–αŸ„αŸ‡αž…αŸ†αž“αž½αž“αžαŸ’αž“αžΆαŸ†αž„αž–αžΈ ETCD αž’αžΆαž…αž’αŸ’αž›αžΆαž€αŸ‹αž…αŸαž‰αžŠαŸ„αž™αž˜αž·αž“αž”αž„αŸ’αž€αž‚αŸ’αžšαŸ„αŸ‡αžαŸ’αž“αžΆαž€αŸ‹αžŠαž›αŸ‹αž…αž„αŸ’αž€αŸ„αž˜

αž‚αž“αŸ’αž›αžΉαŸ‡αž’αž“αž»αžœαžαŸ’αž Kubernetes αž”αŸ’αžšαžΆαŸ†αž”αž½αž“

αžŸαžΌαž˜αž…αž„αž…αžΆαŸ†αžαžΆαž€αžΆαžšαž”αž„αŸ’αž€αžΎαž“αž…αŸ†αž“αž½αž“αžŸαž˜αžΆαž‡αž·αž€αž…αŸ’αžšαžΎαž“αž–αŸαž€αž“αŸ…αž€αŸ’αž“αž»αž„αž…αž„αŸ’αž€αŸ„αž˜αž’αžΆαž…αž”αž„αŸ’αž€αžΎαž“αž€αžΆαžšαž’αžαŸ‹αž±αž“αž…αŸ†αž–αŸ„αŸ‡αž€αŸ†αž αž»αžŸαžŠαŸ„αž™αž…αŸ†αžŽαžΆαž™αž›αžΎαž€αžΆαžšαž’αž“αž»αžœαžαŸ’αž αž’αŸ’αžœαžΈαž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„αž‚αž½αžšαžαŸ‚αžŸαŸ’αžαž·αžαž€αŸ’αž“αž»αž„αž€αž˜αŸ’αžšαž·αžαž˜αž’αŸ’αž™αž˜αŸ”

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž™αžΎαž„αž“αž·αž™αžΆαž™αž’αŸ†αž–αžΈαž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž“αŸ„αŸ‡ αž˜αžΆαž“αž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†αž˜αž½αž™αž…αŸ†αž“αž½αž“αŸ–

  1. αž˜αžΆαž“αž•αŸ’αž“αŸ‚αž€αžšαžΉαž„αž›αŸ’αž’ αžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎαž‘αŸ†αž αŸ†αž“αŸƒαž…αž„αŸ’αž€αŸ„αž˜ (αž’αŸ’αž“αž€αž’αžΆαž…αž’αžΆαž“ αž“αŸ…αž‘αžΈαž“αŸαŸ‡).

  2. αž€αŸ‚αž”αŸ’αžšαŸ‚αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαž˜αž½αž™αž…αŸ†αž“αž½αž“ αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž”αžΆαž“αžšαžΈαž€αžšαžΆαž›αžŠαžΆαž›αž…αž„αŸ’αž€αŸ„αž˜αžšαžœαžΆαž„ DCs αž˜αž½αž™αž‚αžΌ αž¬αž”αžŽαŸ’αžαžΆαž‰ αž“αž·αž„αžŒαžΈαžŸαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž‘αž»αž€αž‡αžΆαž…αŸ’αžšαžΎαž“αžŠαŸ‚αž›αž’αŸ’αž“αž€αž…αž„αŸ‹αž”αžΆαž“ (αž’αŸ’αž“αž€αž’αžΆαž…αž’αžΆαž“ αž“αŸ…αž‘αžΈαž“αŸαŸ‡).

αžŸαŸαž…αž€αŸ’αžαžΈαžŸαž“αŸ’αž“αž·αžŠαŸ’αž‹αžΆαž“

αž’αžαŸ’αžαž”αž‘αž“αŸαŸ‡αž–αž·αž–αžŽαŸŒαž“αžΆαž’αŸ†αž–αžΈαž…αŸ†αžŽαž»αž…αžŠαŸ‚αž›αž€αŸ’αžšαž»αž˜αžšαž”αžŸαŸ‹αž™αžΎαž„αž–αŸ’αž™αžΆαž™αžΆαž˜αž’αž“αž»αžœαžαŸ’αžαžαžΆαž˜αŸ” αž“αŸαŸ‡αž˜αž·αž“αž˜αŸ‚αž“αž‡αžΆαž€αžΆαžšαž–αž·αž–αžŽαŸŒαž“αžΆαž‡αŸ†αž αžΆαž“αž˜αŸ’αžαž„αž˜αž½αž™αŸ—αž“αŸƒαžŸαž€αž˜αŸ’αž˜αž—αžΆαž–αž“αŸ„αŸ‡αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž‡αž˜αŸ’αžšαžΎαžŸαžŠαŸ‚αž›αž’αžΆαž…αž˜αžΆαž“αž”αŸ’αžšαž™αŸ„αž‡αž“αŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž”αž„αŸ’αž€αžΎαž“αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž–αž›αžΎαž…αž„αŸ’αž€αŸ„αž˜αŸ” αžœαžΆαž…αŸ’αž”αžΆαžŸαŸ‹αžŽαžΆαžŸαŸ‹αžαžΆαž…αž„αŸ’αž€αŸ„αž˜αž“αžΈαž˜αž½αž™αŸ—αž˜αžΆαž“αž›αž€αŸ’αžαžŽαŸˆαž”αŸ’αž›αŸ‚αž€αž–αžΈαž‚αŸαžαžΆαž˜αžœαž·αž’αžΈαžšαž”αžŸαŸ‹αžœαžΆ αž αžΎαž™αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž’αžΆαž…αž”αŸ’αžšαŸ‚αž”αŸ’αžšαž½αž›αž™αŸ‰αžΆαž„αžαŸ’αž›αžΆαŸ†αž„ αžŠαžΌαž…αŸ’αž“αŸαŸ‡αžœαžΆαž‚αž½αžšαž±αŸ’αž™αž…αžΆαž”αŸ‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸαž€αŸ’αž“αž»αž„αž€αžΆαžšαž‘αž‘αž½αž›αž”αžΆαž“αž˜αžαž·αž€αŸ‚αž›αž˜αŸ’αž’αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž’αŸ†αž–αžΈαžšαž”αŸ€αž”αžŠαŸ‚αž›αž’αŸ’αž“αž€αžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αž…αž„αŸ’αž€αŸ„αž˜ Kubernetes αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€ αž“αž·αž„αžšαž”αŸ€αž”αžŠαŸ‚αž›αž’αŸ’αž“αž€αž€αŸ‚αž›αž˜αŸ’αž’αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžšαž”αžŸαŸ‹αžœαžΆαŸ” αž…αŸ‚αž€αžšαŸ†αž›αŸ‚αž€αž”αž‘αž–αž·αžŸαŸ„αž’αž“αŸαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž“αŸ…αž€αŸ’αž“αž»αž„αž˜αžαž·αž™αŸ„αž”αž›αŸ‹ αžœαžΆαž“αžΉαž„αž‚αž½αžšαž±αŸ’αž™αž…αžΆαž”αŸ‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸαž€αŸ’αž“αž»αž„αž€αžΆαžšαžŠαžΉαž„αŸ”

αž”αŸ’αžšαž—αž–: www.habr.com