ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡΠΌΠ΅ Π²ΠΈ Kubernetes CCM (Cloud Controller Manager) Π·Π° Yandex.Cloud

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡΠΌΠ΅ Π²ΠΈ Kubernetes CCM (Cloud Controller Manager) Π·Π° Yandex.Cloud

Π’ ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠΊΠΎΡ€ΠΎΡˆΠ½ΠΎΡ‚ΠΎ ИздаванС Π½Π° CSI Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ Π·Π° Yandex.Cloud ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°ΠΌΠ΅ Π΄Ρ€ΡƒΠ³ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ с ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΊΠΎΠ΄ Π·Π° Ρ‚ΠΎΠ·ΠΈ ΠΎΠ±Π»Π°ΠΊ - ΠœΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€ Π½Π° ΠΎΠ±Π»Π°Ρ‡Π΅Π½ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€. CCM Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ Π½Π΅ само Π·Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° ΠΊΠ°Ρ‚ΠΎ цяло, Π½ΠΎ ΠΈ Π·Π° самия CSI Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ Π·Π° ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΌΡƒ ΠΈ някои характСристики Π½Π° изпълнСниС са ΠΏΠΎΠ΄ Ρ€Π°Π·Ρ€Π΅Π·Π°.

въвСдСниС

Π—Π°Ρ‰ΠΎ Π΅ Ρ‚ΠΎΠ²Π°?

ΠœΠΎΡ‚ΠΈΠ²ΠΈΡ‚Π΅, ΠΊΠΎΠΈΡ‚ΠΎ Π½ΠΈ ΠΏΠΎΠ΄Ρ‚ΠΈΠΊΠ½Π°Ρ…Π° Π΄Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΈΠΌ CCM Π·Π° Yandex.Cloud, напълно ΡΡŠΠ²ΠΏΠ°Π΄Π°Ρ‚ с Π²Π΅Ρ‡Π΅ описанитС Π² ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ CSI Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΈ. НиС ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°ΠΌΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ Kubernetes ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ΠΈ ΠΎΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΎΠ±Π»Π°Ρ‡Π½ΠΈ доставчици, Π·Π° ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π΅Π΄ΠΈΠ½ инструмСнт. Π’ΠΎΠΉ ΠΏΡ€ΠΈΠ»Π°Π³Π° мноТСство удобства, β€žΠ·Π°ΠΎΠ±ΠΈΠΊΠ°Π»ΡΠΉΠΊΠΈβ€œ управляванитС Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π½Π° Ρ‚Π΅Π·ΠΈ доставчици. Π”Π°, ΠΈΠΌΠ°ΠΌΠ΅ доста спСцифичСн случай ΠΈ Π½ΡƒΠΆΠ΄ΠΈ, Π½ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈΡ‚Π΅, създадСни Π·Π°Ρ€Π°Π΄ΠΈ тях, ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΏΠΎΠ»Π΅Π·Π½ΠΈ Π·Π° Π΄Ρ€ΡƒΠ³ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ.

Какво Ρ‚ΠΎΡ‡Π½ΠΎ Π΅ CCM?

ОбикновСно Π½ΠΈΠ΅ подготвямС срСдата ΠΎΠΊΠΎΠ»ΠΎ нас Π·Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° ΠΎΡ‚Π²ΡŠΠ½ - Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Terraform. Но понякога ΠΈΠΌΠ° Π½ΡƒΠΆΠ΄Π° Π΄Π° управлявамС ΠΎΠ±Π»Π°Ρ‡Π½Π°Ρ‚Π° срСда ΠΎΠΊΠΎΠ»ΠΎ нас ΠΎΡ‚ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€. Π’Π°Π·ΠΈ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π΅ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄Π΅Π½Π° ΠΈ ΠΈΠΌΠ΅Π½Π½ΠΎ тя сС Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π° CCM.

