αž”αž‘αž–αž·αžŸαŸ„αž’αž“αŸαžšαž”αžŸαŸ‹αž™αžΎαž„αž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž‰αŸ’αž‡αžΆ CSI αž“αŸ…αž€αŸ’αž“αž»αž„ Kubernetes αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Yandex.Cloud

αž”αž‘αž–αž·αžŸαŸ„αž’αž“αŸαžšαž”αžŸαŸ‹αž™αžΎαž„αž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž‰αŸ’αž‡αžΆ CSI αž“αŸ…αž€αŸ’αž“αž»αž„ Kubernetes αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Yandex.Cloud

αž™αžΎαž„αž˜αžΆαž“αžŸαŸαž…αž€αŸ’αžαžΈαžŸαŸ„αž˜αž“αžŸαŸ’αžŸαžšαžΈαž€αžšαžΆαž™αž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αŸ’αžšαž€αžΆαžŸαžαžΆ Flan αž€αŸ†αž–αž»αž„αž–αž„αŸ’αžšαžΈαž€αž€αžΆαžšαžšαž½αž˜αž…αŸ†αžŽαŸ‚αž€αžšαž”αžŸαŸ‹αžαŸ’αž›αž½αž“αž…αŸ†αž–αŸ„αŸ‡αž§αž”αž€αžšαžŽαŸαž”αŸ’αžšαž—αž–αž”αžΎαž€αž…αŸ†αž αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Kubernetes αžŠαŸ„αž™αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™ αž€αŸ†αžŽαŸ‚αž’αžΆαž›αŸ‹αž αŸ’αžœαžΆαž“αŸƒαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž‰αŸ’αž‡αžΆ CSI (αž…αŸ†αžŽαž»αž…αž”αŸ’αžšαž‘αžΆαž€αŸ‹αž•αŸ’αž‘αž»αž€αž€αž»αž„αžαžΊαž“αŸαžš) αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Yandex.Cloud αŸ”

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

αžŸαŸαž…αž€αŸ’αžαžΈαžŽαŸ‚αž“αžΆαŸ†

αž αŸαžαž»αž’αŸ’αžœαžΈαž”αžΆαž“αž‡αžΆαž“αŸαŸ‡?

αž“αŸ…αž€αŸ’αž“αž»αž„αž€αŸ’αžšαž»αž˜αž αŸŠαž»αž“αžšαž”αžŸαŸ‹αž™αžΎαž„ αž…αžΆαž”αŸ‹αžαžΆαŸ†αž„αž–αžΈαž€αžΆαžšαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž“αŸƒαž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ Kubernetes αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž•αž›αž·αž (αž§αž‘αžΆαž αžšαžŽαŸαž‡αžΆαž…αŸ’αžšαžΎαž“αž†αŸ’αž“αžΆαŸ†αž˜αž€αž“αŸαŸ‡) αž™αžΎαž„αž”αžΆαž“αž“αž·αž„αž€αŸ†αž–αž»αž„αž”αž„αŸ’αž€αžΎαžαž§αž”αž€αžšαžŽαŸαž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αžšαž”αžŸαŸ‹αž™αžΎαž„ (deckhouse) αžŠαŸ‚αž›αžαžΆαž˜αžœαž·αž’αžΈαž“αŸαŸ‡ αž™αžΎαž„αž€αŸαž˜αžΆαž“αž‚αž˜αŸ’αžšαŸ„αž„αž“αžΉαž„αž’αŸ’αžœαžΎαž±αŸ’αž™αž˜αžΆαž“αž€αŸ’αž“αž»αž„αž–αŸαž›αž†αžΆαž”αŸ‹αŸ—αž“αŸαŸ‡αž‡αžΆαž‚αž˜αŸ’αžšαŸ„αž„ Open Source . αžŠαŸ„αž™αž˜αžΆαž“αž‡αŸ†αž“αž½αž™αžšαž”αžŸαŸ‹αžœαžΆ αž™αžΎαž„αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ αž“αž·αž„αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž€αŸ’αžšαž»αž˜αžšαž”αžŸαŸ‹αž™αžΎαž„αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžŠαŸ„αž™αžŸαŸ’αž˜αžΎαž—αžΆαž–αž‚αŸ’αž“αžΆ αž αžΎαž™αž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž˜αžΆαž“αž…αŸ’αžšαžΎαž“αž‡αžΆαž„ 100 αž“αŸƒαž–αž½αž€αžœαžΆαžšαž½αž…αž αžΎαž™ αž›αžΎαž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž•αŸ’αž“αŸ‚αž€αžšαžΉαž„αž‡αžΆαž…αŸ’αžšαžΎαž“ αž“αž·αž„αž“αŸ…αž€αŸ’αž“αž»αž„αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž–αž–αž€αžŠαŸ‚αž›αž˜αžΆαž“αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αŸ”

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

