Как ΠΏΠΎΠ΄ Π² Kubernetes ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π° IP адрСс

Π—Π°Π±Π΅Π»Π΅ΠΆΠΊΠ°. ΠΏΡ€Π΅Π²ΠΎΠ΄: Π’Π°Π·ΠΈ статия, написана ΠΎΡ‚ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ Π½Π° SRE Π² LinkedIn, описва ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ β€žΠ²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° ΠΌΠ°Π³ΠΈΡβ€œ Π² Kubernetes – ΠΏΠΎ-Ρ‚ΠΎΡ‡Π½ΠΎ взаимодСйствиСто ΠΌΠ΅ΠΆΠ΄Ρƒ CRI, CNI ΠΈ kube-apiserver – ΠΊΠ°ΠΊΠ²ΠΎ сС случва, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π½Π° слСдващия pod трябва Π΄Π° бъдС присвоСн IP адрСс.

Π•Π΄Π½ΠΎ ΠΎΡ‚ основнитС изисквания ΠœΡ€Π΅ΠΆΠΎΠ² ΠΌΠΎΠ΄Π΅Π» Π½Π° Kubernetes Π΅, Ρ‡Π΅ всСки pod трябва Π΄Π° ΠΈΠΌΠ° свой собствСн IP адрСс ΠΈ всСки Π΄Ρ€ΡƒΠ³ pod Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° трябва Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΡΠ²ΡŠΡ€Π·Π²Π° с Π½Π΅Π³ΠΎ Π½Π° Ρ‚ΠΎΠ·ΠΈ адрСс. Има ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ "доставчици" (Flannel, Calico, Canal ΠΈ Ρ‚.Π½.), ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΠΎΠΌΠ°Π³Π°Ρ‚ Π·Π° ΠΏΡ€ΠΈΠ»Π°Π³Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ‚ΠΎΠ·ΠΈ ΠΌΡ€Π΅ΠΆΠΎΠ² ΠΌΠΎΠ΄Π΅Π».

ΠšΠΎΠ³Π°Ρ‚ΠΎ Π·Π° ΠΏΡŠΡ€Π²ΠΈ ΠΏΡŠΡ‚ Π·Π°ΠΏΠΎΡ‡Π½Π°Ρ… Π΄Π° работя с Kubernetes, Π½Π΅ ΠΌΠΈ бСшС напълно ясно ΠΊΠ°ΠΊ Ρ‚ΠΎΡ‡Π½ΠΎ pods ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Ρ‚ своитС IP адрСси. Π”ΠΎΡ€ΠΈ ΠΈ с Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π·Π° Ρ‚ΠΎΠ²Π° ΠΊΠ°ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€Π°Ρ‚ ΠΎΡ‚Π΄Π΅Π»Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ, бСшС Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Π΄Π° си Π³ΠΈ прСдставим Π΄Π° работят Π·Π°Π΅Π΄Π½ΠΎ. НапримСр, Π·Π½Π°Π΅Ρ… Π·Π° ΠΊΠ°ΠΊΠ²ΠΎ са CNI Π΄ΠΎΠ±Π°Π²ΠΊΠΈΡ‚Π΅, Π½ΠΎ нямах прСдстава ΠΊΠ°ΠΊ Ρ‚ΠΎΡ‡Π½ΠΎ сС Π½Π°Ρ€ΠΈΡ‡Π°Ρ‚. Π—Π°Ρ‚ΠΎΠ²Π° Ρ€Π΅ΡˆΠΈΡ… Π΄Π° напиша Ρ‚Π°Π·ΠΈ статия, Π·Π° Π΄Π° сподСля знания Π·Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈΡ‚Π΅ ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ ΠΈ ΠΊΠ°ΠΊ Ρ‚Π΅ работят Π·Π°Π΅Π΄Π½ΠΎ Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ Π½Π° Kubernetes, ΠΊΠΎΠ΅Ρ‚ΠΎ позволява Π½Π° всСки pod Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈ свой собствСн ΡƒΠ½ΠΈΠΊΠ°Π»Π΅Π½ IP адрСс.