По-ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ, Cloud Controller Manager прСдоставя ΠΏΠ΅Ρ‚ основни Ρ‚ΠΈΠΏΠ° взаимодСйствиС:

  1. Π‘Π»ΡƒΡ‡Π°ΠΈΡ‚Π΅ – ΠΏΡ€ΠΈΠ»Π°Π³Π° Π²Ρ€ΡŠΠ·ΠΊΠ° 1:1 ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠ±Π΅ΠΊΡ‚ Π½Π° възСл Π² Kubernetes (Node) ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½Π° машина Π² облачния доставчик. Π—Π° Ρ‚ΠΎΠ²Π° Π½ΠΈΠ΅:
    • ΠΏΠΎΠΏΡŠΠ»Π½Π΅Ρ‚Π΅ ΠΏΠΎΠ»Π΅Ρ‚ΠΎ spec.providerID Π² ΠΎΠ±Π΅ΠΊΡ‚Π° Node. НапримСр Π·Π° OpenStack CCM Ρ‚ΠΎΠ²Π° ΠΏΠΎΠ»Π΅ ΠΈΠΌΠ° слСдния Ρ„ΠΎΡ€ΠΌΠ°Ρ‚: openstack:///d58a78bf-21b0-4682-9dc6-2132406d2bb0. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° облачния доставчик ΠΈ уникалния UUID Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π° (Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½Π° машина Π² OpenStack) Π½Π° ΠΎΠ±Π΅ΠΊΡ‚Π°;
    • допълнСниС nodeInfo Π² ΠΎΠ±Π΅ΠΊΡ‚Π° Node информация Π·Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½Π°Ρ‚Π° машина. НапримСр, Π½ΠΈΠ΅ посочвамС Ρ‚ΠΈΠΏ инстанция Π² AWS;
    • ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ²Π°ΠΌΠ΅ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅Ρ‚ΠΎ Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½Π° машина Π² ΠΎΠ±Π»Π°ΠΊΠ°. НапримСр, Π°ΠΊΠΎ ΠΎΠ±Π΅ΠΊΡ‚ Node ΠΎΡ‚ΠΈΠ΄Π΅ Π² ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅ NotReady, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚Π΅ Π΄Π°Π»ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½Π°Ρ‚Π° машина ΠΈΠ·ΠΎΠ±Ρ‰ΠΎ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π° Π² облачния доставчик Ρ‡Ρ€Π΅Π· providerID. Ако Π½Π΅ Π΅ Ρ‚Π°ΠΌ, ΠΈΠ·Ρ‚Ρ€ΠΈΠΉΡ‚Π΅ ΠΎΠ±Π΅ΠΊΡ‚Π° Node, ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠ½Π°Ρ‡Π΅ Π±ΠΈΡ…Π° останали Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° Π·Π°Π²ΠΈΠ½Π°Π³ΠΈ;
  2. Π—ΠΎΠ½ΠΈ – Π·Π°Π΄Π°Π²Π° Π΄ΠΎΠΌΠ΅ΠΉΠ½Π° Π½Π° ΠΎΡ‚ΠΊΠ°Π· Π·Π° ΠΎΠ±Π΅ΠΊΡ‚Π° Node, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‡ΠΈΠΊΡŠΡ‚ Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·Π±Π΅Ρ€Π΅ възСл Π·Π° Pod спорСд Ρ€Π΅Π³ΠΈΠΎΠ½ΠΈΡ‚Π΅ ΠΈ Π·ΠΎΠ½ΠΈΡ‚Π΅ Π² облачния доставчик;
  3. LoadBalancer – ΠΏΡ€ΠΈ създаванС Π½Π° ΠΎΠ±Π΅ΠΊΡ‚ Service с Ρ‚ΠΈΠΏ LoadBalancer създава Π΅Π΄ΠΈΠ½ Π²ΠΈΠ΄ Π±Π°Π»Π°Π½ΡΡŒΠΎΡ€, ΠΊΠΎΠΉΡ‚ΠΎ Ρ‰Π΅ насочва Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° ΠΎΡ‚Π²ΡŠΠ½ към Π²ΡŠΠ·Π»ΠΈΡ‚Π΅ Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°. НапримСр Π² Yandex.Cloud ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ NetworkLoadBalancer ΠΈ TargetGroup Π·Π° Ρ‚Π΅Π·ΠΈ Ρ†Π΅Π»ΠΈ;
  4. ΠŸΡŠΡ‚ – ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π° ΠΌΡ€Π΅ΠΆΠ° ΠΌΠ΅ΠΆΠ΄Ρƒ възли, Ρ‚.ΠΊ Бъгласно изискванията Π½Π° Kubernetes, всСки pod трябва Π΄Π° ΠΈΠΌΠ° свой собствСн IP адрСс ΠΈ Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° достига Π΄ΠΎ всСки Π΄Ρ€ΡƒΠ³ pod. Π—Π° Ρ‚Π΅Π·ΠΈ Ρ†Π΅Π»ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ ΠΌΡ€Π΅ΠΆΠ° с наслагванС (VXLAN, GENEVE) ΠΈΠ»ΠΈ Π΄Π° Π·Π°Π΄Π°Π΄Π΅Ρ‚Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Π° Π·Π° ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ във Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½Π°Ρ‚Π° ΠΌΡ€Π΅ΠΆΠ° Π½Π° доставчика Π½Π° ΠΎΠ±Π»Π°ΠΊ:

    ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡΠΌΠ΅ Π²ΠΈ Kubernetes CCM (Cloud Controller Manager) Π·Π° Yandex.Cloud

  5. Π Π°Π·ΠΌΠ΅Ρ€ – Позволява Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½ΠΎ ΠΏΠΎΠ΄Ρ€Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° PV с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° PVC ΠΈ SC. ΠŸΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½ΠΎ Ρ‚Π°Π·ΠΈ функционалност бСшС част ΠΎΡ‚ CCM, Π½ΠΎ ΠΏΠΎΡ€Π°Π΄ΠΈ голямата си слоТност бСшС прСмСстСна Π² ΠΎΡ‚Π΄Π΅Π»Π΅Π½ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Container Storage Interface (CSI). Π“ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ смС Π·Π° CSI ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΎΡ‚ вСднъТ писали ΠΈ ΠΊΠ°ΠΊΡ‚ΠΎ Π²Π΅Ρ‡Π΅ спомСнахмС Π΄ΠΎΡ€ΠΈ освободСн CSI Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€.