NBαŸ– αž“αŸαŸ‡αž‡αžΆαž”αž‘αž–αž·αžŸαŸ„αž’αž“αŸαžšαž”αžŸαŸ‹αž™αžΎαž„ αž αžΎαž™αžœαžΆαž–αž·αžαž‡αžΆαž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αžŽαžΆαžŸαŸ‹αŸ” αž™αžΎαž„αž˜αž·αž“αž˜αžΆαž“αžœαž·αž’αžΈαžŠαŸ‚αž›αžŽαŸ‚αž“αžΆαŸ†αžαžΆαž’αŸ’αž“αž€αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αž“αžΆαž‚αž½αžšαžαŸ‚αžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™ Kubernetes clusters αžŠαŸ„αž™αžαŸ’αž›αž½αž“αž―αž„αž‡αžΆαž‡αžΆαž„αž”αŸ’αžšαžΎαžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŠαŸ‚αž›αžαŸ’αžšαŸ€αž˜αžšαž½αž…αž‡αžΆαžŸαŸ’αžšαŸαž…αž“αŸ„αŸ‡αž‘αŸαŸ” αžŠαŸ„αž™αžœαž·αž’αžΈαž“αŸαŸ‡ αž™αžΎαž„αž˜αž·αž“αž˜αžΆαž“αž”αž‘αž–αž·αžŸαŸ„αž’αž“αŸαž–αž·αžαž”αŸ’αžšαžΆαž€αžŠαž€αŸ’αž“αž»αž„αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžš Kubernetes αž–αžΈ Yandex αž αžΎαž™αž™αžΎαž„αž“αžΉαž„αž˜αž·αž“αž•αŸ’αžαž›αŸ‹αž€αžΆαžšαžœαžΆαž™αžαž˜αŸ’αž›αŸƒαžŽαžΆαž˜αž½αž™αž“αŸƒαžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž“αŸαŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„αž’αžαŸ’αžαž”αž‘αž“αŸαŸ‡αž‘αŸαŸ”

αžαžΎαžœαžΆαž‡αžΆαž’αŸ’αžœαžΈ αž αžΎαž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αžŽαžΆ?

αžŠαžΌαž…αŸ’αž“αŸαŸ‡ αž™αžΎαž„αž”αžΆαž“αž“αž·αž™αžΆαž™αžšαž½αž…αž˜αž€αž αžΎαž™αž’αŸ†αž–αžΈαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž‘αŸ†αž“αžΎαž”αž€αŸ’αž“αž»αž„αž€αžΆαžšαž•αŸ’αž‘αž»αž€αž“αŸ…αž€αŸ’αž“αž»αž„ KubernetesαŸ– តើ CSI αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž™αŸ‰αžΆαž„αžŠαžΌαž…αž˜αŸ’αžαŸαž…? ΠΈ αžšαž”αŸ€αž”αžŠαŸ‚αž›αžŸαž αž‚αž˜αž“αŸαž”αžΆαž“αž˜αž€ αž‘αŸ…αž“αžΉαž„αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž“αŸαŸ‡αŸ”

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

