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

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

Kube-scheduler αž‚αžΊαž‡αžΆαžŸαž˜αžΆαžŸαž’αžΆαžαž»αžŸαŸ†αžαžΆαž“αŸ‹αž˜αž½αž™αž“αŸƒ Kubernetes αžŠαŸ‚αž›αž‘αž‘αž½αž›αžαž»αžŸαžαŸ’αžšαžΌαžœαž€αŸ’αž“αž»αž„αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž€αžΆαž›αžœαž·αž—αžΆαž‚ pods αž“αŸ…αž‘αžΌαž‘αžΆαŸ†αž„ nodes αžŠαŸ„αž™αž’αž“αž»αž›αŸ„αž˜αžαžΆαž˜αž‚αŸ„αž›αž€αžΆαžšαžŽαŸαžŠαŸ‚αž›αž”αžΆαž“αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αŸ” αž‡αžΆαž‰αžΉαž€αž‰αž™ αž€αŸ’αž“αž»αž„αž’αŸ†αž‘αž»αž„αž–αŸαž›αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž“αŸƒαž…αž„αŸ’αž€αŸ„αž˜ Kubernetes αž™αžΎαž„αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž‚αž·αžαž’αŸ†αž–αžΈαž‚αŸ„αž›αž€αžΆαžšαžŽαŸαžŽαžΆαž˜αž½αž™αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαžŠαžΎαž˜αŸ’αž”αžΈαž€αŸ†αžŽαžαŸ‹αž€αžΆαž›αžœαž·αž—αžΆαž‚αž•αžαž‘αŸ αžŠαŸ„αž™αžŸαžΆαžšαžŸαŸ†αžŽαž»αŸ†αž“αŸƒαž‚αŸ„αž›αž€αžΆαžšαžŽαŸαž“αŸƒαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž€αŸ†αžŽαžαŸ‹αž–αŸαž›αžœαŸαž›αžΆ kube-default αž‚αžΊαžŸαž˜αžšαž˜αŸ’αž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αž·αž…αŸ’αž…αž€αžΆαžšαž”αŸ’αžšαž…αžΆαŸ†αžαŸ’αž„αŸƒαž—αžΆαž‚αž…αŸ’αžšαžΎαž“αŸ” αž‘αŸ„αŸ‡αž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™ αž˜αžΆαž“αžŸαŸ’αžαžΆαž“αž—αžΆαž–αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αžœαžΆαž˜αžΆαž“αžŸαžΆαžšαŸˆαžŸαŸ†αžαžΆαž“αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž™αžΎαž„αž€αŸ’αž“αž»αž„αž€αžΆαžšαž€αŸ‚αžŸαž˜αŸ’αžšαž½αž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸƒαž€αžΆαžšαž”αŸ‚αž„αž…αŸ‚αž€αž•αž αž αžΎαž™αž˜αžΆαž“αžœαž·αž’αžΈαž–αžΈαžšαž™αŸ‰αžΆαž„αžŠαžΎαž˜αŸ’αž”αžΈαžŸαž˜αŸ’αžšαŸαž…αž€αž·αž…αŸ’αž…αž€αžΆαžšαž“αŸαŸ‡αŸ–

  1. αž”αž„αŸ’αž€αžΎαžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž€αŸ†αžŽαžαŸ‹αž–αŸαž›αžœαŸαž›αžΆ kube αž‡αžΆαž˜αž½αž™αž“αžΉαž„αžŸαŸ†αžŽαž»αŸ†αž…αŸ’αž”αžΆαž”αŸ‹αž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“
  2. αžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž€αŸ†αžŽαžαŸ‹αž–αŸαž›αž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€ αž αžΎαž™αž”αž„αŸ’αžšαŸ€αž“αžœαžΆαž±αŸ’αž™αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αžŸαŸ†αžŽαžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ API

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

αž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†αžαŸ’αž›αžΈαŸ—αž’αŸ†αž–αžΈαžšαž”αŸ€αž”αžŠαŸ‚αž› kube-scheduler αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš

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

αžŠαŸ†αž”αžΌαž„ kube-scheduler αž…αž„αž€αŸ’αžšαž„αž”αž‰αŸ’αž‡αžΈαžαŸ’αž“αžΆαŸ†αž„αžŠαŸ‚αž› pod αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αž–αŸαž›αžŠαŸ„αž™αž’αž“αž»αž›αŸ„αž˜αžαžΆαž˜αž‚αŸ„αž›αž€αžΆαžšαžŽαŸ predicates αŸ” αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€ αžαŸ’αž“αžΆαŸ†αž„αž“αžΈαž˜αž½αž™αŸ—αž–αžΈαž”αž‰αŸ’αž‡αžΈαž“αŸαŸ‡αž‘αž‘αž½αž›αž”αžΆαž“αž–αž·αž“αŸ’αž‘αž»αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αž˜αž½αž™αžŸαŸ’αžšαž”αžαžΆαž˜αž‚αŸ„αž›αž€αžΆαžšαžŽαŸαž’αžΆαž‘αž·αž—αžΆαž–αŸ” αž‡αžΆαž›αž‘αŸ’αž’αž•αž› αžαŸ’αž“αžΆαŸ†αž„αžŠαŸ‚αž›αž˜αžΆαž“αž…αŸ†αž“αž½αž“αž–αž·αž“αŸ’αž‘αž»αž’αžαž·αž”αžšαž˜αžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž˜αžΆαž“αžαŸ’αž“αžΆαŸ†αž„αžŠαŸ‚αž›αž˜αžΆαž“αž–αž·αž“αŸ’αž‘αž»αž’αžαž·αž”αžšαž˜αžΆαžŠαžΌαž…αž‚αŸ’αž“αžΆ αž…αŸƒαžŠαž“αŸ’αž™αž˜αž½αž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαŸ” αž”αž‰αŸ’αž‡αžΈ αž“αž·αž„αž€αžΆαžšαž–αž·αž–αžŽαŸŒαž“αžΆαž’αŸ†αž–αžΈαž‚αŸ„αž›αž€αžΆαžšαžŽαŸαž–αŸ’αž™αžΆαž€αžšαžŽαŸ (αž€αžΆαžšαžαŸ’αžšαž„) αž“αž·αž„αž’αžΆαž‘αž·αž—αžΆαž– (αž€αžΆαžšαžŠαžΆαž€αŸ‹αž–αž·αž“αŸ’αž‘αž») αž’αžΆαž…αžšαž€αž”αžΆαž“αž“αŸ…αž€αŸ’αž“αž»αž„ αž―αž€αžŸαžΆαžš.

αž€αžΆαžšαž–αž·αž–αžŽαŸŒαž“αžΆαž’αŸ†αž–αžΈαžšαžΆαž„αž€αžΆαž™αž”αž‰αŸ’αž αžΆ