Има Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π½Π°Ρ‡ΠΈΠ½ΠΈ Π·Π° ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° Π² ΠΌΡ€Π΅ΠΆΠ° Π² Kubernetes - Ρ‚ΠΎΡ‡Π½ΠΎ ΠΊΠ°Ρ‚ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈΡ‚Π΅ ΠΎΠΏΡ†ΠΈΠΈ Π·Π° изпълнСниС Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ. Π’Π°Π·ΠΈ публикация Ρ‰Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π±Π°Ρ€Ρ…Π΅Ρ‚ Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° Π² ΠΌΡ€Π΅ΠΆΠ° Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ ΠΈ ΠΊΠ°Ρ‚ΠΎ изпълнима срСда - ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΠΌ ΡΡŠΡ‰ΠΎ, Ρ‡Π΅ Π·Π½Π°Π΅Ρ‚Π΅ ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π² ΠΌΡ€Π΅ΠΆΠ° ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Ρ‰Π΅ Π³ΠΎ засСгна само Π½Π°ΠΊΡ€Π°Ρ‚ΠΊΠΎ, чисто Π·Π° контСкст.

Някои основни понятия

ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ ΠΈ ΠΌΡ€Π΅ΠΆΠΈ с Π΅Π΄ΠΈΠ½ ΠΏΠΎΠ³Π»Π΅Π΄

Π’ ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° ΠΈΠΌΠ° доста ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΈ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ, обясняващи ΠΊΠ°ΠΊ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΡ‚Π΅ ΠΊΠΎΠΌΡƒΠ½ΠΈΠΊΠΈΡ€Π°Ρ‚ ΠΏΠΎΠΌΠ΅ΠΆΠ΄Ρƒ си ΠΏΠΎ ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π°. Π—Π°Ρ‚ΠΎΠ²Π° Ρ‰Π΅ Π΄Π°ΠΌ само ΠΎΠ±Ρ‰ ΠΏΡ€Π΅Π³Π»Π΅Π΄ Π½Π° основнитС ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ ΠΈ Ρ‰Π΅ сС ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π° Π΄ΠΎ Π΅Π΄ΠΈΠ½ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, ΠΊΠΎΠΉΡ‚ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π²Π° създаванС Π½Π° Linux мост ΠΈ капсулиранС Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈΡ‚Π΅ са пропуснати, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ самата Ρ‚Π΅ΠΌΠ° Π·Π° мрСТовия ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ заслуТава ΠΎΡ‚Π΄Π΅Π»Π½Π° статия. По-Π΄ΠΎΠ»Ρƒ Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ прСдоставСни Π²Ρ€ΡŠΠ·ΠΊΠΈ към някои особСно ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠ²Π½ΠΈ ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠ²Π½ΠΈ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ.

ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ Π½Π° ΡΡŠΡ‰ΠΈΡ хост

Π•Π΄ΠΈΠ½ ΠΎΡ‚ Π½Π°Ρ‡ΠΈΠ½ΠΈΡ‚Π΅ Π·Π° ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° IP адрСсна комуникация ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ, Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ΠΈ Π½Π° Π΅Π΄ΠΈΠ½ ΠΈ ΡΡŠΡ‰ хост, Π²ΠΊΠ»ΡŽΡ‡Π²Π° ΡΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Linux мост. Π—Π° Ρ†Π΅Π»Ρ‚Π° Kubernetes (ΠΈ Docker) ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½ΠΈ устройства veth (Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π΅Π½ Ethernet). Единият ΠΊΡ€Π°ΠΉ Π½Π° veth устройството сС ΡΠ²ΡŠΡ€Π·Π²Π° към ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΎΡ‚ΠΎ пространство Π½Π° ΠΈΠΌΠ΅Π½Π°Ρ‚Π° Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, Π° другият ΠΊΡ€Π°ΠΉ сС ΡΠ²ΡŠΡ€Π·Π²Π° към Linux мост Π² хост ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π°.

Всички ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ Π½Π° Π΅Π΄ΠΈΠ½ ΠΈ ΡΡŠΡ‰ хост ΠΈΠΌΠ°Ρ‚ Π΅Π΄ΠΈΠ½ ΠΊΡ€Π°ΠΉ Π½Π° veth, ΡΠ²ΡŠΡ€Π·Π°Π½ към мост, Ρ‡Ρ€Π΅Π· ΠΊΠΎΠΉΡ‚ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° ΠΊΠΎΠΌΡƒΠ½ΠΈΠΊΠΈΡ€Π°Ρ‚ ΠΏΠΎΠΌΠ΅ΠΆΠ΄Ρƒ си Ρ‡Ρ€Π΅Π· IP адрСси. ΠœΠΎΡΡ‚ΡŠΡ‚ Π½Π° Linux ΡΡŠΡ‰ΠΎ ΠΈΠΌΠ° IP адрСс ΠΈ дСйства ΠΊΠ°Ρ‚ΠΎ шлюз Π·Π° изходящ (изходящ) Ρ‚Ρ€Π°Ρ„ΠΈΠΊ ΠΎΡ‚ ΠΏΠΎΠ΄ΠΎΠ²Π΅, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈ Π·Π° Π΄Ρ€ΡƒΠ³ΠΈ възли.