αž™αžΎαž„αž™αž€αž‡αžΆαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸ αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž‰αŸ’αž‡αžΆ CSI αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ DigitalOcean cloud αž“αž·αž„αž‚αŸ†αž“αž·αžαž–αžΈαžšαž”αžΈαž–αžΈ αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž‰αŸ’αž‡αžΆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹ GCPαž…αžΆαž”αŸ‹αžαžΆαŸ†αž„αž–αžΈαž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜αž‡αžΆαž˜αž½αž™ API αž“αŸƒαž–αž–αž€αž‘αžΆαŸ†αž„αž“αŸαŸ‡ (Google αž“αž·αž„ Yandex) αž˜αžΆαž“αž—αžΆαž–αžŸαŸ’αžšαžŠαŸ€αž„αž‚αŸ’αž“αžΆαž˜αž½αž™αž…αŸ†αž“αž½αž“αŸ” αž‡αžΆαž–αž·αžŸαŸαžŸ API αž“αž·αž„ αž‡αžΈαž—αžΈαž—αžΈαž“αž·αž„αž“αŸ… Yandex αžαŸ’αžšαž‘αž”αŸ‹αžœαžαŸ’αžαž»αž˜αž½αž™αŸ” Operation αžŠαžΎαž˜αŸ’αž”αžΈαžαžΆαž˜αžŠαžΆαž“αžŸαŸ’αžαžΆαž“αž—αžΆαž–αž“αŸƒαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαžŠαŸ‚αž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž™αžΌαžš (αž§αž‘αžΆαž αžšαžŽαŸ αž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαžαžΆαžŸαžαŸ’αž˜αžΈ)αŸ” αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜αž‡αžΆαž˜αž½αž™ Yandex.Cloud API αžŸαžΌαž˜αž”αŸ’αžšαžΎ Yandex.Cloud Go SDK.

αž›αž‘αŸ’αž’αž•αž›αž“αŸƒαž€αžΆαžšαž„αžΆαžšαžŠαŸ‚αž›αž”αžΆαž“αž’αŸ’αžœαžΎ αž…αŸαž‰αž•αŸ’αžŸαžΆαž™αž“αŸ…αž›αžΎ GitHub αž αžΎαž™αž”αŸ’αžšαž αŸ‚αž›αž‡αžΆαž˜αžΆαž“αž”αŸ’αžšαž™αŸ„αž‡αž“αŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αžŠαŸ‚αž›αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„ Kubernetes αž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸαž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž“αž·αž˜αŸ’αž˜αž·αž Yandex.Cloud (αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž˜αž·αž“αž˜αŸ‚αž“αž‡αžΆαž…αž„αŸ’αž€αŸ„αž˜αžŠαŸ‚αž›αž”αžΆαž“αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αžšαž½αž…αžšαžΆαž›αŸ‹) αž αžΎαž™αž…αž„αŸ‹αž”αŸ’αžšαžΎ (αž”αž‰αŸ’αž‡αžΆαž‘αž·αž‰) αžαžΆαžŸαžαžΆαž˜αžšαž™αŸˆ CSI αŸ”

РСализация

αž›αž€αŸ’αžαžŽαŸˆβ€‹αž–αž·αžŸαŸαžŸ

αž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž’αŸ’αž“αž€αž”αžΎαž€αž”αžšαž‚αžΆαŸ†αž‘αŸ’αžšαž˜αž»αžαž„αžΆαžšαžŠαžΌαž…αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸˆ

  • αž”αž‰αŸ’αž‡αžΆαž‘αž·αž‰αžαžΆαžŸαž“αŸ…αž€αŸ’αž“αž»αž„αžαŸ†αž”αž“αŸ‹αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸƒαž…αž„αŸ’αž€αŸ„αž˜αž™αŸ„αž„αž‘αŸ…αžαžΆαž˜ topology αž“αŸƒ nodes αž€αŸ’αž“αž»αž„ cluster;
  • αž€αžΆαžšαžŠαž€αžŒαžΈαžŸαžŠαŸ‚αž›αž”αžΆαž“αž”αž‰αŸ’αž‡αžΆαž–αžΈαž˜αž»αž“αž…αŸαž‰;
  • αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž‘αŸ†αž αŸ†αž€αŸ’αžšαŸ…αž”αžŽαŸ’αžαžΆαž‰αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžαžΆαžŸ (Yandex.Cloud αž˜αž·αž“αž‚αžΆαŸ†αž‘αŸ’αžš αž”αž„αŸ’αž€αžΎαž“αžαžΆαžŸαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž˜αŸ‰αŸ„αž“αž‘αŸ…αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž“αž·αž˜αŸ’αž˜αž·αž) αŸ” αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž–αŸαžαŸŒαž˜αžΆαž“αž’αŸ†αž–αžΈαžšαž”αŸ€αž”αžŠαŸ‚αž›αž’αŸ’αž“αž€αž”αžΎαž€αž”αžšαžαŸ’αžšαžΌαžœαž€αŸ‚αž”αŸ’αžšαŸ‚ αžŠαžΎαž˜αŸ’αž”αžΈαž€αŸ‚αž”αŸ’αžšαŸ‚αž‘αŸ†αž αŸ†αžŠαŸ„αž™αž˜αž·αž“αž˜αžΆαž“αž€αžΆαžšαžˆαžΊαž…αžΆαž”αŸ‹αžαžΆαž˜αžŠαŸ‚αž›αž’αžΆαž…αž’αŸ’αžœαžΎαž‘αŸ…αž”αžΆαž“ αžŸαžΌαž˜αž˜αžΎαž›αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ”

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