αž‘αŸ„αŸ‡αž”αžΈαž‡αžΆαž˜αžΆαž“αž…αž„αŸ’αž€αŸ„αž˜ Kubernetes αž•αŸ’αžŸαŸαž„αŸ—αž‚αŸ’αž“αžΆαž‡αžΆαž…αŸ’αžšαžΎαž“αžŠαŸ‚αž›αž€αŸ†αž–αž»αž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž€αŸ’αžŸαžΆαž“αŸ… Nixys αž€αŸαžŠαŸ„αž™ αž€αŸαžŠαŸ†αž”αžΌαž„αž‘αžΎαž™ αž™αžΎαž„αž”αžΆαž“αž‡αž½αž”αž”αŸ’αžšαž‘αŸ‡αž”αž‰αŸ’αž αžΆαž“αŸƒαž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž€αžΆαž›αžœαž·αž—αžΆαž‚αž“αŸ…αž–αŸαž›αžαŸ’αž˜αžΈαŸ—αž“αŸαŸ‡ αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž‚αž˜αŸ’αžšαŸ„αž„αž˜αž½αž™αžšαž”αžŸαŸ‹αž™αžΎαž„αžαŸ’αžšαžΌαžœαž€αžΆαžšαžŠαžΎαž˜αŸ’αž”αžΈαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž·αž…αŸ’αž…αž€αžΆαžšαžαžΆαž˜αž€αžΆαž›αž€αŸ†αžŽαžαŸ‹αž˜αž½αž™αž…αŸ†αž“αž½αž“αž’αŸ† (~100 CronJob entities)αŸ” αžŠαžΎαž˜αŸ’αž”αžΈαžŸαž˜αŸ’αžšαž½αž›αž€αžΆαžšαž–αž·αž–αžŽαŸŒαž“αžΆαž’αŸ†αž–αžΈαž”αž‰αŸ’αž αžΆαž±αŸ’αž™αž”αžΆαž“αž…αŸ’αžšαžΎαž“αžαžΆαž˜αžαŸ‚αž’αžΆαž…αž’αŸ’αžœαžΎαž‘αŸ…αž”αžΆαž“ αž™αžΎαž„αž“αžΉαž„αž›αžΎαž€αž§αž‘αžΆαž αžšαžŽαŸαž˜αž½αž™ αž˜αžΈαž€αŸ’αžšαžΌαžŸαžΊαžœαžΈαžŸ αžŠαŸ‚αž›αž“αŸ…αž€αŸ’αž“αž»αž„αž“αŸ„αŸ‡αž€αž·αž…αŸ’αž…αž€αžΆαžš cron αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαžΆαž€αŸ‹αž±αŸ’αž™αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž˜αŸ’αžαž„αž€αŸ’αž“αž»αž„αž˜αž½αž™αž“αžΆαž‘αžΈ αžŠαŸ„αž™αž”αž„αŸ’αž€αžΎαžαž”αž“αŸ’αž‘αž»αž€αžαŸ’αž›αŸ‡αž“αŸ…αž›αžΎαžŸαŸŠαžΈαž—αžΈαž™αžΌαŸ” αžŠαžΎαž˜αŸ’αž”αžΈαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž·αž…αŸ’αž…αž€αžΆαžš cron αžαŸ’αž“αžΆαŸ†αž„αž”αžΈαžŠαŸ‚αž›αž˜αžΆαž“αž›αž€αŸ’αžαžŽαŸˆαžŠαžΌαž…αž‚αŸ’αž“αžΆαž”αŸαŸ‡αž”αž·αž‘αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ‚αž„αž…αŸ‚αž€ (24 vCPUs αž“αŸ…αž›αžΎαž“αžΈαž˜αž½αž™αŸ—)αŸ”

αž€αŸ’αž“αž»αž„αž–αŸαž›αž‡αžΆαž˜αž½αž™αž‚αŸ’αž“αžΆαž“αŸαŸ‡ αžœαžΆαž˜αž·αž“αž’αžΆαž…αž‘αŸ…αžšαž½αž…αž‘αŸαž€αŸ’αž“αž»αž„αž€αžΆαžšαž“αž·αž™αžΆαž™αžŠαŸ„αž™αž—αžΆαž–αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαžαžΆαžαžΎαžšαž™αŸˆαž–αŸαž›αž”αŸ‰αž»αž“αŸ’αž˜αžΆαž“αžŠαŸ‚αž› CronJob αž“αžΉαž„αžαŸ’αžšαžΌαžœαž’αž“αž»αžœαžαŸ’αžαž–αŸ’αžšαŸ„αŸ‡αžαžΆαž”αžšαž·αž˜αžΆαžŽαž“αŸƒαž‘αž·αž“αŸ’αž“αž“αŸαž™αž”αž‰αŸ’αž…αžΌαž›αž€αŸ†αž–αž»αž„αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž₯αžαžˆαž”αŸ‹αžˆαžšαŸ” αž‡αžΆαž˜αž’αŸ’αž™αž˜αž€αŸ’αž“αž»αž„αž’αŸ†αž‘αž»αž„αž–αŸαž›αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž’αž˜αŸ’αž˜αžαžΆαžšαž”αžŸαŸ‹ kube-scheduler αžαŸ’αž“αžΆαŸ†αž„αž“αžΈαž˜αž½αž™αŸ—αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αžΆαžšαž„αžΆαžš 3-4 αžŠαŸ‚αž›αž”αž„αŸ’αž€αžΎαž ~ 20-30% αž“αŸƒαž”αž“αŸ’αž‘αž»αž€αž“αŸ…αž›αžΎ CPU αž“αŸƒ node αž“αžΈαž˜αž½αž™αŸ—αŸ–

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

αž”αž‰αŸ’αž αžΆαžŠαŸ„αž™αžαŸ’αž›αž½αž“αžœαžΆαž‚αžΊαžαžΆαž–αŸαž›αžαŸ’αž›αŸ‡ cron task pods αžˆαž”αŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αž–αŸαž›αž“αŸ…αž›αžΎαžαŸ’αž“αžΆαŸ†αž„αž˜αž½αž™αž€αŸ’αž“αž»αž„αž…αŸ†αžŽαŸ„αž˜αžαŸ’αž“αžΆαŸ†αž„αž‘αžΆαŸ†αž„αž”αžΈαŸ” αž“αŸ„αŸ‡αž‚αžΊαž“αŸ…αž–αŸαž›αžŽαžΆαž˜αž½αž™αž“αŸ„αŸ‡ αž˜αž·αž“αž˜αžΆαž“αž•αžαžαŸ‚αž˜αž½αž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸ’αžšαŸ„αž„αž‘αž»αž€αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžαŸ’αž“αžΆαŸ†αž„αž˜αž½αž™αž‘αŸ αžαžŽαŸˆαžŠαŸ‚αž›αž“αŸ…αž›αžΎαžαŸ’αž“αžΆαŸ†αž„αž–αžΈαžšαž•αŸ’αžŸαŸαž„αž‘αŸ€αž 6-8 αž…αŸ’αž”αžΆαž”αŸ‹αž…αž˜αŸ’αž›αž„αž“αŸƒαž—αžΆαžšαž€αž·αž…αŸ’αž…αž€αŸ†αž–αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŠαŸ„αž™αž”αž„αŸ’αž€αžΎαž ~ 40-60% αž“αŸƒαž”αž“αŸ’αž‘αž»αž€αžŸαŸŠαžΈαž—αžΈαž™αžΌαŸ–

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

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

αžαžΆαž˜αžšαž™αŸˆαž€αžΆαžšαž”αž„αŸ’αž€αžΎαž“αž€αž˜αŸ’αžšαž·αžαž“αŸƒαž€αžΆαžšαž€αžαŸ‹αžαŸ’αžšαžΆαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ kube-scheduler αžŠαž›αŸ‹αž€αž˜αŸ’αžšαž·αž 10 (-v=10) αž™αžΎαž„αž”αžΆαž“αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž€αžαŸ‹αžαŸ’αžšαžΆαž…αŸ†αž“αž½αž“αž–αž·αž“αŸ’αž‘αž»αžŠαŸ‚αž›αžαŸ’αž“αžΆαŸ†αž„αž“αžΈαž˜αž½αž™αŸ—αž‘αž‘αž½αž›αž”αžΆαž“αž€αŸ’αž“αž»αž„αž’αŸ†αž‘αž»αž„αž–αŸαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžœαžΆαž™αžαž˜αŸ’αž›αŸƒαŸ” αž€αŸ’αž“αž»αž„αž’αŸ†αž‘αž»αž„αž–αŸαž›αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž•αŸ‚αž“αž€αžΆαžšαž’αž˜αŸ’αž˜αžαžΆ αž–αŸαžαŸŒαž˜αžΆαž“αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αž’αžΆαž…αž˜αžΎαž›αžƒαžΎαž‰αž“αŸ…αž€αŸ’αž“αž»αž„αž€αŸ†αžŽαžαŸ‹αž αŸαžαž»αŸ–