ΠŸΡ€Π΅Π΄ΠΈ Ρ‚ΠΎΠ²Π° цСлият ΠΊΠΎΠ΄, взаимодСйстващ с ΠΎΠ±Π»Π°ΠΊΠ°, сС Π½Π°ΠΌΠΈΡ€Π°ΡˆΠ΅ Π² Π³Π»Π°Π²Π½ΠΎΡ‚ΠΎ Git Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Kubernetes Π½Π° k8s.io/kubernetes/pkg/cloudprovider/providers, Π½ΠΎ Ρ€Π΅ΡˆΠΈΡ…Π° Π΄Π° сС ΠΎΡ‚ΠΊΠ°ΠΆΠ°Ρ‚ ΠΎΡ‚ Ρ‚ΠΎΠ²Π° ΠΏΠΎΡ€Π°Π΄ΠΈ нСудобството Π΄Π° работят с голяма ΠΊΠΎΠ΄ΠΎΠ²Π° Π±Π°Π·Π°. Всички стари Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ са прСмСстСни Π² ΠΎΡ‚Π΄Π΅Π»Π½ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅. Π—Π° удобство Π½Π° ΠΏΠΎ-Π½Π°Ρ‚Π°Ρ‚ΡŠΡˆΠ½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° ΠΈ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ всички ΠΎΠ±Ρ‰ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ ΡΡŠΡ‰ΠΎ бяха прСмСстСни Π² ΠΎΡ‚Π΄Π΅Π»Π½ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅.

ΠšΠ°ΠΊΡ‚ΠΎ ΠΏΡ€ΠΈ CSI, ΠΌΠ½ΠΎΠ³ΠΎ Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΎΠ±Π»Π°Ρ‡Π½ΠΈ доставчици Π²Π΅Ρ‡Π΅ са ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€Π°Π»ΠΈ своитС CCM, Π·Π° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ ΠΎΠ±Π»Π°Ρ†ΠΈ Π² Kubernetes. Ако Π΄ΠΎΡΡ‚Π°Π²Ρ‡ΠΈΠΊΡŠΡ‚ няма CCM, Π½ΠΎ всички Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ са Π΄ΠΎΡΡ‚ΡŠΠΏΠ½ΠΈ Ρ‡Ρ€Π΅Π· API, Ρ‚ΠΎΠ³Π°Π²Π° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ сами Π΄Π° Π²Π½Π΅Π΄Ρ€ΠΈΡ‚Π΅ CCM.

Π—Π° Π΄Π° Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ своя собствСна рСализация Π½Π° CCM, Π΅ Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ Π΄Π° Π²Π½Π΅Π΄Ρ€ΠΈΡ‚Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈ Go интСрфСйси.