αž€αžΆαžšαž›αŸ†αž”αžΆαž€αž…αž˜αŸ’αž”αž„αž“αž·αž„αžœαž·αž’αžΈαžŠαžΎαž˜αŸ’αž”αžΈαž™αž€αžˆαŸ’αž“αŸ‡αžœαžΆαŸ”

αž€αž„αŸ’αžœαŸ‡αžŸαž˜αžαŸ’αžαž—αžΆαž–αž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αž„αŸ’αž€αžΎαž“αžŒαžΈαžŸαž€αŸ’αž“αž»αž„αž–αŸαž›αžœαŸαž›αžΆαž‡αžΆαž€αŸ‹αžŸαŸ’αžαŸ‚αž„αž“αŸ…αž€αŸ’αž“αž»αž„ Yandex.Cloud API αž‚αžΊαž‡αžΆαž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžŠαŸ‚αž›αž’αŸ’αžœαžΎαž±αŸ’αž™αž˜αžΆαž“αž—αžΆαž–αžŸαŸ’αž˜αž»αž‚αžŸαŸ’αž˜αžΆαž‰αžŠαž›αŸ‹αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž‘αŸ†αž αŸ†αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ PV (αž€αž˜αŸ’αžšαž·αžαžŸαŸ†αž‘αŸαž„αž‡αžΆαž”αŸ‹αžšαž αžΌαž): αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž“αŸαŸ‡ αž…αžΆαŸ†αž”αžΆαž…αŸ‹αžαŸ’αžšαžΌαžœαž”αž‰αŸ’αžˆαž”αŸ‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαŸ‚αž›αž”αŸ’αžšαžΎαžαžΆαžŸαŸ” αž αžΎαž™αž“αŸαŸ‡αž’αžΆαž…αž”αžŽαŸ’αžαžΆαž›αž±αŸ’αž™αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžˆαž”αŸ‹αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš

αž“αŸαŸ‡αž”αžΎαž™αŸ„αž„αžαžΆαž˜ αž›αž€αŸ’αžαžŽαŸˆαž”αž…αŸ’αž…αŸαž€αž‘αŸαžŸαžšαž”αžŸαŸ‹ CSIαž”αŸ’αžšαžŸαž·αž“αž”αžΎαž§αž”αž€αžšαžŽαŸαž”αž‰αŸ’αž‡αžΆ CSI αžšαžΆαž™αž€αžΆαžšαžŽαŸαžαžΆαžœαžΆαž’αžΆαž…αž”αŸ’αžαžΌαžšαž‘αŸ†αž αŸ†αžαžΆαžŸαž”αžΆαž“αžαŸ‚ "αž€αŸ’αžšαŸ…αž”αžŽαŸ’αžαžΆαž‰" (VolumeExpansion.OFFLINE) αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸƒαž€αžΆαžšαž”αž„αŸ’αž€αžΎαž“αžŒαžΈαžŸαž‚αž½αžšαžαŸ‚αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŠαžΌαž…αž“αŸαŸ‡αŸ–

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αŸ†αž“αž½αž™αž˜αžΆαž“αžαŸ‚ VolumeExpansion.OFFLINE αžŸαž˜αžαŸ’αžαž—αžΆαž–αž–αž„αŸ’αžšαžΈαž€ αž“αž·αž„αž€αž˜αŸ’αžšαž·αžαžŸαŸ†αž‘αŸαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ„αŸ‡αž–αž»αž˜αŸ’αž–αž•αŸ’αžŸαžΆαž™ αž¬αž˜αžΆαž“αž“αŸ…αž›αžΎαžαŸ’αž“αžΆαŸ†αž„αž“αŸ…αž–αŸαž›αž“αŸ„αŸ‡αŸ” ControllerExpandVolume αžαŸ’αžšαžΌαžœαžαŸ‚αž αŸ…αžαŸ‚αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαŸ–

  • αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αŸ†αž“αž½αž™αž˜αžΆαž“αž§αž”αž€αžšαžŽαŸαž”αž‰αŸ’αž‡αžΆ PUBLISH_UNPUBLISH_VOLUME αžŸαž˜αžαŸ’αžαž—αžΆαž– αž“αž·αž„ ControllerUnpublishVolume αžαŸ’αžšαžΌαžœαž”αžΆαž“αž αŸ…αžŠαŸ„αž™αž‡αŸ„αž‚αž‡αŸαž™αŸ”