Как ΠΏΠΎΠ΄ Π² Kubernetes ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π° IP адрСс

ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ хостовС

ΠšΠ°ΠΏΡΡƒΠ»ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ Π΅ Π΅Π΄ΠΈΠ½ ΠΎΡ‚ Π½Π°Ρ‡ΠΈΠ½ΠΈΡ‚Π΅, ΠΏΠΎ ΠΊΠΎΠΉΡ‚ΠΎ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΡ‚Π΅ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ хостовС ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° ΠΊΠΎΠΌΡƒΠ½ΠΈΠΊΠΈΡ€Π°Ρ‚ ΠΏΠΎΠΌΠ΅ΠΆΠ΄Ρƒ си, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ IP адрСси. Π’ΡŠΠ² Flannel тСхнологията Π΅ Ρ‚ΠΎΠ²Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΏΡ€Π°Π²ΠΈ Ρ‚ΠΎΠ²Π° възмоТно. vxlan, ΠΊΠΎΠΉΡ‚ΠΎ "ΠΎΠΏΠ°ΠΊΠΎΠ²Π°" ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΈΠ·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ Π² UDP ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΈ слСд Ρ‚ΠΎΠ²Π° Π³ΠΎ ΠΈΠ·ΠΏΡ€Π°Ρ‰Π° Π΄ΠΎ мСстоназначСниСто ΠΌΡƒ.

Π’ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ Π½Π° Kubernetes Flannel създава vxlan устройство ΠΈ ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΎ Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π° Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π° с ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈ Π½Π° всСки възСл. ВсСки ΠΏΠ°ΠΊΠ΅Ρ‚, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ Π·Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Π½Π° Π΄Ρ€ΡƒΠ³ хост, ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π° ΠΏΡ€Π΅Π· vxlan устройството ΠΈ сС капсулира Π² UDP ΠΏΠ°ΠΊΠ΅Ρ‚. На мСстоназначСниСто влоТСният ΠΏΠ°ΠΊΠ΅Ρ‚ сС ΠΈΠ·Π²Π»ΠΈΡ‡Π° ΠΈ прСнасочва към правилния pod.

Как ΠΏΠΎΠ΄ Π² Kubernetes ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π° IP адрСс
Π—Π°Π±Π΅Π»Π΅ΠΆΠΊΠ°: Π’ΠΎΠ²Π° Π΅ само Π΅Π΄ΠΈΠ½ ΠΎΡ‚ Π½Π°Ρ‡ΠΈΠ½ΠΈΡ‚Π΅ Π·Π° ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° Π² ΠΌΡ€Π΅ΠΆΠ° ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ.

Какво С CRI?

CRI (Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ Π·Π° изпълнСниС Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ) Π΅ плъгин, ΠΊΠΎΠΉΡ‚ΠΎ позволява Π½Π° kubelet Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ изпълнСния Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ. CRI API Π΅ Π²Π³Ρ€Π°Π΄Π΅Π½ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ срСди Π·Π° изпълнСниС, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° ΠΈΠ·Π±ΠΈΡ€Π°Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π·Π° изпълнСниС, ΠΊΠΎΠ΅Ρ‚ΠΎ искат.

Какво С CNI?

CNI ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π΅ a спСцификация Π΄Π° ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π° унивСрсално ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π·Π° Linux ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ. ОсвСн Ρ‚ΠΎΠ²Π° Π²ΠΊΠ»ΡŽΡ‡Π²Π° плъгини, ΠΊΠΎΠΈΡ‚ΠΎ отговарят Π·Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΈ настройка Π½Π° ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° Π½Π° pod. CNI ΠΏΠ»ΡŠΠ³ΠΈΠ½ΡŠΡ‚ Π΅ изпълним Ρ„Π°ΠΉΠ», ΠΊΠΎΠΉΡ‚ΠΎ отговаря Π½Π° спСцификацията (Ρ‰Π΅ обсъдим някои ΠΎΡ‚ ΠΏΠ»ΡŠΠ³ΠΈΠ½ΠΈΡ‚Π΅ ΠΏΠΎ-Π΄ΠΎΠ»Ρƒ).

ΠŸΠΎΠ΄ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ хостовС Π·Π° присвояванС Π½Π° IP адрСси Π½Π° подс