И Ρ‚ΠΎΠ²Π° Π΅, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΈΠΌΠ°ΠΌΠ΅.

ИзпълнСниС

Как сС стигна Π΄ΠΎ Ρ‚ΠΎΠ²Π°

Π—Π°ΠΏΠΎΡ‡Π½Π°Ρ…ΠΌΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° (ΠΈΠ»ΠΈ ΠΏΠΎ-скоро Π΄ΠΎΡ€ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ) с Π³ΠΎΡ‚ΠΎΠ²(!) CCM Π·Π° Yandex.Cloud ΠΏΡ€Π΅Π΄ΠΈ Π³ΠΎΠ΄ΠΈΠ½Π°.

Π’ Ρ‚Π°Π·ΠΈ рСализация ΠΎΠ±Π°Ρ‡Π΅ Π½ΠΈ липсвашС:

  • удостовСряванС Ρ‡Ρ€Π΅Π· JWT IAM Ρ‚ΠΎΠΊΠ΅Π½;
  • ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° сСрвизСн ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€.

Π’ съгласиС с Π°Π²Ρ‚ΠΎΡ€Π° (dlisin) Π² Telegram Ρ€Π°Π·ΠΊΠ»ΠΎΠ½ΠΈΡ…ΠΌΠ΅ yandex-cloud-controller-manager ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ…ΠΌΠ΅ липсващитС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Основни характСристики

Π’ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° CCM ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° слСднитС интСрфСйси:

  • Π‘Π»ΡƒΡ‡Π°ΠΈΡ‚Π΅;
  • Π—ΠΎΠ½ΠΈ;
  • LoadBalancer.

Π’ Π±ΡŠΠ΄Π΅Ρ‰Π΅, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Yandex.Cloud Π·Π°ΠΏΠΎΡ‡Π½Π΅ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ с Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈ VPC Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ, Ρ‰Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ интСрфСйс ΠœΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈ.

LoadBalanacer ΠΊΠ°Ρ‚ΠΎ основно прСдизвикатСлство

ΠŸΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½ΠΎ сС ΠΎΠΏΠΈΡ‚Π°Ρ…ΠΌΠ΅, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° CCM, Π΄Π° създадСм Ρ‡ΠΈΡ„Ρ‚ LoadBalancer ΠΈ TargetGroup Π·Π° всСки Service с Ρ‚ΠΈΠΏ LoadBalancer. Yandex.Cloud ΠΎΠ±Π°Ρ‡Π΅ ΠΎΡ‚ΠΊΡ€ΠΈ Π΅Π΄Π½ΠΎ интСрСсно ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅: Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ TargetGroups с прСсичанС Targets (Π΄Π²ΠΎΠΉΠΊΠ° SubnetID - IpAddress).

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡΠΌΠ΅ Π²ΠΈ Kubernetes CCM (Cloud Controller Manager) Π·Π° Yandex.Cloud

Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»Π½ΠΎ, Π²ΡŠΡ‚Ρ€Π΅ Π² създадСния CCM сС стартира ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€, ΠΊΠΎΠΉΡ‚ΠΎ, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΎΠ±Π΅ΠΊΡ‚ΠΈΡ‚Π΅ сС промСнят Node ΡΡŠΠ±ΠΈΡ€Π° информация Π·Π° всички интСрфСйси Π½Π° всяка Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½Π° машина, Π³Ρ€ΡƒΠΏΠΈΡ€Π° Π³ΠΈ спорСд принадлСТността ΠΈΠΌ към ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ NetworkID, създава ΠΎΡ‚ TargetGroup Π½Π° NetworkID, Π° ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° слСди умСстността. ВпослСдствиС ΠΏΡ€ΠΈ създаванС Π½Π° ΠΎΠ±Π΅ΠΊΡ‚ Service с Ρ‚ΠΈΠΏ LoadBalanacer Π½ΠΈΠ΅ просто прикрСпямС ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»Π½ΠΎ създадСн TargetGroup към Π½ΠΎΠ² NetworkLoadBalanacerсъм.

Как Π΄Π° Π·Π°ΠΏΠΎΡ‡Π½Π΅Ρ‚Π΅ Π΄Π° Π³ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅?