αž¬β€‹αž•αŸ’αžŸαŸαž„β€‹αž‘αŸ€αž

  • αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αŸ†αž“αž½αž™αž˜αž·αž“αž˜αžΆαž“αž§αž”αž€αžšαžŽαŸαž”αž‰αŸ’αž‡αžΆαž‘αŸαŸ” PUBLISH_UNPUBLISH_VOLUME αžŸαž˜αžαŸ’αžαž—αžΆαž– αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αŸ†αž“αž½αž™αž˜αžΆαž“αžαŸ’αž“αžΆαŸ†αž„ STAGE_UNSTAGE_VOLUME αžŸαž˜αžαŸ’αžαž—αžΆαž–, αž“αž·αž„ NodeUnstageVolume αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž‰αŸ’αž…αž”αŸ‹αžŠαŸ„αž™αž‡αŸ„αž‚αž‡αŸαž™αŸ”

αž¬β€‹αž•αŸ’αžŸαŸαž„β€‹αž‘αŸ€αž

  • αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αŸ†αž“αž½αž™αž˜αž·αž“αž˜αžΆαž“αž§αž”αž€αžšαžŽαŸαž”αž‰αŸ’αž‡αžΆαž‘αŸαŸ” PUBLISH_UNPUBLISH_VOLUME αžŸαž˜αžαŸ’αžαž—αžΆαž– αž¬αžαŸ’αž“αžΆαŸ†αž„ STAGE_UNSTAGE_VOLUME αžŸαž˜αžαŸ’αžαž—αžΆαž–, αž“αž·αž„ NodeUnpublishVolume αž”αžΆαž“αž”αž‰αŸ’αž…αž”αŸ‹αžŠαŸ„αž™αž‡αŸ„αž‚αž‡αŸαž™αŸ”

αž“αŸαŸ‡αž˜αžΆαž“αž“αŸαž™αžαžΆ αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž•αŸ’αžŠαžΆαž…αŸ‹αžαžΆαžŸαž…αŸαž‰αž–αžΈαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž“αž·αž˜αŸ’αž˜αž·αž αž˜αž»αž“αž–αŸαž›αž–αž„αŸ’αžšαžΈαž€αžœαžΆαŸ”