Въй ΠΊΠ°Ρ‚ΠΎ всСки ΠΏΠΎΠ΄ Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° трябва Π΄Π° ΠΈΠΌΠ° IP адрСс, Π²Π°ΠΆΠ½ΠΎ Π΅ Π΄Π° сС ΡƒΠ²Π΅Ρ€ΠΈΡ‚Π΅, Ρ‡Π΅ Ρ‚ΠΎΠ·ΠΈ адрСс Π΅ ΡƒΠ½ΠΈΠΊΠ°Π»Π΅Π½. Π’ΠΎΠ²Π° сС постига Ρ‡Ρ€Π΅Π· присвояванС Π½Π° всСки възСл Π½Π° ΡƒΠ½ΠΈΠΊΠ°Π»Π½Π° ΠΏΠΎΠ΄ΠΌΡ€Π΅ΠΆΠ°, ΠΎΡ‚ която Π½Π° ΠΏΠΎΠ΄ΠΎΠ²Π΅Ρ‚Π΅ Π² Ρ‚ΠΎΠ·ΠΈ възСл слСд Ρ‚ΠΎΠ²Π° сС присвояват IP адрСси.

Π’ΡŠΠ·Π΅Π» IPAM ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€

ΠšΠΎΠ³Π°Ρ‚ΠΎ nodeipam ΠΏΡ€Π΅Π΄Π°Π΄Π΅Π½ΠΎ ΠΊΠ°Ρ‚ΠΎ Ρ„Π»Π°Π³ΠΎΠ² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€ --controllers kube-ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€-ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€, Ρ‚ΠΎΠΉ разпрСдСля Π½Π° всСки възСл ΠΎΡ‚Π΄Π΅Π»Π½Π° ΠΏΠΎΠ΄ΠΌΡ€Π΅ΠΆΠ° (podCIDR) ΠΎΡ‚ CIDR ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° (Ρ‚.Π΅. Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ΠΎΡ‚ IP адрСси Π·Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π½Π°Ρ‚Π° ΠΌΡ€Π΅ΠΆΠ°). Въй ΠΊΠ°Ρ‚ΠΎ Ρ‚Π΅Π·ΠΈ podCIDR Π½Π΅ сС ΠΏΡ€ΠΈΠΏΠΎΠΊΡ€ΠΈΠ²Π°Ρ‚, става възмоТно Π½Π° всСки pod Π΄Π° бъдС присвоСн ΡƒΠ½ΠΈΠΊΠ°Π»Π΅Π½ IP адрСс.

На възСл Π½Π° Kubernetes сС присвоява podCIDR, ΠΊΠΎΠ³Π°Ρ‚ΠΎ сС рСгистрира Π·Π° ΠΏΡŠΡ€Π²ΠΈ ΠΏΡŠΡ‚ Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°. Π—Π° Π΄Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ podCIDR Π½Π° Π²ΡŠΠ·Π»ΠΈΡ‚Π΅, трябва Π΄Π° Π³ΠΈ дСрСгистриратС ΠΈ слСд Ρ‚ΠΎΠ²Π° Π΄Π° Π³ΠΈ рСгистриратС ΠΎΡ‚Π½ΠΎΠ²ΠΎ, ΠΊΠ°Ρ‚ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² конфигурацията Π½Π° контролния слой Π½Π° Kubernetes ΠΌΠ΅ΠΆΠ΄Ρƒ тях. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚Π΅ podCIDR Π½Π° възСл със слСдната ΠΊΠΎΠΌΠ°Π½Π΄Π°:

$ kubectl get no <nodeName> -o json | jq '.spec.podCIDR'
10.244.0.0/24

Kubelet, срСда Π·Π° изпълнСниС Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ ΠΈ CNI Π΄ΠΎΠ±Π°Π²ΠΊΠΈ: ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚ΠΈ всичко

ΠŸΠ»Π°Π½ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΠΎΠ΄ към възСл Π²ΠΊΠ»ΡŽΡ‡Π²Π° ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Π³ΠΎΡ‚Π²ΠΈΡ‚Π΅Π»Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°. Π’ Ρ‚ΠΎΠ·ΠΈ Ρ€Π°Π·Π΄Π΅Π» Ρ‰Π΅ сС ΡΡŠΡΡ€Π΅Π΄ΠΎΡ‚ΠΎΡ‡Π° само Π²ΡŠΡ€Ρ…Ρƒ Ρ‚Π΅Π·ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ са пряко ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с настройката Π½Π° ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° Π½Π° pod.

ΠŸΠ»Π°Π½ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΠΎΠ΄ към възСл задСйства слСдната Π²Π΅Ρ€ΠΈΠ³Π° ΠΎΡ‚ ΡΡŠΠ±ΠΈΡ‚ΠΈΡ:

Как ΠΏΠΎΠ΄ Π² Kubernetes ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π° IP адрСс

ΠŸΠΎΠΌΠΎΡ‰: ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π½Π° CRI плъгин Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°.

ВзаимодСйствиС ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Ρ€Π΅ΠΌΠ΅ Π·Π° изпълнСниС Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ ΠΈ CNI Π΄ΠΎΠ±Π°Π²ΠΊΠΈ

ВсСки ΠΌΡ€Π΅ΠΆΠΎΠ² доставчик ΠΈΠΌΠ° свой собствСн CNI плъгин. Π‘Ρ€Π΅Π΄Π°Ρ‚Π° Π·Π° изпълнСниС Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° Π³ΠΎ изпълнява, Π·Π° Π΄Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π° ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° Π·Π° pod, ΠΊΠΎΠ³Π°Ρ‚ΠΎ сС стартира. Π’ случай Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ CNI ΠΏΠ»ΡŠΠ³ΠΈΠ½ΡŠΡ‚ сС стартира ΠΎΡ‚ плъгина ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ C.R.I..

ОсвСн Ρ‚ΠΎΠ²Π° всСки доставчик ΠΈΠΌΠ° свой Π°Π³Π΅Π½Ρ‚. Π’ΠΎΠΉ Π΅ инсталиран във всички възли Π½Π° Kubernetes ΠΈ отговаря Π·Π° ΠΌΡ€Π΅ΠΆΠΎΠ²Π°Ρ‚Π° конфигурация Π½Π° ΠΏΠΎΠ΄ΠΎΠ²Π΅Ρ‚Π΅. Π’ΠΎΠ·ΠΈ Π°Π³Π΅Π½Ρ‚ ΠΈΠ»ΠΈ ΠΈΠ΄Π²Π° Π² ΠΏΠ°ΠΊΠ΅Ρ‚ с CNI конфигурацията, ΠΈΠ»ΠΈ Π³ΠΎ създава самостоятСлно Π½Π° възСла. ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡΡ‚Π° ΠΏΠΎΠΌΠ°Π³Π° Π½Π° CRI плъгина Π΄Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈ ΠΊΠΎΠΉ CNI плъгин Π΄Π° ΠΈΠ·Π²ΠΈΠΊΠ°.

ΠœΠ΅ΡΡ‚ΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° CNI конфигурацията ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС пСрсонализирано; ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π΅ Π² /etc/cni/net.d/<config-file>. ΠšΠ»ΡŠΡΡ‚Π΅Ρ€Π½ΠΈΡ‚Π΅ администратори ΡΡŠΡ‰ΠΎ са ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€Π½ΠΈ Π·Π° инсталиранСто Π½Π° CNI Π΄ΠΎΠ±Π°Π²ΠΊΠΈ Π½Π° всСки ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π΅Π½ възСл. Вяхното мСстополоТСниС ΡΡŠΡ‰ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°; дирСктория ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ - /opt/cni/bin.

ΠšΠΎΠ³Π°Ρ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, ΠΏΡŠΡ‚ΠΈΡ‰Π°Ρ‚Π° Π·Π° Π΄Π²ΠΎΠΈΡ‡Π½ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π½Π° конфигурацията ΠΈ приставката ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Π·Π°Π΄Π°Π΄Π΅Π½ΠΈ Π² сСкцията [plugins.Β«io.containerd.grpc.v1.criΒ».cni] Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π΅Π½ Ρ„Π°ΠΉΠ» Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°.

Въй ΠΊΠ°Ρ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Flannel ΠΊΠ°Ρ‚ΠΎ наш ΠΌΡ€Π΅ΠΆΠΎΠ² доставчик, Π½Π΅ΠΊΠ° ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΌΠ°Π»ΠΊΠΎ Π·Π° настройката ΠΌΡƒ:

  • Flanneld (Π΄Π΅ΠΌΠΎΠ½ΡŠΡ‚ Π½Π° Flannel) ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ сС инсталира Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ ΠΊΠ°Ρ‚ΠΎ DaemonSet с install-cni ΠΊΠ°Ρ‚ΠΎ init ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€.
  • Install-cni създава CNI ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π΅Π½ Ρ„Π°ΠΉΠ» (/etc/cni/net.d/10-flannel.conflist) във всСки възСл.
  • Flanneld създава vxlan устройство, ΠΈΠ·Π²Π»ΠΈΡ‡Π° ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½ΠΈ ΠΎΡ‚ API ΡΡŠΡ€Π²ΡŠΡ€Π° ΠΈ слСди Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈΡ‚Π΅ Π½Π° pod. Π”ΠΎΠΊΠ°Ρ‚ΠΎ сС ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚, Ρ‚ΠΎΠΉ разпространява ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈ Π΄ΠΎ всички ΠΏΠΎΠ΄ΠΎΠ²Π΅ Π² цСлия ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€.
  • Π’Π΅Π·ΠΈ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈ позволяват Π½Π° ΠΌΠΎΠ΄ΡƒΠ»ΠΈΡ‚Π΅ Π΄Π° ΠΊΠΎΠΌΡƒΠ½ΠΈΠΊΠΈΡ€Π°Ρ‚ ΠΏΠΎΠΌΠ΅ΠΆΠ΄Ρƒ си Ρ‡Ρ€Π΅Π· IP адрСси.