resource_allocation.go:78] cronjob-1574828880-mn7m4 -> Node03: BalancedResourceAllocation, capacity 23900 millicores 67167186944 memory bytes, total request 1387 millicores 4161694720 memory bytes, score 9
resource_allocation.go:78] cronjob-1574828880-mn7m4 -> Node02: BalancedResourceAllocation, capacity 23900 millicores 67167186944 memory bytes, total request 1347 millicores 4444810240 memory bytes, score 9
resource_allocation.go:78] cronjob-1574828880-mn7m4 -> Node03: LeastResourceAllocation, capacity 23900 millicores 67167186944 memory bytes, total request 1387 millicores 4161694720 memory bytes, score 9
resource_allocation.go:78] cronjob-1574828880-mn7m4 -> Node01: BalancedResourceAllocation, capacity 23900 millicores 67167186944 memory bytes, total request 1687 millicores 4790840320 memory bytes, score 9
resource_allocation.go:78] cronjob-1574828880-mn7m4 -> Node02: LeastResourceAllocation, capacity 23900 millicores 67167186944 memory bytes, total request 1347 millicores 4444810240 memory bytes, score 9
resource_allocation.go:78] cronjob-1574828880-mn7m4 -> Node01: LeastResourceAllocation, capacity 23900 millicores 67167186944 memory bytes, total request 1687 millicores 4790840320 memory bytes, score 9
generic_scheduler.go:726] cronjob-1574828880-mn7m4_project-stage -> Node01: NodeAffinityPriority, Score: (0)                                                                                       
generic_scheduler.go:726] cronjob-1574828880-mn7m4_project-stage -> Node02: NodeAffinityPriority, Score: (0)                                                                                       
generic_scheduler.go:726] cronjob-1574828880-mn7m4_project-stage -> Node03: NodeAffinityPriority, Score: (0)                                                                                       
interpod_affinity.go:237] cronjob-1574828880-mn7m4 -> Node01: InterPodAffinityPriority, Score: (0)                                                                                                        
generic_scheduler.go:726] cronjob-1574828880-mn7m4_project-stage -> Node01: TaintTolerationPriority, Score: (10)                                                                                   
interpod_affinity.go:237] cronjob-1574828880-mn7m4 -> Node02: InterPodAffinityPriority, Score: (0)                                                                                                        
generic_scheduler.go:726] cronjob-1574828880-mn7m4_project-stage -> Node02: TaintTolerationPriority, Score: (10)                                                                                   
selector_spreading.go:146] cronjob-1574828880-mn7m4 -> Node01: SelectorSpreadPriority, Score: (10)                                                                                                        
interpod_affinity.go:237] cronjob-1574828880-mn7m4 -> Node03: InterPodAffinityPriority, Score: (0)                                                                                                        
generic_scheduler.go:726] cronjob-1574828880-mn7m4_project-stage -> Node03: TaintTolerationPriority, Score: (10)                                                                                   
selector_spreading.go:146] cronjob-1574828880-mn7m4 -> Node02: SelectorSpreadPriority, Score: (10)                                                                                                        
selector_spreading.go:146] cronjob-1574828880-mn7m4 -> Node03: SelectorSpreadPriority, Score: (10)                                                                                                        
generic_scheduler.go:726] cronjob-1574828880-mn7m4_project-stage -> Node01: SelectorSpreadPriority, Score: (10)                                                                                    
generic_scheduler.go:726] cronjob-1574828880-mn7m4_project-stage -> Node02: SelectorSpreadPriority, Score: (10)                                                                                    
generic_scheduler.go:726] cronjob-1574828880-mn7m4_project-stage -> Node03: SelectorSpreadPriority, Score: (10)                                                                                    
generic_scheduler.go:781] Host Node01 => Score 100043                                                                                                                                                                        
generic_scheduler.go:781] Host Node02 => Score 100043                                                                                                                                                                        
generic_scheduler.go:781] Host Node03 => Score 100043

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