αž‘αŸ„αŸ‡αž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™αž‡αžΆαž’αž€αž»αžŸαž› αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αž αž€αžΆαžšαž”αž‰αŸ’αž‡αžΆαž€αŸ‹ CSI αžαžΆαž˜αžšαž™αŸˆ sidecars αž˜αž·αž“αž”αŸ†αž–αŸαž‰αžαžΆαž˜αžαž˜αŸ’αžšαžΌαžœαž€αžΆαžšαž‘αžΆαŸ†αž„αž“αŸαŸ‡αž‘αŸαŸ–

  • αž“αŸ…αž€αŸ’αž“αž»αž„αž’αž»αž„αž…αŸ†αž αŸ€αž„ csi-attacherαžŠαŸ‚αž›αž‚αž½αžšαžαŸ‚αž‘αž‘αž½αž›αžαž»αžŸαžαŸ’αžšαžΌαžœαž…αŸ†αž–αŸ„αŸ‡αžœαžαŸ’αžαž˜αžΆαž“αž“αŸƒαž‚αž˜αŸ’αž›αžΆαžαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž€αžΆαžšαžšαžœαžΆαž„αž˜αŸ‰αŸ„αž“ αž˜αž»αžαž„αžΆαžšαž“αŸαŸ‡αž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαž€αŸ’αž“αž»αž„αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž‘αŸ†αž αŸ†αž€αŸ’αžšαŸ…αž”αžŽαŸ’αžαžΆαž‰αž‘αŸαŸ” αž€αžΆαžšαž–αž·αž—αžΆαž€αŸ’αžŸαžΆαž’αŸ†αž–αžΈαžšαžΏαž„αž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜ αž“αŸ…αž‘αžΈαž“αŸαŸ‡.
  • αžαžΎβ€‹αž’αŸ’αžœαžΈβ€‹αž‘αŸ…β€‹αž‡αžΆβ€‹αž’αž»αž„β€‹αž…αŸ†αž αŸ€αž„β€‹αž€αŸ’αž“αž»αž„β€‹αž”αžšαž·αž”αž‘β€‹αž“αŸαŸ‡? αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αŸ†αž“αž½αž™ CSI αžαŸ’αž›αž½αž“αžœαžΆαž˜αž·αž“αž’αŸ’αžœαžΎαž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜αž‡αžΆαž˜αž½αž™ Kubernetes API αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž†αŸ’αž›αžΎαž™αžαž”αž‘αŸ…αž“αžΉαž„αž€αžΆαžšαž αŸ…αž‘αžΌαžšαžŸαž–αŸ’αž‘ gRPC αžŠαŸ‚αž›αž•αŸ’αž‰αžΎαž‘αŸ…αžœαžΆαžŠαŸ„αž™αž’αž»αž„αž…αŸ†αž αŸ€αž„αŸ” αž…αž»αž„αž€αŸ’αžšαŸ„αž™ αž€αŸ†αž–αž»αž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž—αž·αžœαžŒαŸ’αž αžŠαŸ„αž™αžŸαž αž‚αž˜αž“αŸ Kubernetes αŸ”

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

  1. αž™αžΎαž„β€‹αž‘αž‘αž½αž›β€‹αž”αžΆαž“β€‹αž€αžΆαžšβ€‹αž αŸ…β€‹αž‘αžΌαžšαžŸαž–αŸ’αž‘ gRPC ControllerExpandVolume;
  2. αž™αžΎαž„αž€αŸ†αž–αž»αž„αž–αŸ’αž™αžΆαž™αžΆαž˜αž”αž„αŸ’αž€αžΎαž“αžŒαžΈαžŸαž“αŸ…αž€αŸ’αž“αž»αž„ API αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž™αžΎαž„αž‘αž‘αž½αž›αž”αžΆαž“αž€αŸ†αž αž»αžŸαž’αŸ†αž–αžΈαž—αžΆαž–αž˜αž·αž“αž’αžΆαž…αž‘αŸ…αžšαž½αž…αž“αŸƒαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚αžαžΆαžŸαžαŸ’αžšαžΌαžœαž”αžΆαž“αž˜αŸ‰αŸ„αž“αŸ”
  3. αž™αžΎαž„αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž§αž”αž€αžšαžŽαŸαž€αŸ†αžŽαžαŸ‹αž’αžαŸ’αžαžŸαž‰αŸ’αž‰αžΆαžŽαžαžΆαžŸαž“αŸ…αž€αŸ’αž“αž»αž„αž•αŸ‚αž“αž‘αžΈαžŠαŸ‚αž›αž˜αžΆαž“αžαžΆαžŸαžŠαŸ‚αž›αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž€αžΎαž“αž‘αžΎαž„αž…αžΆαŸ†αž”αžΆαž…αŸ‹αžαŸ’αžšαžΌαžœαž’αž“αž»αžœαžαŸ’αžαŸ” αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αž“αŸαŸ‡ αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž—αžΆαž–αžŸαž„αŸ’αžαŸαž” αž™αžΎαž„αž“αžΉαž„αž αŸ…αž•αŸ‚αž“αž‘αžΈαž“αŸαŸ‡αžαžΆαž‡αžΆ volumeResizeRequired;
  4. αž™αž€αž•αžαžŠαŸ‚αž›αž”αŸ’αžšαžΎαžαžΆαžŸαž…αŸαž‰αžŠαŸ„αž™αžŠαŸƒαŸ” Kubernetes αž“αžΉαž„αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžœαžΆαž‘αžΎαž„αžœαž·αž‰αŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡αžαžΆαžαžΆαžŸαž˜αž·αž“αž˜αžΆαž“αž–αŸαž›αžœαŸαž›αžΆαžŠαžΎαž˜αŸ’αž”αžΈαž˜αŸ‰αŸ„αž“ (ControllerPublishVolume) αž˜αž»αž“αž–αŸαž›αž”αž‰αŸ’αž…αž”αŸ‹αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž”αž„αŸ’αž€αžΎαž“αž“αŸ…αž–αŸαž›αž–αŸ’αž™αžΆαž™αžΆαž˜αž˜αŸ‰αŸ„αž“ αž™αžΎαž„αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αžαžΆαžŒαžΈαžŸαžŠαŸ‚αž›αž”αžΆαž“αž•αŸ’αžαž›αŸ‹αž±αŸ’αž™αž“αŸ…αžαŸ‚αžŸαŸ’αžαž·αžαž€αŸ’αž“αž»αž„ volumeResizeRequired αž“αž·αž„αžαŸ’αžšαž‘αž”αŸ‹αž€αŸ†αž αž»αžŸαž˜αž½αž™;
  5. αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž‰αŸ’αž‡αžΆ CSI αž–αŸ’αž™αžΆαž™αžΆαž˜αž’αŸ’αžœαžΎαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž‘αŸ†αž αŸ†αž‘αžΎαž„αžœαž·αž‰αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž”αžΆαž“αž‡αŸ„αž‚αž‡αŸαž™ αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž™αž€αžαžΆαžŸαž…αŸαž‰αž–αžΈ volumeResizeRequired;
  6. αžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚ αž›αŸαžαžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αžαžΆαžŸαž”αžΆαžαŸ‹αž–αžΈ volumeResizeRequired, ControllerPublishVolume αž†αŸ’αž›αž„αž€αžΆαžαŸ‹αžŠαŸ„αž™αž‡αŸ„αž‚αž‡αŸαž™ αžαžΆαžŸαžαŸ’αžšαžΌαžœαž”αžΆαž“αž˜αŸ‰αŸ„αž“ αž•αžαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αŸ”

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

