KubernetesαŸ– αž αŸαžαž»αž’αŸ’αžœαžΈαž”αžΆαž“αž‡αžΆαžœαžΆαž˜αžΆαž“αžŸαžΆαžšαŸˆαžŸαŸ†αžαžΆαž“αŸ‹αžαŸ’αž›αžΆαŸ†αž„αžŽαžΆαžŸαŸ‹αž€αŸ’αž“αž»αž„αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž’αž“αž’αžΆαž“αž”αŸ’αžšαž–αŸαž“αŸ’αž’?

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

KubernetesαŸ– αž αŸαžαž»αž’αŸ’αžœαžΈαž”αžΆαž“αž‡αžΆαžœαžΆαž˜αžΆαž“αžŸαžΆαžšαŸˆαžŸαŸ†αžαžΆαž“αŸ‹αžαŸ’αž›αžΆαŸ†αž„αžŽαžΆαžŸαŸ‹αž€αŸ’αž“αž»αž„αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž’αž“αž’αžΆαž“αž”αŸ’αžšαž–αŸαž“αŸ’αž’?

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

  1. αž€αžΆαžšαž…αŸ’αžšαŸ„αŸ‡
  2. αž‡αž½αžš

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

  1. αž’αžΆαž“αžΆ β€” αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αž»αž„αžαžΊαž“αŸαžšαž“αžΈαž˜αž½αž™αŸ—αž“αŸ…αž€αŸ’αž“αž»αž„αž•αž αžŸαŸ†αžŽαžΎ αž“αž·αž„αžŠαŸ‚αž“αž€αŸ†αžŽαžαŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αž„αŸ’αž‚αž…αž„αž…αžΆαŸ† αž“αž·αž„αžŸαŸŠαžΈαž—αžΈαž™αžΌ αž αžΎαž™αžαž˜αŸ’αž›αŸƒαž‘αžΆαŸ†αž„αž“αŸαŸ‡αžαŸ’αžšαžΌαžœαžαŸ‚αž•αŸ’αž‚αžΌαž•αŸ’αž‚αž„
  2. αž’αžΆαž…αž•αŸ’αž‘αž»αŸ‡αž”αžΆαž“αŸ” β€” αž™αŸ‰αžΆαž„αž αŸ„αž…αžŽαžΆαžŸαŸ‹αž’αž»αž„αž˜αž½αž™αž“αŸ…αž€αŸ’αž“αž»αž„αž•αžαž˜αžΆαž“αžŸαŸ†αžŽαžΎ αž“αž·αž„αžŠαŸ‚αž“αž€αŸ†αžŽαžαŸ‹ αž‡αžΆαž˜αž½αž™αž“αžΉαž„αžŸαŸ†αžŽαžΎ < limit
  3. αž€αžΆαžšαžαž·αžαžαŸ†αž”αŸ’αžšαžΉαž„αž”αŸ’αžšαŸ‚αž„αžŠαŸαž›αŸ’αž’αž”αŸ†αž•αž»αž - αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž˜αž·αž“αž˜αžΆαž“αž’αž»αž„αžαŸ‚αž˜αž½αž™αž“αŸ…αž€αŸ’αž“αž»αž„αž•αž αž‚αžΊαž’αž“αž’αžΆαž“αž˜αžΆαž“αž€αŸ†αžŽαžαŸ‹