resource_allocation.go:78] cronjob-1574211360-bzfkr -> Node02: BalancedResourceAllocation, capacity 23900 millicores 67167186944 memory bytes, total request 1587 millicores 4581125120 memory bytes, score 9
resource_allocation.go:78] cronjob-1574211360-bzfkr -> Node03: BalancedResourceAllocation, capacity 23900 millicores 67167186944 memory bytes, total request 1087 millicores 3532549120 memory bytes, score 9
resource_allocation.go:78] cronjob-1574211360-bzfkr -> Node02: LeastResourceAllocation, capacity 23900 millicores 67167186944 memory bytes, total request 1587 millicores 4581125120 memory bytes, score 9
resource_allocation.go:78] cronjob-1574211360-bzfkr -> Node01: BalancedResourceAllocation, capacity 23900 millicores 67167186944 memory bytes, total request 987 millicores 3322833920 memory bytes, score 9
resource_allocation.go:78] cronjob-1574211360-bzfkr -> Node01: LeastResourceAllocation, capacity 23900 millicores 67167186944 memory bytes, total request 987 millicores 3322833920 memory bytes, score 9 
resource_allocation.go:78] cronjob-1574211360-bzfkr -> Node03: LeastResourceAllocation, capacity 23900 millicores 67167186944 memory bytes, total request 1087 millicores 3532549120 memory bytes, score 9
interpod_affinity.go:237] cronjob-1574211360-bzfkr -> Node03: InterPodAffinityPriority, Score: (0)                                                                                                        
interpod_affinity.go:237] cronjob-1574211360-bzfkr -> Node02: InterPodAffinityPriority, Score: (0)                                                                                                        
interpod_affinity.go:237] cronjob-1574211360-bzfkr -> Node01: InterPodAffinityPriority, Score: (0)                                                                                                        
generic_scheduler.go:726] cronjob-1574211360-bzfkr_project-stage -> Node03: TaintTolerationPriority, Score: (10)                                                                                   
selector_spreading.go:146] cronjob-1574211360-bzfkr -> Node03: SelectorSpreadPriority, Score: (10)                                                                                                        
selector_spreading.go:146] cronjob-1574211360-bzfkr -> Node02: SelectorSpreadPriority, Score: (10)                                                                                                        
generic_scheduler.go:726] cronjob-1574211360-bzfkr_project-stage -> Node02: TaintTolerationPriority, Score: (10)                                                                                   
selector_spreading.go:146] cronjob-1574211360-bzfkr -> Node01: SelectorSpreadPriority, Score: (10)                                                                                                        
generic_scheduler.go:726] cronjob-1574211360-bzfkr_project-stage -> Node03: NodeAffinityPriority, Score: (0)                                                                                       
generic_scheduler.go:726] cronjob-1574211360-bzfkr_project-stage -> Node03: SelectorSpreadPriority, Score: (10)                                                                                    
generic_scheduler.go:726] cronjob-1574211360-bzfkr_project-stage -> Node02: SelectorSpreadPriority, Score: (10)                                                                                    
generic_scheduler.go:726] cronjob-1574211360-bzfkr_project-stage -> Node01: TaintTolerationPriority, Score: (10)                                                                                   
generic_scheduler.go:726] cronjob-1574211360-bzfkr_project-stage -> Node02: NodeAffinityPriority, Score: (0)                                                                                       
generic_scheduler.go:726] cronjob-1574211360-bzfkr_project-stage -> Node01: NodeAffinityPriority, Score: (0)                                                                                       
generic_scheduler.go:726] cronjob-1574211360-bzfkr_project-stage -> Node01: SelectorSpreadPriority, Score: (10)                                                                                    
generic_scheduler.go:781] Host Node03 => Score 100041                                                                                                                                                                        
generic_scheduler.go:781] Host Node02 => Score 100041                                                                                                                                                                        
generic_scheduler.go:781] Host Node01 => Score 100038

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

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

  1. αž“αŸ…αž€αž˜αŸ’αžšαž·αžαž“αŸƒαž€αžΆαžšαž€αžαŸ‹αžαŸ’αžšαžΆαž’αžαž·αž”αžšαž˜αžΆ (10) αž–αž·αž“αŸ’αž‘αž»αžŠαŸ‚αž›αž‘αž‘αž½αž›αž”αžΆαž“αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžαŸ‚αž’αžΆαž‘αž·αž—αžΆαž–αž˜αž½αž™αž…αŸ†αž“αž½αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž†αŸ’αž›αž»αŸ‡αž”αž‰αŸ’αž…αžΆαŸ†αž„αŸ” αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαžŠαž€αžŸαŸ’αžšαž„αŸ‹αžαžΆαž„αž›αžΎαž“αŸƒαž€αŸ†αžŽαžαŸ‹αž αŸαžαž» αž’αŸ’αž“αž€αž’αžΆαž…αž˜αžΎαž›αžƒαžΎαž‰αžαžΆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αžΆαž‘αž·αž—αžΆαž–αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžŠαŸ‚αž›αž”αžΆαž“αž†αŸ’αž›αž»αŸ‡αž”αž‰αŸ’αž…αžΆαŸ†αž„αž“αŸ…αž€αŸ’αž“αž»αž„αž€αŸ†αžŽαžαŸ‹αž αŸαžαž» αžαŸ’αž“αžΆαŸ†αž„αž‘αž‘αž½αž›αž”αžΆαž“αž–αž·αž“αŸ’αž‘αž»αžŠαžΌαž…αž‚αŸ’αž“αžΆαž€αŸ’αž“αž»αž„αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž€αžΆαž›αžœαž·αž—αžΆαž‚αž’αž˜αŸ’αž˜αžαžΆ αž“αž·αž„αž”αž‰αŸ’αž αžΆ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž›αž‘αŸ’αž’αž•αž›αž…αž»αž„αž€αŸ’αžšαŸ„αž™αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž“αŸƒαž€αžΆαžšαžšαŸ€αž”αž…αŸ†αž•αŸ‚αž“αž€αžΆαžšαž”αž‰αŸ’αž αžΆαž‚αžΊαžαž»αžŸαž‚αŸ’αž“αžΆαŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž αžΎαž™ αž™αžΎαž„αž’αžΆαž…αžŸαž“αŸ’αž“αž·αžŠαŸ’αž‹αžΆαž“αž”αžΆαž“αžαžΆ αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αžΆαž‘αž·αž—αžΆαž–αž˜αž½αž™αž…αŸ†αž“αž½αž“ αž€αžΆαžšαžŠαžΆαž€αŸ‹αž–αž·αž“αŸ’αž‘αž»αž€αžΎαžαž‘αžΎαž„ "αž“αŸ…αž–αžΈαž€αŸ’αžšαŸ„αž™αž†αžΆαž€" αž αžΎαž™αž™αžΎαž„αž˜αž·αž“αž˜αžΆαž“αžœαž·αž’αžΈαž™αž›αŸ‹αžαžΆ αž’αžΆαž‘αž·αž—αžΆαž–αžŽαžΆαžŠαŸ‚αž›αžαŸ’αž“αžΆαŸ†αž„αž˜αž·αž“αž‘αž‘αž½αž›αž”αžΆαž“αž–αž·αž“αŸ’αž‘αž»αž“αŸ„αŸ‡αž‘αŸαŸ” αž™αžΎαž„αž”αžΆαž“αž–αž·αž–αžŽαŸŒαž“αžΆαž’αŸ†αž–αžΈαž”αž‰αŸ’αž αžΆαž“αŸαŸ‡αž™αŸ‰αžΆαž„αž›αŸ†αž’αž·αžαž“αŸ…αž€αŸ’αž“αž»αž„ issue αžƒαŸ’αž›αžΆαŸ†αž„ Kubernetes αž“αŸ…αž›αžΎ Github αŸ” αž“αŸ…αž–αŸαž›αžŸαžšαžŸαŸαžš αž€αžΆαžšαž†αŸ’αž›αžΎαž™αžαž”αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‘αž‘αž½αž›αž–αžΈαž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸαžαžΆ αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαž€αžΆαžšαž€αžαŸ‹αžαŸ’αžšαžΆαž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αžΆαž”αŸ‹αžŠαŸαž Kubernetes v1.15,1.16, 1.17 αž“αž·αž„ XNUMX αŸ”
  2. αž˜αž·αž“αž˜αžΆαž“αžœαž·αž’αžΈαž„αžΆαž™αžŸαŸ’αžšαž½αž›αž€αŸ’αž“αž»αž„αž€αžΆαžšαž™αž›αŸ‹αžαžΆαžαžΎαž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αžŽαžΆαž˜αž½αž™αž“αŸƒαž‚αŸ„αž›αž“αž™αŸ„αž”αžΆαž™ kube-scheduler αž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž€αŸ†αž–αž»αž„αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αž“αŸ„αŸ‡αž‘αŸαŸ” αž”αžΆαž‘ αž“αŸ… αž―αž€αžŸαžΆαžš αž”αž‰αŸ’αž‡αžΈαž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαžΆαž™αž”αž‰αŸ’αž‡αžΈ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžœαžΆαž˜αž·αž“αž˜αžΆαž“αž–αŸαžαŸŒαž˜αžΆαž“αž’αŸ†αž–αžΈαž‘αž˜αŸ’αž„αž“αŸ‹αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αžŽαžΆαž˜αž½αž™αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αž…αŸ†αž–αŸ„αŸ‡αž‚αŸ„αž›αž€αžΆαžšαžŽαŸαž’αžΆαž‘αž·αž—αžΆαž–αž“αžΈαž˜αž½αž™αŸ—αž“αŸ„αŸ‡αž‘αŸαŸ” αž’αŸ’αž“αž€β€‹αž’αžΆαž…β€‹αž˜αžΎαž›β€‹αžƒαžΎαž‰β€‹αž‘αž˜αŸ’αž„αž“αŸ‹ αž¬β€‹αž€αŸ‚β€‹αžŸαž˜αŸ’αžšαž½αž›β€‹αž‚αŸ„αž›αž€αžΆαžšαžŽαŸβ€‹αžšαž”αžŸαŸ‹β€‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈβ€‹αž€αŸ†αžŽαžαŸ‹β€‹αž€αžΆαž›β€‹αž€αŸ†αžŽαžαŸ‹ kube-schedule αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜β€‹αžαŸ‚β€‹αž€αŸ’αž“αž»αž„β€‹αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ” αž€αžΌαžŠαž”αŸ’αžšαž—αž–.

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

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

αž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαž”αž‰αŸ’αž αžΆ

αž™αžΎαž„αž…αž„αŸ‹αž±αŸ’αž™αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž…αŸ†αž–αŸ„αŸ‡αž”αž‰αŸ’αž αžΆαž˜αžΆαž“αž—αžΆαž–αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αžαžΆαž˜αžŠαŸ‚αž›αž’αžΆαž…αž’αŸ’αžœαžΎαž”αžΆαž“ αž–αŸ„αž›αž‚αžΊαž’αž„αŸ’αž‚αž—αžΆαž–αžŸαŸ†αžαžΆαž“αŸ‹αžšαž”αžŸαŸ‹ Kubernetes (αž“αŸ…αž‘αžΈαž“αŸαŸ‡αž™αžΎαž„αž˜αžΆαž“αž“αŸαž™αžαžΆ default kube-scheduler) αž‚αž½αžšαžαŸ‚αž“αŸ…αžαŸ‚αž˜αž·αž“αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαŸ” αž™αžΎαž„αž˜αž·αž“αž…αž„αŸ‹αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž”αž‰αŸ’αž αžΆαž“αŸ…αž€αž“αŸ’αž›αŸ‚αž„αž˜αž½αž™ αž αžΎαž™αž”αž„αŸ’αž€αžΎαžαžœαžΆαž“αŸ…αž€αž“αŸ’αž›αŸ‚αž„αž•αŸ’αžŸαŸαž„αž‘αŸαŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž αžΎαž™ αž™αžΎαž„αž”αžΆαž“αž˜αž€αžŠαž›αŸ‹αž‡αž˜αŸ’αžšαžΎαžŸαž–αžΈαžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž”αž‰αŸ’αž αžΆ αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαž€αžΆαžŸαž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†αž’αŸ†αž–αžΈαž’αžαŸ’αžαž”αž‘ - αž”αž„αŸ’αž€αžΎαžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž€αŸ†αžŽαžαŸ‹αž–αŸαž›αž”αž“αŸ’αžαŸ‚αž˜ αž¬αžŸαžšαžŸαŸαžšαžŠαŸ„αž™αžαŸ’αž›αž½αž“αž―αž„αŸ” αžαž˜αŸ’αžšαžΌαžœαž€αžΆαžšαž…αž˜αŸ’αž”αž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αŸ†αžŽαžαŸ‹αž–αŸαž›αž—αžΆαžšαž€αž·αž…αŸ’αž… cron αž‚αžΊαžαŸ’αžšαžΌαžœαž…αŸ‚αž€αž…αžΆαž™αž”αž“αŸ’αž‘αž»αž€αž±αŸ’αž™αžŸαŸ’αž˜αžΎαŸ—αž‚αŸ’αž“αžΆαž›αžΎαžαŸ’αž“αžΆαŸ†αž„αž”αžΈαŸ” αžαž˜αŸ’αžšαžΌαžœαž€αžΆαžšαž“αŸαŸ‡αž’αžΆαž…αž”αŸ†αž–αŸαž‰αž”αžΆαž“αžŠαŸ„αž™αž‚αŸ„αž›αž€αžΆαžšαžŽαŸαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž€αŸ†αžŽαžαŸ‹αž–αŸαž›αžœαŸαž›αžΆ kube αžŠαŸ‚αž›αž˜αžΆαž“αžŸαŸ’αžšαžΆαž”αŸ‹ αžŠαžΌαž…αŸ’αž“αŸαŸ‡αžŠαžΎαž˜αŸ’αž”αžΈαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž”αž‰αŸ’αž αžΆαžšαž”αžŸαŸ‹αž™αžΎαž„ αžœαžΆαž‚αŸ’αž˜αžΆαž“αž…αŸ†αžŽαž»αž…αžŽαžΆαž€αŸ’αž“αž»αž„αž€αžΆαžšαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž€αŸ†αžŽαžαŸ‹αž–αŸαž›αž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž‘αŸαŸ”