Π—Π° ΠΏΠΎΠ²Π΅Ρ‡Π΅ информация относно Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° Flannel ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π²Π°ΠΌ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Π²Ρ€ΡŠΠ·ΠΊΠΈΡ‚Π΅ Π² края Π½Π° статията.

Π•Ρ‚ΠΎ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠ°Ρ‚Π° Π½Π° взаимодСйствиС ΠΌΠ΅ΠΆΠ΄Ρƒ приставката Containerd CRI ΠΈ приставкитС CNI:

Как ΠΏΠΎΠ΄ Π² Kubernetes ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π° IP адрСс

ΠšΠ°ΠΊΡ‚ΠΎ сС Π²ΠΈΠΆΠ΄Π° ΠΏΠΎ-Π³ΠΎΡ€Π΅, kubelet ΠΈΠ·Π²ΠΈΠΊΠ²Π° приставката Containerd CRI, Π·Π° Π΄Π° създадС ΠΏΠΎΠ΄, ΠΊΠΎΠΉΡ‚ΠΎ Π²Π΅Ρ‡Π΅ ΠΈΠ·Π²ΠΈΠΊΠ²Π° приставката CNI, Π·Π° Π΄Π° настрои ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° Π½Π° ΠΏΠΎΠ΄. Π’ Ρ‚ΠΎΠ·ΠΈ случай CNI ΠΏΠ»ΡŠΠ³ΠΈΠ½ΡŠΡ‚ Π½Π° мрСТовия доставчик ΠΈΠ·Π²ΠΈΠΊΠ²Π° Π΄Ρ€ΡƒΠ³ΠΈ основни CNI плъгини, Π·Π° Π΄Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ аспСкти Π½Π° ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π°.

ВзаимодСйствиС ΠΌΠ΅ΠΆΠ΄Ρƒ CNI Π΄ΠΎΠ±Π°Π²ΠΊΠΈ

Има Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ CNI плъгини, чиято Π·Π°Π΄Π°Ρ‡Π° Π΅ Π΄Π° ΠΏΠΎΠΌΠΎΠ³Π½Π°Ρ‚ Π·Π° настройванС Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²Π° комуникация ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ Π½Π° хоста. Π’Π°Π·ΠΈ статия Ρ‰Π΅ обсъди Ρ‚Ρ€ΠΈ ΠΎΡ‚ тях.

Flannel CNI плъгин

ΠšΠΎΠ³Π°Ρ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Flannel ΠΊΠ°Ρ‚ΠΎ ΠΌΡ€Π΅ΠΆΠΎΠ² доставчик, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΡŠΡ‚ Container CRI ΠΈΠ·Π²ΠΈΠΊΠ²Π° Flannel CNI плъгин, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ конфигурационния Ρ„Π°ΠΉΠ» Π½Π° CNI /etc/cni/net.d/10-flannel.conflist.

$ cat /etc/cni/net.d/10-flannel.conflist
{
  "name": "cni0",
  "plugins": [
    {
      "type": "flannel",
      "delegate": {
         "ipMasq": false,
        "hairpinMode": true,
        "isDefaultGateway": true
      }
    }
  ]
}

ΠŸΡ€ΠΈΡΡ‚Π°Π²ΠΊΠ°Ρ‚Π° Flannel CNI Ρ€Π°Π±ΠΎΡ‚ΠΈ във Π²Ρ€ΡŠΠ·ΠΊΠ° с Flanneld. По Π²Ρ€Π΅ΠΌΠ΅ Π½Π° стартиранС Flanneld ΠΈΠ·Π²Π»ΠΈΡ‡Π° podCIDR ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° подробности ΠΎΡ‚ API ΡΡŠΡ€Π²ΡŠΡ€Π° ΠΈ Π³ΠΈ записва във Ρ„Π°ΠΉΠ». /run/flannel/subnet.env.