func DefaultControllerRateLimiter() RateLimiter {
  return NewMaxOfRateLimiter(
  NewItemExponentialFailureRateLimiter(5*time.Millisecond, 1000*time.Second),
  // 10 qps, 100 bucket size.  This is only for retry speed and its only the overall factor (not per item)
  &BucketRateLimiter{Limiter: rate.NewLimiter(rate.Limit(10), 100)},
  )
}

αž“αŸαŸ‡αž’αžΆαž…αž”αžŽαŸ’αžαžΆαž›αž±αŸ’αž™αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž–αž„αŸ’αžšαžΈαž€αžαžΆαžŸαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž“αŸ’αžαžšαž™αŸˆαž–αŸαž› 15+ αž“αžΆαž‘αžΈ αž αžΎαž™αžŠαžΌαž…αŸ’αž“αŸαŸ‡ αž•αžαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž‚αŸ’αž“αžΆαž˜αž·αž“αž’αžΆαž…αž”αŸ’αžšαžΎαž”αžΆαž“αž‘αŸαŸ”

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

workqueue.NewItemExponentialFailureRateLimiter(5*time.Millisecond, 5*time.Second)

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

αžαžΎαž’αŸ’αžœαžΎαžŠαžΌαž…αž˜αŸ’αžαŸαž…αžŠαžΎαž˜αŸ’αž”αžΈαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž”αŸ’αžšαžΎ?

αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž‰αŸ’αž‡αžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αžΆαŸ†αž‘αŸ’αžšαž“αŸ…αž›αžΎ Kubernetes αž€αŸ†αžŽαŸ‚ 1.15 αž“αž·αž„αžαŸ’αž–αžŸαŸ‹αž‡αžΆαž„αž“αŸαŸ‡αŸ” αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αž”αžΎαž€αž”αžšαžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαž€αžΆαžš αžαž˜αŸ’αžšαžΌαžœαž€αžΆαžšαžαžΆαž„αž€αŸ’αžšαŸ„αž˜αžαŸ’αžšαžΌαžœαžαŸ‚αž”αŸ†αž–αŸαž‰αŸ–

  • αžŠαžΆαž€αŸ‹αž‘αž„αŸ‹ --allow-privileged αž€αŸ†αžŽαžαŸ‹αž‘αŸ…αžαž˜αŸ’αž›αŸƒ true αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ API αž“αž·αž„ kubelet;
  • αžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž› --feature-gates=VolumeSnapshotDataSource=true,KubeletPluginsWatcher=true,CSINodeInfo=true,CSIDriverRegistry=true αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ API αž“αž·αž„ kubelet;
  • αž€αžΆαžšαž”αž“αŸ’αžαž–αžΌαž‡αž—αŸ’αž“αŸ† (αž€αžΆαžšαž”αž“αŸ’αžαž–αžΌαž‡αž—αŸ’αž“αŸ†) αžαŸ’αžšαžΌαžœαžαŸ‚αž”αžΎαž€αž“αŸ…αž›αžΎαž…αž„αŸ’αž€αŸ„αž˜αŸ” αž“αŸ…αž–αŸαž›αž”αŸ’αžšαžΎ Docker αžŠαŸαž˜αž·αž“αžαŸ’αžšαžΌαžœαžαŸ‚αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžŠαžΎαž˜αŸ’αž”αžΈαž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž˜αŸ‰αŸ„αž“αžŠαŸ‚αž›αž”αžΆαž“αž…αŸ‚αž€αžšαŸ†αž›αŸ‚αž€αŸ”