αžŸαŸαž…αž€αŸ’αžαžΈαžŽαŸ‚αž“αžΆαŸ†αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αž„αŸ’αž€αžΎαž αž“αž·αž„αžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž€αŸ†αžŽαžαŸ‹αž–αŸαž›αžœαŸαž›αžΆ kube αž”αž“αŸ’αžαŸ‚αž˜αžαŸ’αžšαžΌαžœαž”αžΆαž“αž–αž·αž–αžŽαŸŒαž“αžΆαž“αŸ…αž€αŸ’αž“αž»αž„ αž―αž€αžŸαžΆαžš. αž‘αŸ„αŸ‡αž”αžΈαž‡αžΆαž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™ αžœαžΆαž αžΆαž€αŸ‹αž”αžΈαžŠαžΌαž…αž‡αžΆαž–αž½αž€αž™αžΎαž„αžŠαŸ‚αž›αž’αž„αŸ’αž‚αž—αžΆαž–αžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αž˜αž·αž“αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαžΆαž“αŸ‹αžŠαžΎαž˜αŸ’αž”αžΈαž’αžΆαž“αžΆαž”αžΆαž“αž“αžΌαžœαž€αžΆαžšαž’αžαŸ‹αž±αž“αž…αŸ†αž–αŸ„αŸ‡αž€αŸ†αž αž»αžŸαž€αŸ’αž“αž»αž„αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž“αŸƒαžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αžŸαŸ†αžαžΆαž“αŸ‹αžŠαžΌαž…αž‡αžΆ kube-scheduler αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž™αžΎαž„αž”αžΆαž“αžŸαž˜αŸ’αžšαŸαž…αž…αž·αžαŸ’αžαžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ cube-scheduler αžαŸ’αž˜αžΈαž˜αž½αž™αž‡αžΆ Static Pod αžŠαŸ‚αž›αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αžŠαŸ„αž™αž•αŸ’αž‘αžΆαž›αŸ‹αŸ” αžŠαŸ„αž™ Kubelet αŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡ αž™αžΎαž„αž˜αžΆαž“αžαž˜αŸ’αžšαžΌαžœαž€αžΆαžšαžŠαžΌαž…αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž€αŸ†αžŽαžαŸ‹αž–αŸαž›αžœαŸαž›αžΆ kube αžαŸ’αž˜αžΈαŸ–

  1. αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž“αŸαŸ‡αžαŸ’αžšαžΌαžœαžαŸ‚αžŠαžΆαž€αŸ‹αž±αŸ’αž™αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž‡αžΆ Static Pod αž›αžΎαž’αŸ’αž“αž€αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž…αž„αŸ’αž€αŸ„αž˜αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αŸ”
  2. αž€αžΆαžšαž’αžαŸ‹αž±αž“αž…αŸ†αž–αŸ„αŸ‡αž€αŸ†αž αž»αžŸαžαŸ’αžšαžΌαžœαžαŸ‚αž•αŸ’αžαž›αŸ‹αž‡αžΌαž“αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαžŠαŸ‚αž›αž•αžαžŸαž€αž˜αŸ’αž˜αž‡αžΆαž˜αž½αž™αž§αž”αž€αžšαžŽαŸαž€αŸ†αžŽαžαŸ‹αž–αŸαž›αžœαŸαž›αžΆ kube αž˜αž·αž“αž’αžΆαž…αž”αŸ’αžšαžΎαž”αžΆαž“
  3. αž’αžΆαž‘αž·αž—αžΆαž–αž…αž˜αŸ’αž”αž„αž“αŸ…αž–αŸαž›αž’αŸ’αžœαžΎαž•αŸ‚αž“αž€αžΆαžšαž‚αž½αžšαžαŸ‚αž‡αžΆαž…αŸ†αž“αž½αž“αž’αž“αž’αžΆαž“αžŠαŸ‚αž›αž˜αžΆαž“αž“αŸ…αž›αžΎαžαŸ’αž“αžΆαŸ†αž„ (LeastRequestedPriority)

αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αž

αžœαžΆαž‚αž½αžšαž±αŸ’αž™αž€αžαŸ‹αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αž—αŸ’αž›αžΆαž˜αŸ—αžαžΆαž™αžΎαž„αž“αžΉαž„αž’αž“αž»αžœαžαŸ’αžαž€αžΆαžšαž„αžΆαžšαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„ Kubernetes v1.14.7 αž–αžΈαž–αŸ’αžšαŸ„αŸ‡ αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž€αŸ†αžŽαŸ‚αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαž“αŸ…αž€αŸ’αž“αž»αž„αž‚αž˜αŸ’αžšαŸ„αž„αŸ” αž…αžΌαžšαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžŠαŸ„αž™αž€αžΆαžšαžŸαžšαžŸαŸαžš manifesto αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ kube-scheduler αžαŸ’αž˜αžΈαžšαž”αžŸαŸ‹αž™αžΎαž„αŸ” αž…αžΌαžšαž™αž€αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜ manifest (/etc/kubernetes/manifests/kube-scheduler.yaml) αž‡αžΆαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“ αž αžΎαž™αž“αžΆαŸ†αžœαžΆαž‘αŸ…αž‡αžΆαž‘αž˜αŸ’αžšαž„αŸ‹αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ–

kind: Pod
metadata:
  labels:
    component: scheduler
    tier: control-plane
  name: kube-scheduler-cron
  namespace: kube-system
spec:
      containers:
      - command:
        - /usr/local/bin/kube-scheduler
        - --address=0.0.0.0
        - --port=10151
        - --secure-port=10159
        - --config=/etc/kubernetes/scheduler-custom.conf
        - --authentication-kubeconfig=/etc/kubernetes/scheduler.conf
        - --authorization-kubeconfig=/etc/kubernetes/scheduler.conf
        - --v=2
        image: gcr.io/google-containers/kube-scheduler:v1.14.7
        imagePullPolicy: IfNotPresent
        livenessProbe:
          failureThreshold: 8
          httpGet:
            host: 127.0.0.1
            path: /healthz
            port: 10151
            scheme: HTTP
          initialDelaySeconds: 15
          timeoutSeconds: 15
        name: kube-scheduler-cron-container
        resources:
          requests:
            cpu: '0.1'
        volumeMounts:
        - mountPath: /etc/kubernetes/scheduler.conf
          name: kube-config
          readOnly: true
        - mountPath: /etc/localtime
          name: localtime
          readOnly: true
        - mountPath: /etc/kubernetes/scheduler-custom.conf
          name: scheduler-config
          readOnly: true
        - mountPath: /etc/kubernetes/scheduler-custom-policy-config.json
          name: policy-config
          readOnly: true
      hostNetwork: true
      priorityClassName: system-cluster-critical
      volumes:
      - hostPath:
          path: /etc/kubernetes/scheduler.conf
          type: FileOrCreate
        name: kube-config
      - hostPath:
          path: /etc/localtime
        name: localtime
      - hostPath:
          path: /etc/kubernetes/scheduler-custom.conf
          type: FileOrCreate
        name: scheduler-config
      - hostPath:
          path: /etc/kubernetes/scheduler-custom-policy-config.json
          type: FileOrCreate
        name: policy-config