FLANNEL_NETWORK=10.244.0.0/16 
FLANNEL_SUBNET=10.244.0.1/24
FLANNEL_MTU=1450 
FLANNEL_IPMASQ=false

ΠŸΡ€ΠΈΡΡ‚Π°Π²ΠΊΠ°Ρ‚Π° Flannel CNI ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π΄Π°Π½Π½ΠΈ ΠΎΡ‚ /run/flannel/subnet.env Π·Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½Π΅ ΠΈ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° bridge CNI плъгина.

Bridge CNI плъгин

Π’ΠΎΠ·ΠΈ плъгин сС ΠΈΠ·Π²ΠΈΠΊΠ²Π° със слСдната конфигурация:

{
  "name": "cni0",
  "type": "bridge",
  "mtu": 1450,
  "ipMasq": false,
  "isGateway": true,
  "ipam": {
    "type": "host-local",
    "subnet": "10.244.0.0/24"
  }
}

ΠŸΡŠΡ€Π²ΠΈΡΡ‚ ΠΏΡŠΡ‚, ΠΊΠΎΠ³Π°Ρ‚ΠΎ бъдС ΠΈΠ·Π²ΠΈΠΊΠ°Π½, Ρ‚ΠΎΠΉ създава Linux мост с Β«nameΒ»: Β«cni0Β», ΠΊΠΎΠ΅Ρ‚ΠΎ Π΅ посочСно Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° сС създава Π΄Π²ΠΎΠΉΠΊΠ° veth Π·Π° всяка капсула. Единият ΠΊΡ€Π°ΠΉ сС ΡΠ²ΡŠΡ€Π·Π²Π° с ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΎΡ‚ΠΎ пространство Π½Π° ΠΈΠΌΠ΅Π½Π°Ρ‚Π° Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, Π° другият ΠΊΡ€Π°ΠΉ сС ΡΠ²ΡŠΡ€Π·Π²Π° с Linux мост Π² ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° Π½Π° хоста. Bridge CNI плъгин ΡΠ²ΡŠΡ€Π·Π²Π° всички хост ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ към Linux мост Π² хост ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π°.

Π‘Π»Π΅Π΄ ΠΊΠ°Ρ‚ΠΎ Π΄Π²ΠΎΠΉΠΊΠ°Ρ‚Π° veth Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½Π°, приставката Bridge ΠΈΠ·Π²ΠΈΠΊΠ²Π° приставката IPAM CNI Π½Π° локалния хост. Π’ΠΈΠΏΡŠΡ‚ приставка IPAM ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½ Π² конфигурацията Π½Π° CNI, която приставката CRI ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° приставката Flannel CNI.

Π₯ост-Π»ΠΎΠΊΠ°Π»Π½ΠΈ IPAM CNI Π΄ΠΎΠ±Π°Π²ΠΊΠΈ

ΠœΠΎΡΡ‚ΠΎΠ²ΠΈ CNI Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€ΠΈ хост-Π»ΠΎΠΊΠ°Π»Π΅Π½ IPAM CNI плъгин със слСдната конфигурация:

{
  "name": "cni0",
  "ipam": {
    "type": "host-local",
    "subnet": "10.244.0.0/24",
    "dataDir": "/var/lib/cni/networks"
  }
}

Π₯ост-Π»ΠΎΠΊΠ°Π»Π΅Π½ IPAM плъгин (IP Aс адрСси MΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ - ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° IP адрСси) Π²Ρ€ΡŠΡ‰Π° IP адрСса Π·Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° ΠΎΡ‚ ΠΏΠΎΠ΄ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° ΠΈ ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° разпрСдСлСния IP Π½Π° хоста Π² дирСкторията, посочСна Π² Ρ€Π°Π·Π΄Π΅Π»Π° dataDir - /var/lib/cni/networks/<network-name=cni0>/<ip>. Π’ΠΎΠ·ΠΈ Ρ„Π°ΠΉΠ» ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, към ΠΊΠΎΠΉΡ‚ΠΎ Π΅ присвоСн дадСния IP адрСс.

ΠŸΡ€ΠΈ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° IPAM приставката Π·Π° Π»ΠΎΠΊΠ°Π»Π΅Π½ хост, тя Π²Ρ€ΡŠΡ‰Π° слСднитС Π΄Π°Π½Π½ΠΈ:

{
  "ip4": {
    "ip": "10.244.4.2",
    "gateway": "10.244.4.3"
  },
  "dns": {}
}

ΠžΠ±ΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅

Kube-controller-manager присвоява podCIDR Π½Π° всСки възСл. ΠŸΠΎΠ΄ΠΎΠ²Π΅Ρ‚Π΅ Π½Π° всСки възСл ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Ρ‚ IP адрСси ΠΎΡ‚ адрСсното пространство Π² разпрСдСлСния podCIDR Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½. Въй ΠΊΠ°Ρ‚ΠΎ podCIDR Π½Π° Π²ΡŠΠ·Π»ΠΈΡ‚Π΅ Π½Π΅ сС ΠΏΡ€ΠΈΠΏΠΎΠΊΡ€ΠΈΠ²Π°Ρ‚, всички ΠΏΠΎΠ΄ΠΎΠ²Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Ρ‚ ΡƒΠ½ΠΈΠΊΠ°Π»Π½ΠΈ IP адрСси.

ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡ‚Ρ€Π°Ρ‚ΠΎΡ€ΡŠΡ‚ Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° Kubernetes ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π° ΠΈ инсталира kubelet, срСда Π·Π° изпълнСниС Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, Π°Π³Π΅Π½Ρ‚ Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ² доставчик ΠΈ ΠΊΠΎΠΏΠΈΡ€Π° CNI Π΄ΠΎΠ±Π°Π²ΠΊΠΈΡ‚Π΅ към всСки възСл. По Π²Ρ€Π΅ΠΌΠ΅ Π½Π° стартиранС Π°Π³Π΅Π½Ρ‚ΡŠΡ‚ Π½Π° мрСТовия доставчик Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π° CNI конфигурация. ΠšΠΎΠ³Π°Ρ‚ΠΎ ΠΏΠΎΠ΄ Π΅ ΠΏΠ»Π°Π½ΠΈΡ€Π°Π½ към възСл, kubelet ΠΈΠ·Π²ΠΈΠΊΠ²Π° приставката CRI, Π·Π° Π΄Π° Π³ΠΎ създадС. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π°, Π°ΠΊΠΎ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, приставката Containerd CRI ΠΈΠ·Π²ΠΈΠΊΠ²Π° приставката CNI, посочСна Π² конфигурацията Π½Π° CNI, Π·Π° Π΄Π° настрои ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° Π½Π° pod. Π’ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π½Π° Ρ‚ΠΎΠ²Π° ΠΏΠΎΠ΄ΡŠΡ‚ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π° IP адрСс.

ΠžΡ‚Π½Π΅ ΠΌΠΈ извСстно Π²Ρ€Π΅ΠΌΠ΅, Π·Π° Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π° всички Ρ‚ΡŠΠ½ΠΊΠΎΡΡ‚ΠΈ ΠΈ нюанси Π½Π° всички Ρ‚Π΅Π·ΠΈ взаимодСйствия. Надявам сС, Ρ‡Π΅ натрупаният ΠΎΠΏΠΈΡ‚ Ρ‰Π΅ Π²ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅Ρ‚Π΅ ΠΏΠΎ-Π΄ΠΎΠ±Ρ€Π΅ ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚ΠΈ Kubernetes. Ако Π³Ρ€Π΅ΡˆΠ° Π·Π° Π½Π΅Ρ‰ΠΎ, моля ΡΠ²ΡŠΡ€ΠΆΠ΅Ρ‚Π΅ сС с ΠΌΠ΅Π½ Π½Π° Twitter ΠΈΠ»ΠΈ Π½Π° адрСс [ΠΈΠΌΠ΅ΠΉΠ» Π·Π°Ρ‰ΠΈΡ‚Π΅Π½]. ЧувствайтС сС свободни Π΄Π° сС ΡΠ²ΡŠΡ€ΠΆΠ΅Ρ‚Π΅, Π°ΠΊΠΎ искатС Π΄Π° ΠΎΠ±ΡΡŠΠ΄ΠΈΡ‚Π΅ аспСкти Π½Π° Ρ‚Π°Π·ΠΈ статия ΠΈΠ»ΠΈ Π½Π΅Ρ‰ΠΎ Π΄Ρ€ΡƒΠ³ΠΎ. Π©Π΅ сС Ρ€Π°Π΄Π²Π°ΠΌ Π΄Π° си ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ!

ΠŸΠΎΠ·ΠΎΠ²Π°Π²Π°Π½Π΅Ρ‚ΠΎ

ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ ΠΈ ΠΌΡ€Π΅ΠΆΠ°

Как дСйства Ρ„Π»Π°Π½Π΅Π»ΡŠΡ‚

CRI ΠΈ CNI

PS ΠΎΡ‚ ΠΏΡ€Π΅Π²ΠΎΠ΄Π°Ρ‡Π°

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

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

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