αžšαžΆαž›αŸ‹αž‡αŸ†αž αžΆαž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αžŠαŸ„αž™αžαŸ’αž›αž½αž“αž―αž„αŸ” αž”αžΆαž“αž–αž·αž–αžŽαŸŒαž“αžΆαž“αŸ…αž€αŸ’αž“αž»αž„ README. αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αž–αžΆαž€αŸ‹αž–αŸαž“αŸ’αž’αž“αžΉαž„αž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαžœαžαŸ’αžαž»αž“αŸ…αž€αŸ’αž“αž»αž„ Kubernetes αž–αžΈ manifests αŸ”

αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αž”αžΎαž€αž”αžšαžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαž€αžΆαžšαž’αŸ’αž“αž€αž“αžΉαž„αžαŸ’αžšαžΌαžœαž€αžΆαžšαžŠαžΌαž…αžαžΆαž„αž€αŸ’αžšαŸ„αž˜:

  • αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž’αžαŸ’αžαžŸαž‰αŸ’αž‰αžΆαžŽαžαžαž“αŸ…αž€αŸ’αž“αž»αž„ manifest (folder-id) Yandex.Cloud (αž˜αžΎαž›αž―αž€αžŸαžΆαžš);
  • αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜αž‡αžΆαž˜αž½αž™ Yandex.Cloud API αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž‰αŸ’αž‡αžΆ CSI αž”αŸ’αžšαžΎαž‚αžŽαž“αžΈαžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αŸ” αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αž„αŸ’αž αžΆαž‰ αž€αžΆαžšαžŸαž˜αŸ’αž„αžΆαžαŸ‹αžαŸ’αžšαžΌαžœαžαŸ‚αž†αŸ’αž›αž„αž€αžΆαžαŸ‹ αž€αžΌαž“αžŸαŸ„αžŠαŸ‚αž›αž”αžΆαž“αž’αž“αž»αž‰αŸ’αž‰αžΆαž αž–αžΈαž‚αžŽαž“αžΈαžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αŸ” αž“αŸ…αž€αŸ’αž“αž»αž„αž―αž€αžŸαžΆαžš αž”αžΆαž“αž–αž·αž–αžŽαŸŒαž“αžΆ, αžšαž”αŸ€αž”αž”αž„αŸ’αž€αžΎαžαž‚αžŽαž“αžΈαžŸαŸαžœαžΆαž€αž˜αŸ’αž˜ αž“αž·αž„αž‘αž‘αž½αž›αž”αžΆαž“αžŸαŸ„αŸ”

αžŸαžšαž»αž”αž‘αžΆαŸ†αž„αž’αžŸαŸ‹ - αžŸαžΆαž€αž›αŸ’αž”αž„αž αžΎαž™αž™αžΎαž„αž“αžΉαž„αžšαžΈαž€αžšαžΆαž™αž€αŸ’αž“αž»αž„αž€αžΆαžšαž‘αž‘αž½αž›αž”αžΆαž“αž˜αžαž·αž€αŸ‚αž›αž˜αŸ’αž’ αž“αž·αž„ αž”αž‰αŸ’αž αžΆαžαŸ’αž˜αžΈαŸ”αž”αžΎαž‡αž½αž”αž”αž‰αŸ’αž αžΆ!

αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ€αž

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

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

PS

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

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

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