αžŸαž„αŸ’αžαŸαž”αž’αŸ†αž–αžΈαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžŸαŸ†αžαžΆαž“αŸ‹αŸ—αŸ–

  1. αž”αžΆαž“αž”αŸ’αžαžΌαžšαžˆαŸ’αž˜αŸ„αŸ‡αž•αž αž“αž·αž„αž€αž»αž„αžαžΊαž“αŸαžšαž‘αŸ…αž‡αžΆ kube-scheduler-cron
  2. αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž…αŸ’αžšαž€ 10151 αž“αž·αž„ 10159 αž‡αžΆαž‡αž˜αŸ’αžšαžΎαžŸαžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹ hostNetwork: true αž αžΎαž™β€‹αž™αžΎαž„β€‹αž˜αž·αž“β€‹αž’αžΆαž…β€‹αž”αŸ’αžšαžΎβ€‹αž…αŸ’αžšαž€β€‹αžŠαžΌαž…αž‚αŸ’αž“αžΆβ€‹αž“αžΉαž„β€‹ default kube-scheduler (10251 αž“αž·αž„ 10259)
  3. αžŠαŸ„αž™αž”αŸ’αžšαžΎαž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžš --config αž™αžΎαž„αž”αžΆαž“αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž―αž€αžŸαžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžŠαŸ‚αž›αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž‚αž½αžšαžαŸ‚αžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜
  4. αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αž―αž€αžŸαžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ (scheduler-custom.conf) αž“αž·αž„αž―αž€αžŸαžΆαžšαž‚αŸ„αž›αž€αžΆαžšαžŽαŸαž€αŸ†αžŽαžαŸ‹αž–αŸαž› (scheduler-custom-policy-config.json) αž–αžΈαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“

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

kubectl edit clusterrole system:kube-scheduler

...
   resourceNames:
    - kube-scheduler
    - kube-scheduler-cron
...

αž₯αž‘αžΌαžœαž“αŸαŸ‡αžŸαžΌαž˜αž“αž·αž™αžΆαž™αž’αŸ†αž–αžΈαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž‚αž½αžšαž˜αžΆαž“αž“αŸ…αž€αŸ’αž“αž»αž„αž―αž€αžŸαžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ αž“αž·αž„αž―αž€αžŸαžΆαžšαž‚αŸ„αž›αž€αžΆαžšαžŽαŸαž€αŸ†αžŽαžαŸ‹αž–αŸαž›αŸ–

  • αž―αž€αžŸαžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ (scheduler-custom.conf)
    αžŠαžΎαž˜αŸ’αž”αžΈαž‘αž‘αž½αž›αž”αžΆαž“αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ kube-scheduler αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜ αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαžαŸ‚αž”αŸ’αžšαžΎαž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžš --write-config-to αž–αžΈ αž―αž€αžŸαžΆαžš. αž™αžΎαž„αž“αžΉαž„αžŠαžΆαž€αŸ‹αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž›αž‘αŸ’αž’αž•αž›αž“αŸ…αž€αŸ’αž“αž»αž„αž―αž€αžŸαžΆαžš /etc/kubernetes/scheduler-custom.conf αž αžΎαž™αž€αžΆαžαŸ‹αž”αž“αŸ’αžαž™αžœαžΆαž‘αŸ…αž‡αžΆαž‘αž˜αŸ’αžšαž„αŸ‹αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ–

apiVersion: kubescheduler.config.k8s.io/v1alpha1
kind: KubeSchedulerConfiguration
schedulerName: kube-scheduler-cron
bindTimeoutSeconds: 600
clientConnection:
  acceptContentTypes: ""
  burst: 100
  contentType: application/vnd.kubernetes.protobuf
  kubeconfig: /etc/kubernetes/scheduler.conf
  qps: 50
disablePreemption: false
enableContentionProfiling: false
enableProfiling: false
failureDomains: kubernetes.io/hostname,failure-domain.beta.kubernetes.io/zone,failure-domain.beta.kubernetes.io/region
hardPodAffinitySymmetricWeight: 1
healthzBindAddress: 0.0.0.0:10151
leaderElection:
  leaderElect: true
  leaseDuration: 15s
  lockObjectName: kube-scheduler-cron
  lockObjectNamespace: kube-system
  renewDeadline: 10s
  resourceLock: endpoints
  retryPeriod: 2s
metricsBindAddress: 0.0.0.0:10151
percentageOfNodesToScore: 0
algorithmSource:
   policy:
     file:
       path: "/etc/kubernetes/scheduler-custom-policy-config.json"

αžŸαž„αŸ’αžαŸαž”αž’αŸ†αž–αžΈαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžŸαŸ†αžαžΆαž“αŸ‹αŸ—αŸ–

  1. αž™αžΎαž„αž€αŸ†αžŽαžαŸ‹αžˆαŸ’αž˜αŸ„αŸ‡αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž€αŸ†αžŽαžαŸ‹αž–αŸαž›αž‘αŸ…αž‡αžΆαžˆαŸ’αž˜αŸ„αŸ‡αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜ kube-scheduler-cron αžšαž”αžŸαŸ‹αž™αžΎαž„αŸ”
  2. αž“αŸ…αž€αŸ’αž“αž»αž„αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžš lockObjectName αž’αŸ’αž“αž€αž€αŸαžαŸ’αžšαžΌαžœαž€αŸ†αžŽαžαŸ‹αžˆαŸ’αž˜αŸ„αŸ‡αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αžšαž”αžŸαŸ‹αž™αžΎαž„ αž αžΎαž™αžαŸ’αžšαžΌαžœαž”αŸ’αžšαžΆαž€αžŠαžαžΆαž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαž“αŸ„αŸ‡αŸ” leaderElect αž€αŸ†αžŽαžαŸ‹αž‘αŸ…αž–αž·αž (αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž˜αžΆαž“αžαŸ’αž“αžΆαŸ†αž„αž˜αŸαžαŸ‚αž˜αž½αž™ αž’αŸ’αž“αž€αž’αžΆαž…αž€αŸ†αžŽαžαŸ‹αžœαžΆαž‘αŸ…αž‡αžΆαž˜αž·αž“αž–αž·αž)αŸ”
  3. αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž•αŸ’αž›αžΌαžœαž‘αŸ…αž€αžΆαž“αŸ‹αž―αž€αžŸαžΆαžšαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž–αž·αž–αžŽαŸŒαž“αžΆαž’αŸ†αž–αžΈαž‚αŸ„αž›αž€αžΆαžšαžŽαŸαž€αŸ†αžŽαžαŸ‹αž–αŸαž›αž€αŸ’αž“αž»αž„αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžš algorithmSource.