CCM ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° Kubernetes вСрсия 1.15 ΠΈ ΠΏΠΎ-Π½ΠΎΠ²Π°. Π’ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€, Π·Π° Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ, Ρ‚ΠΎΠΉ изисква Ρ„Π»Π°Π³ΡŠΡ‚ --cloud-provider=external бСшС настроСн Π½Π° true Π·Π° kube-apiserver, kube-controller-manager, kube-scheduler ΠΈ всички kubelets.

Всички Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈ ΡΡ‚ΡŠΠΏΠΊΠΈ Π·Π° самата инсталация са описани Π² README. Π˜Π½ΡΡ‚Π°Π»ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ сС свСТда Π΄ΠΎ създаванС Π½Π° ΠΎΠ±Π΅ΠΊΡ‚ΠΈ Π² Kubernetes ΠΎΡ‚ манифСсти.

Π—Π° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ CCM, Ρ‰Π΅ Π²ΠΈ трябва ΡΡŠΡ‰ΠΎ:

  • посочСтС Π² манифСста ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΡŠΡ‚ Π½Π° дирСкторията (folder-id) Yandex.Cloud;
  • Π°ΠΊΠ°ΡƒΠ½Ρ‚ Π·Π° услуга Π·Π° взаимодСйствиС с API Π½Π° Yandex.Cloud. Π’ манифСста Secret Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€Π΅Ρ…Π²ΡŠΡ€Π»ΡΠ½Π΅ Π½Π° ΠΎΡ‚ΠΎΡ€ΠΈΠ·ΠΈΡ€Π°Π½ΠΈ ΠΊΠ»ΡŽΡ‡ΠΎΠ²Π΅ ΠΎΡ‚ сСрвизния Π°ΠΊΠ°ΡƒΠ½Ρ‚. Π’ докумСнтацията описано, ΠΊΠ°ΠΊ Π΄Π° ΡΡŠΠ·Π΄Π°Π΄Π΅Ρ‚Π΅ сСрвизСн Π°ΠΊΠ°ΡƒΠ½Ρ‚ ΠΈ Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΊΠ»ΡŽΡ‡ΠΎΠ²Π΅.

Π©Π΅ сС Ρ€Π°Π΄Π²Π°ΠΌΠ΅ Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Π²Π°ΡˆΠΈΡ‚Π΅ ΠΎΡ‚Π·ΠΈΠ²ΠΈ ΠΈ Π½ΠΎΠ²ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈΠ°ΠΊΠΎ срСщнСтС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ!

Π Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈ ΠΎΡ‚

Π˜Π·ΠΏΠΎΠ»Π·Π²Π°Ρ…ΠΌΠ΅ внСдрСния CCM Π² ΠΏΠ΅Ρ‚ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° Π½Π° Kubernetes ΠΏΡ€Π΅Π· послСднитС Π΄Π²Π΅ сСдмици ΠΈ ΠΏΠ»Π°Π½ΠΈΡ€Π°ΠΌΠ΅ Π΄Π° Ρ€Π°Π·ΡˆΠΈΡ€ΠΈΠΌ броя ΠΈΠΌ Π΄ΠΎ 20 ΠΏΡ€Π΅Π· слСдващия мСсСц. Π’ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π½Π΅ ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π²Π°ΠΌΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° CCM Π·Π° Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΈ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΈ инсталации Π½Π° K8s.

ΠšΠ°ΠΊΡ‚ΠΎ Π² случая с CSI, Ρ‰Π΅ сС Ρ€Π°Π΄Π²Π°ΠΌΠ΅, Π°ΠΊΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ Π½Π° Yandex ΠΏΠΎΠ΅ΠΌΠ°Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π°Π½Π΅Ρ‚ΠΎ ΠΈ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π° Π½Π° Ρ‚ΠΎΠ·ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ - Π½ΠΈΠ΅ смС Π³ΠΎΡ‚ΠΎΠ²ΠΈ Π΄Π° ΠΏΡ€Π΅Ρ…Π²ΡŠΡ€Π»ΠΈΠΌ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ ΠΏΠΎ тяхно исканС, Π·Π° Π΄Π° сС справим със Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ са ΠΏΠΎ-подходящи Π·Π° нас.

PS

ΠŸΡ€ΠΎΡ‡Π΅Ρ‚Π΅Ρ‚Π΅ ΡΡŠΡ‰ΠΎ Π² нашия Π±Π»ΠΎΠ³:

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: www.habr.com

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€