αž€αŸ’αž“αž»αž„αž–αŸαž›αž‡αžΆαž˜αž½αž™αž‚αŸ’αž“αžΆαž“αŸαŸ‡ αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αžαŸ’αž“αžΆαŸ†αž„αž‡αž½αž”αž”αŸ’αžšαž‘αŸ‡αž“αžΉαž„αž€αžΆαžšαžαŸ’αžœαŸ‡αžαžΆαžαž’αž“αž’αžΆαž“ (ថអស αž’αž„αŸ’αž‚αž…αž„αž…αžΆαŸ†) 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 αž•αŸ’αžŠαŸαž€)αŸ” αž€αŸ’αž”αž½αž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž˜αžΆαž“αžŠαžΌαž…αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ–

  1. αž€αžΆαžšαž’αžΆαž“αž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž“αŸƒαž’αž“αž’αžΆαž“αžŠαŸ‚αž›αž”αžΆαž“αžŸαž„αŸ’αž€αŸαžαžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹ (CurrentMetricValue)
  2. αžαž˜αŸ’αž›αŸƒαžŠαŸ‚αž›αž…αž„αŸ‹αž”αžΆαž“αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αž“αž’αžΆαž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹ (desiredMetricValue) αžŠαŸ‚αž›αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αž“αž’αžΆαž“αž”αŸ’αžšαž–αŸαž“αŸ’αž’αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αžŠαŸ„αž™αž”αŸ’αžšαžΎαžŸαŸ†αžŽαžΎ
  3. αž…αŸ†αž“αž½αž“β€‹αž…αž˜αŸ’αž›αž„β€‹αž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“β€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αž€αŸ†αžŽαžαŸ‹ (currentReplicas)
  4. αžšαžΌαž”αž˜αž“αŸ’αžαžαžΆαž„αž€αŸ’αžšαŸ„αž˜αž‚αžŽαž“αžΆαž…αŸ†αž“αž½αž“αž…αž˜αŸ’αž›αž„αžŠαŸ‚αž›αž…αž„αŸ‹αž”αžΆαž“ (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. αžαžΆαž˜αž›αž€αŸ’αžαžαžŽαŸ’αžŒαž’αŸ’αžœαžΎαžŠαžΌαž…αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸˆ
    1. αž‘αž‘αž½αž›αž”αžΆαž“αžαž˜αŸ’αž›αŸƒαžŠαžΆαž…αŸ‹αžαžΆαžαž“αŸƒ pod metrics αž–αžΈ metric server, i.e. ៑០៑ម αž“αž·αž„ ៀម
    2. αž‚αžŽαž“αžΆαžαž˜αŸ’αž›αŸƒαžŠαžΆαž…αŸ‹αžαžΆαžαž‡αžΆαž˜αž’αŸ’αž™αž˜ i.e. (101m + 4m) / 2 = 53m
    3. αž‘αž‘αž½αž›αž”αžΆαž“αžαž˜αŸ’αž›αŸƒαžŠαžΆαž…αŸ‹αžαžΆαžαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž’αž“αž’αžΆαž“αžŠαŸ‚αž›αž…αž„αŸ‹αž”αžΆαž“ (αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž“αŸαŸ‡ αžŸαŸ†αžŽαžΎαžšαž”αžŸαŸ‹αž’αž»αž„αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αžΌαž€αžŸαžšαž»αž”) 60m + 30m = 90m
    4. αž‚αžŽαž“αžΆβ€‹αž—αžΆαž‚αžšαž™β€‹αž˜αž’αŸ’αž™αž˜β€‹αž“αŸƒβ€‹αž€αžΆαžšβ€‹αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹β€‹αžŸαŸŠαžΈαž—αžΈαž™αžΌβ€‹αžŠαŸ‚αž›β€‹αž‘αžΆαž€αŸ‹αž‘αž„β€‹αž“αžΉαž„β€‹αž€αžΆαžšβ€‹αžŸαŸ’αž“αžΎαžŸαž»αŸ†β€‹αž•αž, ឧ. 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 αž’αžΆαž…αžœαžΆαž™αžαž˜αŸ’αž›αŸƒαž”αž“αŸ’αž‘αž»αž€αž“αŸ…αž›αžΎαžαŸ’αž“αžΆαŸ†αž„αž”αžΆαž“αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœ αž αžΎαž™αžšαžΆαž™αž€αžΆαžšαžŽαŸαžαžΆαž˜αž·αž“αž˜αžΆαž“αž’αž“αž’αžΆαž“αž“αŸ…αž€αŸ’αž“αž»αž„αž…αž„αŸ’αž€αŸ„αž˜αžŠαžΎαž˜αŸ’αž”αžΈαž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž•αžαž”αž“αŸ’αž‘αžΆαž”αŸ‹αž‘αŸαŸ”

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

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

  1. αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ€αžαž“αŸƒαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž€αŸ†αžŽαžαŸ‹αž–αŸαž›αž€αŸ’αž“αž»αž„αž›αž€αŸ’αžαžαžŽαŸ’αžŒαž“αŸƒαžαž»αž›αŸ’αž™αž—αžΆαž–αž”αž“αŸ’αž‘αž»αž€αžšαžœαžΆαž„αžαŸ’αž“αžΆαŸ†αž„ k8s
  2. αžŠαžΎαž˜αŸ’αž”αžΈαž€αžΆαžαŸ‹αž”αž“αŸ’αžαž™αž›αž‘αŸ’αž’αž—αžΆαž–αž“αŸƒαž–αŸ’αžšαžΉαžαŸ’αžαž·αž€αžΆαžšαžŽαŸ "αž€αžΆαžšαž”αžŽαŸ’αžαŸαž‰αž…αŸαž‰" αž€αžΎαžαž‘αžΎαž„
  3. αžŸαž˜αŸ’αžšαžΆαž”αŸ‹β€‹αž€αžΆαžšβ€‹αž’αŸ’αžœαžΎβ€‹αž˜αžΆαžαŸ’αžšαžŠαŸ’αž‹αžΆαž“β€‹αžŠαŸ„αž™β€‹αžŸαŸ’αžœαŸαž™β€‹αž”αŸ’αžšαžœαžαŸ’αžαž·β€‹αž•αŸ’αžŠαŸαž€β€‹αž“αŸƒβ€‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈβ€‹ pods (HPA) αžŠαžΎαž˜αŸ’αž”αžΈβ€‹αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš
  4. αžŸαž˜αŸ’αžšαžΆαž”αŸ‹β€‹αž€αžΆαžšβ€‹αž’αŸ’αžœαžΎβ€‹αž˜αžΆαžαŸ’αžšαžŠαŸ’αž‹αžΆαž“β€‹αžŠαŸ„αž™β€‹αžŸαŸ’αžœαŸαž™β€‹αž”αŸ’αžšαžœαžαŸ’αžαž·β€‹αž•αŸ’αžŠαŸαž€β€‹αž“αŸƒβ€‹αžαŸ’αž“αžΆαŸ†αž„ (Cluster Autoscaling) αžŸαž˜αŸ’αžšαžΆαž”αŸ‹β€‹αž’αŸ’αž“αž€β€‹αž•αŸ’αžŠαž›αŸ‹β€‹αž–αž–αž€

αžŸαžΌαž˜αž’αžΆαž“αž’αžαŸ’αžαž”αž‘αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαž“αŸ…αž›αžΎαž”αŸ’αž›αž€αŸ‹αžšαž”αžŸαŸ‹αž™αžΎαž„αž•αž„αžŠαŸ‚αžšαŸ–

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

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