αžœαžΆαž˜αžΆαž“αžαž˜αŸ’αž›αŸƒαž€αŸ’αž“αž»αž„αž€αžΆαžšαž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αž±αŸ’αž™αž€αžΆαž“αŸ‹αžαŸ‚αžŠαž·αžαžŠαž›αŸ‹αž“αžΌαžœαž…αŸ†αžŽαž»αž…αž‘αžΈαž–αžΈαžš αžŠαŸ‚αž›αž™αžΎαž„αž€αŸ‚αžŸαž˜αŸ’αžšαž½αž›αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŸαŸ„ leaderElection. αžŠαžΎαž˜αŸ’αž”αžΈαž’αžΆαž“αžΆαž”αžΆαž“αž“αžΌαžœαž€αžΆαžšαž’αžαŸ‹αž±αž“αž…αŸ†αž–αŸ„αŸ‡αž€αŸ†αž αž»αžŸ αž™αžΎαž„αž”αžΆαž“αž”αžΎαž€ (leaderElect(resourceLock) αžŠαŸ‚αž›αž˜αžΆαž“αžˆαŸ’αž˜αŸ„αŸ‡αžαžΆ kube-scheduler-cron (lockObjectName) αž“αŸ…αž€αŸ’αž“αž»αž„αž›αŸ†αž αžˆαŸ’αž˜αŸ„αŸ‡αž”αŸ’αžšαž–αŸαž“αŸ’αž’ kube (lockObjectNamespace) αžšαž”αŸ€αž”αžŠαŸ‚αž› Kubernetes αž’αžΆαž“αžΆαž—αžΆαž–αž’αžΆαž…αžšαž€αž”αžΆαž“αžαŸ’αž–αžŸαŸ‹αž“αŸƒαžŸαž˜αžΆαžŸαž’αžΆαžαž»αžŸαŸ†αžαžΆαž“αŸ‹αŸ— (αžšαž½αž˜αž‘αžΆαŸ†αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž€αŸ†αžŽαžαŸ‹αž–αŸαž› kube) αž’αžΆαž…αžšαž€αž”αžΆαž“αž“αŸ…αž€αŸ’αž“αž»αž„ αž’αžαŸ’αžαž”αž‘.

  • αž―αž€αžŸαžΆαžšαž‚αŸ„αž›αž“αž™αŸ„αž”αžΆαž™αž€αŸ†αžŽαžαŸ‹αž–αŸαž› (scheduler-custom-policy-config.json)
    αžŠαžΌαž…αžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžŸαžšαžŸαŸαžšαž˜αž»αž“αž“αŸαŸ‡ αž™αžΎαž„αž’αžΆαž…αžŸαŸ’αžœαŸ‚αž„αž™αž›αŸ‹αžαžΆαžαžΎαž‚αŸ„αž›αž€αžΆαžšαžŽαŸαž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αžŽαžΆαž˜αž½αž™αžŠαŸ‚αž›αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž€αŸ†αžŽαžαŸ‹αž–αŸαž› kube-scheduler αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŠαŸ„αž™αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αžœαž·αž—αžΆαž‚αž€αžΌαžŠαžšαž”αžŸαŸ‹αžœαžΆαž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ” αž“αŸ„αŸ‡αž‚αžΊαž™αžΎαž„αž˜αž·αž“αž’αžΆαž…αž‘αž‘αž½αž›αž”αžΆαž“αž―αž€αžŸαžΆαžšαžŠαŸ‚αž›αž˜αžΆαž“αž‚αŸ„αž›αž€αžΆαžšαžŽαŸαž€αŸ†αžŽαžαŸ‹αž–αŸαž›αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž€αŸ†αžŽαžαŸ‹αž–αŸαž›αžœαŸαž›αžΆ kube-scheduler αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜αžαžΆαž˜αžšαž”αŸ€αž”αžŠαžΌαž…αž‚αŸ’αž“αžΆαž“αžΉαž„αž―αž€αžŸαžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž“αŸ„αŸ‡αž‘αŸαŸ” αž…αžΌαžšαž–αžŽαŸŒαž“αžΆαž’αŸ†αž–αžΈαž‚αŸ„αž›αž€αžΆαžšαžŽαŸαž€αŸ†αžŽαžαŸ‹αž–αŸαž›αžŠαŸ‚αž›αž™αžΎαž„αž…αžΆαž”αŸ‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸαž“αŸ…αž€αŸ’αž“αž»αž„αž―αž€αžŸαžΆαžš /etc/kubernetes/scheduler-custom-policy-config.json αžŠαžΌαž…αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ–

{
  "kind": "Policy",
  "apiVersion": "v1",
  "predicates": [
    {
      "name": "GeneralPredicates"
    }
  ],
  "priorities": [
    {
      "name": "ServiceSpreadingPriority",
      "weight": 1
    },
    {
      "name": "EqualPriority",
      "weight": 1
    },
    {
      "name": "LeastRequestedPriority",
      "weight": 1
    },
    {
      "name": "NodePreferAvoidPodsPriority",
      "weight": 10000
    },
    {
      "name": "NodeAffinityPriority",
      "weight": 1
    }
  ],
  "hardPodAffinitySymmetricWeight" : 10,
  "alwaysCheckAllPredicates" : false
}

αžŠαžΌαž…αŸ’αž“αŸαŸ‡ kube-scheduler αž‡αžΆαžŠαŸ†αž”αžΌαž„αž…αž„αž€αŸ’αžšαž„αž”αž‰αŸ’αž‡αžΈαžαŸ’αž“αžΆαŸ†αž„αžŠαŸ‚αž›αž•αžαž’αžΆαž…αž€αŸ†αžŽαžαŸ‹αž–αŸαž›αž”αžΆαž“αžŠαŸ„αž™αž™αŸ„αž„αžαžΆαž˜αž‚αŸ„αž›αž€αžΆαžšαžŽαŸ GeneralPredicates (αžŠαŸ‚αž›αžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αžŸαŸ†αžŽαž»αŸ†αž“αŸƒ PodFitsResources, PodFitsHostPorts, HostName, αž“αž·αž„ MatchNodeSelector policy)αŸ” αž αžΎαž™αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αžαŸ’αž“αžΆαŸ†αž„αž“αžΈαž˜αž½αž™αŸ—αžαŸ’αžšαžΌαžœαž”αžΆαž“αžœαžΆαž™αžαž˜αŸ’αž›αŸƒαžŠαŸ„αž™αž’αž“αž»αž›αŸ„αž˜αžαžΆαž˜αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž‚αŸ„αž›αž“αž™αŸ„αž”αžΆαž™αž“αŸ…αž€αŸ’αž“αž»αž„αž’αžΆαžšαŸαž’αžΆαž‘αž·αž—αžΆαž–αŸ” αžŠαžΎαž˜αŸ’αž”αžΈαž”αŸ†αž–αŸαž‰αž›αž€αŸ’αžαžαžŽαŸ’αžŒαž“αŸƒαž€αž·αž…αŸ’αž…αž€αžΆαžšαžšαž”αžŸαŸ‹αž™αžΎαž„ αž™αžΎαž„αž”αžΆαž“αž–αž·αž…αžΆαžšαžŽαžΆαžαžΆ αžŸαŸ†αžŽαž»αŸ†αž“αŸƒαž‚αŸ„αž›αž“αž™αŸ„αž”αžΆαž™αž”αŸ‚αž”αž“αŸαŸ‡ αž‚αžΊαž‡αžΆαžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŠαŸαž”αŸ’αžšαžŸαžΎαžšαž”αŸ†αž•αž»αžαŸ” αžαŸ’αž‰αž»αŸ†αžŸαžΌαž˜αžšαŸ†αž›αžΉαž€αž’αŸ’αž“αž€αžαžΆ αžŸαŸ†αžŽαž»αŸ†αž“αŸƒαž‚αŸ„αž›αž€αžΆαžšαžŽαŸαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž–αž·αž–αžŽαŸŒαž“αžΆαž›αž˜αŸ’αž’αž·αžαžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸαž˜αžΆαž“αž“αŸ…αž€αŸ’αž“αž»αž„ αž―αž€αžŸαžΆαžš. αžŠαžΎαž˜αŸ’αž”αžΈβ€‹αžŸαž˜αŸ’αžšαŸαž…β€‹αž€αž·αž…αŸ’αž…αž€αžΆαžšβ€‹αžšαž”αžŸαŸ‹β€‹αž’αŸ’αž“αž€ αž’αŸ’αž“αž€β€‹αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚β€‹αž’αžΆαž…β€‹αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšβ€‹αžŸαŸ†αžŽαž»αŸ†β€‹αž‚αŸ„αž›αž€αžΆαžšαžŽαŸβ€‹αžŠαŸ‚αž›β€‹αž”αžΆαž“β€‹αž”αŸ’αžšαžΎ αž“αž·αž„β€‹αž€αŸ†αžŽαžαŸ‹β€‹αž‘αž˜αŸ’αž„αž“αŸ‹β€‹αžŸαž˜αžŸαŸ’αžšαž”β€‹αž‘αŸ…β€‹αž–αž½αž€αž‚αŸαŸ”

αž…αžΌαžšαž αŸ… manifest αž“αŸƒ kube-scheduler αžαŸ’αž˜αžΈαžŠαŸ‚αž›αž™αžΎαž„αž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž“αŸ…αžŠαžΎαž˜αž‡αŸ†αž–αžΌαž€ kube-scheduler-custom.yaml αž αžΎαž™αžŠαžΆαž€αŸ‹αžœαžΆαž€αŸ’αž“αž»αž„αž•αŸ’αž›αžΌαžœαžαžΆαž„αž€αŸ’αžšαŸ„αž˜ /etc/kubernetes/manifests αž›αžΎαžαŸ’αž“αžΆαŸ†αž„αž˜αŸαž”αžΈαŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αžœαžΈαŸ—αž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαž”αžΆαž“αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœ Kubelet αž“αžΉαž„αž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž•αžαž“αŸ…αž›αžΎαžαŸ’αž“αžΆαŸ†αž„αž“αžΈαž˜αž½αž™αŸ— αž αžΎαž™αž“αŸ…αž€αŸ’αž“αž»αž„αž€αŸ†αžŽαžαŸ‹αž αŸαžαž»αž“αŸƒαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž€αŸ†αžŽαžαŸ‹αž–αŸαž›αžœαŸαž›αžΆ kube αžαŸ’αž˜αžΈαžšαž”αžŸαŸ‹αž™αžΎαž„ αž™αžΎαž„αž“αžΉαž„αžƒαžΎαž‰αž–αŸαžαŸŒαž˜αžΆαž“αžŠαŸ‚αž›αž―αž€αžŸαžΆαžšαž‚αŸ„αž›αž€αžΆαžšαžŽαŸαžšαž”αžŸαŸ‹αž™αžΎαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαžŠαŸ„αž™αž‡αŸ„αž‚αž‡αŸαž™αŸ–

Creating scheduler from configuration: {{ } [{GeneralPredicates <nil>}] [{ServiceSpreadingPriority 1 <nil>} {EqualPriority 1 <nil>} {LeastRequestedPriority 1 <nil>} {NodePreferAvoidPodsPriority 10000 <nil>} {NodeAffinityPriority 1 <nil>}] [] 10 false}
Registering predicate: GeneralPredicates
Predicate type GeneralPredicates already registered, reusing.
Registering priority: ServiceSpreadingPriority
Priority type ServiceSpreadingPriority already registered, reusing.
Registering priority: EqualPriority
Priority type EqualPriority already registered, reusing.
Registering priority: LeastRequestedPriority
Priority type LeastRequestedPriority already registered, reusing.
Registering priority: NodePreferAvoidPodsPriority
Priority type NodePreferAvoidPodsPriority already registered, reusing.
Registering priority: NodeAffinityPriority
Priority type NodeAffinityPriority already registered, reusing.
Creating scheduler with fit predicates 'map[GeneralPredicates:{}]' and priority functions 'map[EqualPriority:{} LeastRequestedPriority:{} NodeAffinityPriority:{} NodePreferAvoidPodsPriority:{} ServiceSpreadingPriority:{}]'

αž₯αž‘αžΌαžœαž“αŸαŸ‡αž’αŸ’αžœαžΈαžŠαŸ‚αž›αž“αŸ…αžŸαŸαžŸαžŸαž›αŸ‹αž‚αžΊαžŠαžΎαž˜αŸ’αž”αžΈαž…αž„αŸ’αž’αž»αž›αž”αž„αŸ’αž αžΆαž‰αž“αŸ…αž€αŸ’αž“αž»αž„αž›αž€αŸ’αžαžŽαŸˆαž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αž“αŸƒ CronJob αžšαž”αžŸαŸ‹αž™αžΎαž„αžαžΆαžšαžΆαž›αŸ‹αžŸαŸ†αžŽαžΎαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž–αŸαž› pods αžšαž”αžŸαŸ‹αžœαžΆαž‚αž½αžšαžαŸ‚αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŠαŸ„αž™αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ kube-scheduler αžαŸ’αž˜αžΈαžšαž”αžŸαŸ‹αž™αžΎαž„:

...
 jobTemplate:
    spec:
      template:
        spec:
          schedulerName: kube-scheduler-cron
...

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

αž“αŸ…αž‘αžΈαž”αŸ†αž•αž»αž αž™αžΎαž„αž‘αž‘αž½αž›αž”αžΆαž“αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž€αŸ†αžŽαžαŸ‹αž–αŸαž›αžœαŸαž›αžΆ kube αž”αž“αŸ’αžαŸ‚αž˜αž‡αžΆαž˜αž½αž™αž“αžΉαž„αžŸαŸ†αžŽαž»αŸ†αž‚αŸ„αž›αž€αžΆαžšαžŽαŸαž€αŸ†αžŽαžαŸ‹αž–αŸαž›αžœαŸαž›αžΆαžαŸ‚αž˜αž½αž™αž‚αžαŸ‹ αžŠαŸ‚αž›αž€αžΆαžšαž„αžΆαžšαž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αžŠαŸ„αž™αž•αŸ’αž‘αžΆαž›αŸ‹αžŠαŸ„αž™ kubelet αŸ” αž›αžΎαžŸαž–αžΈαž“αŸαŸ‡ αž™αžΎαž„αž”αžΆαž“αžšαŸ€αž”αž…αŸ†αž€αžΆαžšαž”αŸ„αŸ‡αž†αŸ’αž“αŸ„αžαž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαž˜αŸαžŠαžΉαž€αž“αžΆαŸ†αžαŸ’αž˜αžΈαžšαžœαžΆαž„αž’αŸ’αž“αž€αžšαŸ€αž”αž…αŸ†αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ kube-scheduler αžšαž”αžŸαŸ‹αž™αžΎαž„ αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαžŠαŸ‚αž›αž˜αŸαžŠαžΉαž€αž“αžΆαŸ†αž…αžΆαžŸαŸ‹αž˜αž·αž“αž’αžΆαž…αž”αŸ’αžšαžΎαž”αžΆαž“αžŠαŸ„αž™αž αŸαžαž»αž•αž›αž˜αž½αž™αž…αŸ†αž“αž½αž“αŸ”

αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ αž“αž·αž„αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž’αž˜αŸ’αž˜αžαžΆαž”αž“αŸ’αžαžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αž–αŸαž›αžαžΆαž˜αžšαž™αŸˆαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ kube-scheduler αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜ αž αžΎαž™αž€αž·αž…αŸ’αž…αž€αžΆαžš cron αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αž‘αŸαžšαž‘αžΆαŸ†αž„αžŸαŸ’αžšαž»αž„αž‘αŸ…αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αž˜αžΈαŸ” αž”αž“αŸ’αž‘αž»αž€αžŠαŸ‚αž›αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αžŠαŸ„αž™αž€αž·αž…αŸ’αž…αž€αžΆαžš cron αž₯αž‘αžΌαžœαž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αŸ‚αž€αž…αžΆαž™αžŸαŸ’αž˜αžΎαŸ—αž‚αŸ’αž“αžΆαž“αŸ…αž‘αžΌαž‘αžΆαŸ†αž„αžαŸ’αž“αžΆαŸ†αž„αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αŸ” αžŠαŸ„αž™αž–αž·αž…αžΆαžšαžŽαžΆαžαžΆαž€αž·αž…αŸ’αž…αž€αžΆαžš cron αž—αžΆαž‚αž…αŸ’αžšαžΎαž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž“αŸ…αž›αžΎαžαŸ’αž“αžΆαŸ†αž„αžŠαžΌαž…αž‚αŸ’αž“αžΆαž‘αŸ…αž“αžΉαž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŸαŸ†αžαžΆαž“αŸ‹αž“αŸƒαž‚αž˜αŸ’αžšαŸ„αž„ αž“αŸαŸ‡αž”αžΆαž“αž€αžΆαžαŸ‹αž”αž“αŸ’αžαž™αž αžΆαž“αž·αž—αŸαž™αž“αŸƒαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž‘αžΈ pods αž™αŸ‰αžΆαž„αžαŸ’αž›αžΆαŸ†αž„αžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚αž€αž„αŸ’αžœαŸ‡αž’αž“αž’αžΆαž“αŸ” αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαžŽαŸ‚αž“αžΆαŸ†αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž€αŸ†αžŽαžαŸ‹αž–αŸαž›αžœαŸαž›αžΆ kube αž”αž“αŸ’αžαŸ‚αž˜ αž”αž‰αŸ’αž αžΆαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž–αŸαž›αž˜αž·αž“αžŸαŸ’αž˜αžΎαž‚αŸ’αž“αžΆαž“αŸƒαž€αž·αž…αŸ’αž…αž€αžΆαžš cron αž›αŸ‚αž„αž€αžΎαžαž‘αžΎαž„αž‘αŸ€αžαž αžΎαž™αŸ”

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

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

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