CRI-O ΠΊΠ°Ρ‚ΠΎ замСститСл Π½Π° Docker ΠΊΠ°Ρ‚ΠΎ срСда Π·Π° изпълнСниС Π½Π° Kubernetes: настройка Π½Π° CentOS 8

Π—Π΄Ρ€Π°Π²Π΅ΠΉΡ‚Π΅! Казвам сС Π‘Π΅Ρ€Π³Π΅ΠΉ, Π°Π· съм DevOps Π² Surf. ΠžΡ‚Π΄Π΅Π»ΡŠΡ‚ DevOps Π² Surf ΠΈΠΌΠ° Π·Π° Ρ†Π΅Π» Π½Π΅ само Π΄Π° установи взаимодСйствиС ΠΌΠ΅ΠΆΠ΄Ρƒ спСциалисти ΠΈ Π΄Π° ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π° Ρ€Π°Π±ΠΎΡ‚Π½ΠΈ процСси, Π½ΠΎ ΠΈ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ Π΄Π° ΠΏΡ€ΠΎΡƒΡ‡Π²Π° ΠΈ внСдрява Ρ‚Π΅ΠΊΡƒΡ‰ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΊΠ°ΠΊΡ‚ΠΎ Π² собствСната си инфраструктура, Ρ‚Π°ΠΊΠ° ΠΈ Π² инфраструктурата Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°.

По-Π΄ΠΎΠ»Ρƒ Ρ‰Π΅ говоря ΠΌΠ°Π»ΠΊΠΎ Π·Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π² тСхнологичния стСк Π·Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ срСщнахмС, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ ΠΈΠ·ΡƒΡ‡Π°Π²Π°Ρ…ΠΌΠ΅ разпространСниСто CentOS 8 ΠΈ Π·Π° Ρ‚ΠΎΠ²Π° ΠΊΠ°ΠΊΠ²ΠΎ Π΅ CRI-O ΠΈ ΠΊΠ°ΠΊ Π±ΡŠΡ€Π·ΠΎ Π΄Π° настроитС изпълнима срСда Π·Π° Kubernetes.

CRI-O ΠΊΠ°Ρ‚ΠΎ замСститСл Π½Π° Docker ΠΊΠ°Ρ‚ΠΎ срСда Π·Π° изпълнСниС Π½Π° Kubernetes: настройка Π½Π° CentOS 8

Π—Π°Ρ‰ΠΎ Docker Π½Π΅ Π΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ Π² CentOS 8?

Π‘Π»Π΅Π΄ инсталиранС Π½Π° Π½Π°ΠΉ-Π½ΠΎΠ²ΠΈΡ‚Π΅ Π³ΠΎΠ»Π΅ΠΌΠΈ вСрсии RHEL 8 ΠΈΠ»ΠΈ CentOS 8 Ρ‡ΠΎΠ²Π΅ΠΊ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π΅ Π·Π°Π±Π΅Π»Π΅ΠΆΠΈ: Ρ‚Π΅Π·ΠΈ дистрибуции ΠΈ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»Π½ΠΈ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° Π½Π΅ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Ρ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π΄ΠΎΠΊΠ΅Ρ€, ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠ΄Π΅ΠΉΠ½ΠΎ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π½ΠΎ замСстват ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈΡ‚Π΅ Подман, Buildah (ΠΏΡ€ΠΈΡΡŠΡΡ‚Π²Π° Π² дистрибуцията ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅) ΠΈ CRI-O. Π’ΠΎΠ²Π° сС дълТи Π½Π° практичСското ΠΏΡ€ΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° стандарти, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π΅Π½ΠΈ, Π½Π°Ρ€Π΅Π΄ с Π΄Ρ€ΡƒΠ³ΠΈ Π½Π΅Ρ‰Π°, ΠΎΡ‚ Red Hat ΠΊΠ°Ρ‚ΠΎ част ΠΎΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Open Container Initiative (OCI).

Π¦Π΅Π»Ρ‚Π° Π½Π° OCI, която Π΅ част ΠΎΡ‚ The Linux Foundation, Π΅ Π΄Π° създадС ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ΠΈ индустриални стандарти Π·Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π½ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈ ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π° Π·Π° изпълнСниС, ΠΊΠΎΠΈΡ‚ΠΎ Ρ€Π΅ΡˆΠ°Π²Π°Ρ‚ няколко ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ. ΠŸΡŠΡ€Π²ΠΎ, Ρ‚Π΅ Π½Π΅ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡Π°Ρ‚ Π½Π° философията Π½Π° Linux (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π² частта, Ρ‡Π΅ всяка ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° трябва Π΄Π° изпълнява Π΅Π΄Π½ΠΎ дСйствиС, ΠΈ Π΄ΠΎΠΊΠ΅Ρ€ Π΅ Π΅Π΄ΠΈΠ½ Π²ΠΈΠ΄ ΠΊΠΎΠΌΠ±Π°ΠΉΠ½ всичко Π² Π΅Π΄Π½ΠΎ). Π’Ρ‚ΠΎΡ€ΠΎ, Ρ‚Π΅ Π±ΠΈΡ…Π° ΠΌΠΎΠ³Π»ΠΈ Π΄Π° ΠΏΡ€Π΅ΠΌΠ°Ρ…Π½Π°Ρ‚ всички ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ΠΈ Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ†ΠΈ Π² софтуСра Π΄ΠΎΠΊΠ΅Ρ€. Π’Ρ€Π΅Ρ‚ΠΎ, Ρ‚Π΅ Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ напълно ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΈ с бизнСс изискванията Π½Π° Π²ΠΎΠ΄Π΅Ρ‰ΠΈ комСрсиални ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΈ Π·Π° внСдряванС, ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈ обслуТванС Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π½ΠΈ прилоТСния (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Red Hat OpenShift).

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡ Π΄ΠΎΠΊΠ΅Ρ€ ΠΈ прСдимствата Π½Π° новия софтуСр Π²Π΅Ρ‡Π΅ са описани ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Π² Ρ‚Π°Π·ΠΈ статия, Π° ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ описаниС Π½Π° цСлия софтуСрСн стСк, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π½ Π² Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° OCI, ΠΈ Π½Π΅Π³ΠΎΠ²ΠΈΡ‚Π΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½ΠΈ характСристики ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Π½Π°ΠΌΠ΅Ρ€Π΅Π½ΠΈ Π² ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»Π½Π°Ρ‚Π° докумСнтация ΠΈ статии ΠΎΡ‚ самия Red Hat (Π½Π΅ Π΅ лошо статия Π² Π±Π»ΠΎΠ³Π° Π½Π° Red Hat) ΠΈ Π½Π° Ρ‚Ρ€Π΅Ρ‚ΠΈ страни ΠΏΡ€Π΅Π³Π»Π΅Π΄ΠΈ.

Π’Π°ΠΆΠ½ΠΎ Π΅ Π΄Π° сС ΠΎΡ‚Π±Π΅Π»Π΅ΠΆΠΈ ΠΊΠ°ΠΊΠ²Π° функционалност ΠΈΠΌΠ°Ρ‚ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈΡ‚Π΅ Π½Π° прСдлоТСния стСк:

  • Подман β€” Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ взаимодСйствиС с ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ ΠΈ ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π½Π° изобраТСния Ρ‡Ρ€Π΅Π· процСса runC;
  • Buildah β€” сглобяванС ΠΈ ΠΊΠ°Ρ‡Π²Π°Π½Π΅ Π½Π° изобраТСния Π² Ρ€Π΅Π³ΠΈΡΡ‚ΡŠΡ€Π°;
  • CRI-O β€” изпълнима срСда Π·Π° систСми Π·Π° оркСстриранС Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Kubernetes).

Мисля, Ρ‡Π΅ Π·Π° Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅Ρ‚Π΅ ΠΎΠ±Ρ‰Π°Ρ‚Π° схСма Π½Π° взаимодСйствиС ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈΡ‚Π΅ Π½Π° стСка, Π΅ ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Π΄Π° прСдоставитС Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠ° Π½Π° Π²Ρ€ΡŠΠ·ΠΊΠ° Ρ‚ΡƒΠΊ Kubernetes c Ρ‚ΠΈΡ‡Π°ΠΌC ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΎΡ‚ ниско Π½ΠΈΠ²ΠΎ CRI-O:

CRI-O ΠΊΠ°Ρ‚ΠΎ замСститСл Π½Π° Docker ΠΊΠ°Ρ‚ΠΎ срСда Π·Π° изпълнСниС Π½Π° Kubernetes: настройка Π½Π° CentOS 8

CRI-O ΠΈ Kubernetes сС ΠΏΡ€ΠΈΠ΄ΡŠΡ€ΠΆΠ°Ρ‚ към Π΅Π΄ΠΈΠ½ ΠΈ ΡΡŠΡ‰ Ρ†ΠΈΠΊΡŠΠ» Π½Π° освобоТдаванС ΠΈ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° (ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°Ρ‚Π° Π·Π° ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ проста: основни вСрсии Kubernetes ΠΈ CRI-O ΡΡŠΠ²ΠΏΠ°Π΄Π°Ρ‚), ΠΈ Ρ‚ΠΎΠ²Π°, ΠΊΠ°Ρ‚ΠΎ сС ΠΈΠΌΠ° ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ Ρ„ΠΎΠΊΡƒΡΡŠΡ‚ Π²ΡŠΡ€Ρ…Ρƒ ΠΏΡŠΠ»Π½ΠΎΡ‚ΠΎ ΠΈ всСобхватно тСстванС Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° Ρ‚ΠΎΠ·ΠΈ стСк ΠΎΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅, Π½ΠΈ Π΄Π°Π²Π° ΠΏΡ€Π°Π²ΠΎΡ‚ΠΎ Π΄Π° ΠΎΡ‡Π°ΠΊΠ²Π°ΠΌΠ΅ максимално постиТима стабилност ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΡ€ΠΈ всякакви сцСнарии Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ (относитСлната Π»Π΅ΠΊΠΎΡ‚Π° ΡΡŠΡ‰ΠΎ Π΅ ΠΎΡ‚ ΠΏΠΎΠ»Π·Π° Ρ‚ΡƒΠΊ CRI-O Π² сравнСниС с Π΄ΠΎΠΊΠ΅Ρ€ ΠΏΠΎΡ€Π°Π΄ΠΈ цСлСнасочСно ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π°Π²Π°Π½Π΅ Π½Π° функционалността).

ΠŸΡ€ΠΈ инсталиранС Kubernetes "ΠΏΡ€Π°Π²ΠΈΠ»Π΅Π½ Π½Π°Ρ‡ΠΈΠ½" Π½Π°Ρ‡ΠΈΠ½ (Ρ€Π°Π·Π±ΠΈΡ€Π° сС спорСд OCI). CRI-O Π½Π° CentOS 8 Π‘Ρ€Π΅Ρ‰Π½Π°Ρ…ΠΌΠ΅ някои Π΄Ρ€Π΅Π±Π½ΠΈ затруднСния, ΠΊΠΎΠΈΡ‚ΠΎ ΠΎΠ±Π°Ρ‡Π΅ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ прСодоляхмС. Π©Π΅ сС Ρ€Π°Π΄Π²Π°ΠΌ Π΄Π° сподСля с вас инструкции Π·Π° инсталиранС ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½Π΅, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΎΠ±Ρ‰ΠΎ Ρ‰Π΅ ΠΎΡ‚Π½Π΅ΠΌΠ΅ ΠΎΠΊΠΎΠ»ΠΎ 10 ΠΌΠΈΠ½ΡƒΡ‚ΠΈ.

Как Π΄Π° Π²Π½Π΅Π΄Ρ€ΠΈΡ‚Π΅ Kubernetes Π½Π° CentOS 8 с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Ρ€Π°ΠΌΠΊΠ°Ρ‚Π° CRI-O

НСобходими условия: Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π½Π° ΠΏΠΎΠ½Π΅ Π΅Π΄ΠΈΠ½ хост (2 ядра, 4 GB RAM, място Π·Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΎΡ‚ ΠΏΠΎΠ½Π΅ 15 GB) с инсталиран CentOS 8 (ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π²Π° сС инсталационСн ΠΏΡ€ΠΎΡ„ΠΈΠ» β€œServer”), ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ записи Π·Π° Π½Π΅Π³ΠΎ Π² локалния DNS (Π² ΠΊΡ€Π°Π΅Π½ случай ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΌΠΈΠ½Π΅Ρ‚Π΅ с запис Π² /etc/hosts). И Π½Π΅ забравяйтС Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°ΠΉΡ‚Π΅ размяната.

Π˜Π·Π²ΡŠΡ€ΡˆΠ²Π°ΠΌΠ΅ всички ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π° хоста ΠΊΠ°Ρ‚ΠΎ root ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π», Π±ΡŠΠ΄Π΅Ρ‚Π΅ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»Π½ΠΈ.

  1. Π’ ΠΏΡŠΡ€Π²Π°Ρ‚Π° ΡΡ‚ΡŠΠΏΠΊΠ° Ρ‰Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°ΠΌΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ‚Π° систСма, Ρ‰Π΅ инсталирамС ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°ΠΌΠ΅ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»Π½ΠΈΡ‚Π΅ зависимости Π·Π° CRI-O.
    • НСка Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°ΠΌΠ΅ ОБ:
      dnf -y update
      

    • Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° трябва Π΄Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Ρ‚Π΅ Π·Π°Ρ‰ΠΈΡ‚Π½Π°Ρ‚Π° стСна ΠΈ SELinux. Π’ΡƒΠΊ всичко зависи ΠΎΡ‚ срСдата, Π² която Π½Π°ΡˆΠΈΡΡ‚ хост ΠΈΠ»ΠΈ хостовС Ρ‰Π΅ работят. ΠœΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ»ΠΈ Π΄Π° настроитС Π·Π°Ρ‰ΠΈΡ‚Π½Π° стСна спорСд ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΠΊΠΈΡ‚Π΅ ΠΎΡ‚ докумСнтацияили, Π°ΠΊΠΎ стС Π² Π½Π°Π΄Π΅ΠΆΠ΄Π½Π° ΠΌΡ€Π΅ΠΆΠ° ΠΈΠ»ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Π·Π°Ρ‰ΠΈΡ‚Π½Π° стСна Π½Π° Ρ‚Ρ€Π΅Ρ‚Π° страна, ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅Ρ‚Π΅ Π·ΠΎΠ½Π°Ρ‚Π° ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π½Π° Π½Π°Π΄Π΅ΠΆΠ΄Π½Π° ΠΈΠ»ΠΈ ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Ρ‚Π΅ Π·Π°Ρ‰ΠΈΡ‚Π½Π°Ρ‚Π° стСна:
      firewall-cmd --set-default-zone trusted
      
      firewall-cmd --reload

      Π—Π° Π΄Π° ΠΈΠ·ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ Π·Π°Ρ‰ΠΈΡ‚Π½Π°Ρ‚Π° стСна, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ слСдната ΠΊΠΎΠΌΠ°Π½Π΄Π°:

      systemctl disable --now firewalld
      

      SELinux трябва Π΄Π° бъдС ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ ΠΈΠ»ΠΈ ΠΏΡ€Π΅Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ Π½Π° β€žΡ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚Π΅Π»Π΅Π½β€œ Ρ€Π΅ΠΆΠΈΠΌ:

      setenforce 0
      
      sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

    • Π—Π°Ρ€Π΅Π΄Π΅Ρ‚Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈΡ‚Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ Π½Π° ядрото, ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°ΠΉΡ‚Π΅ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎΡ‚ΠΎ Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΌΠΎΠ΄ΡƒΠ»Π° β€žbr_netfilterβ€œ ΠΏΡ€ΠΈ стартиранС Π½Π° систСмата:
      modprobe overlay
      
      modprobe br_netfilter
      
      echo "br_netfilter" >> /etc/modules-load.d/br_netfilter.conf
      
      dnf -y install iproute-tc
      

    • Π—Π° Π΄Π° Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Ρ‚Π΅ ΠΏΡ€Π΅ΠΏΡ€Π°Ρ‰Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π½Π°Ρ‚Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°, Ρ‰Π΅ Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΈΡ‚Π΅ настройки:
      cat > /etc/sysctl.d/99-kubernetes-cri.conf <<EOF
      net.bridge.bridge-nf-call-iptables = 1
      net.ipv4.ip_forward = 1
      net.bridge.bridge-nf-call-ip6tables = 1
      EOF
      

      ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΏΡ€Π°Π²Π΅Π½ΠΈΡ‚Π΅ настройки:

      sysctl --system

    • Π·Π°Π΄Π°ΠΉΡ‚Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ°Ρ‚Π° вСрсия CRI-O (основна вСрсия CRI-O, ΠΊΠ°ΠΊΡ‚ΠΎ Π²Π΅Ρ‡Π΅ бСшС спомСнато, отговарят Π½Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ°Ρ‚Π° вСрсия Kubernetes), ΠΎΡ‚ послСдната стабилна вСрсия Kubernetes Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° 1.18:
      export REQUIRED_VERSION=1.18
      

      Π΄ΠΎΠ±Π°Π²Π΅Ρ‚Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈΡ‚Π΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°:

      dnf -y install 'dnf-command(copr)'
      
      dnf -y copr enable rhcontainerbot/container-selinux
      
      curl -L -o /etc/yum.repos.d/devel:kubic:libcontainers:stable.repo https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable/CentOS_8/devel:kubic:libcontainers:stable.repo
      
      curl -L -o /etc/yum.repos.d/devel:kubic:libcontainers:stable:cri-o:$REQUIRED_VERSION.repo https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable:cri-o:$REQUIRED_VERSION/CentOS_8/devel:kubic:libcontainers:stable:cri-o:$REQUIRED_VERSION.repo

    • сСга ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° инсталирамС CRI-O:
      dnf -y install cri-o
      

      ΠžΠ±ΡŠΡ€Π½Π΅Ρ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΏΡŠΡ€Π²ΠΈΡ нюанс, ΠΊΠΎΠΉΡ‚ΠΎ срСщамС ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° инсталационния процСс: трябва Π΄Π° Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€Π°Ρ‚Π΅ конфигурацията CRI-O ΠΏΡ€Π΅Π΄ΠΈ стартиранС Π½Π° услугата, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ нСобходимият conmon ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΈΠΌΠ° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΎ мСстополоТСниС ΠΎΡ‚ посочСното:

      sed -i 's//usr/libexec/crio/conmon//usr/bin/conmon/' /etc/crio/crio.conf

      Π‘Π΅Π³Π° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Ρ‚Π΅ ΠΈ стартиратС Π΄Π΅ΠΌΠΎΠ½Π° CRI-O:

      systemctl enable --now crio
      

      ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚Π΅ ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Π΄Π΅ΠΌΠΎΠ½Π°:

      systemctl status crio
      

  2. Π˜Π½ΡΡ‚Π°Π»ΠΈΡ€Π°Π½Π΅ ΠΈ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½Π΅ Kubernetes.
    • НСка Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡ‚ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅:
      cat <<EOF > /etc/yum.repos.d/kubernetes.repo
      [kubernetes]
      name=Kubernetes
      baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-$basearch
      enabled=1
      gpgcheck=1
      repo_gpgcheck=1
      gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
      exclude=kubelet kubeadm kubectl
      EOF
      

      Π‘Π΅Π³Π° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° инсталирамС Kubernetes (вСрсия 1.18, ΠΊΠ°ΠΊΡ‚ΠΎ Π΅ спомСнато ΠΏΠΎ-Π³ΠΎΡ€Π΅):

      dnf install -y kubelet-1.18* kubeadm-1.18* kubectl-1.18* --disableexcludes=kubernetes

    • Вторият Π²Π°ΠΆΠ΅Π½ нюанс: Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Π½Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π΄Π΅ΠΌΠΎΠ½ Π΄ΠΎΠΊΠ΅Ρ€, Π½ΠΎ Π½ΠΈΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π΄Π΅ΠΌΠΎΠ½Π° CRI-O, ΠΏΡ€Π΅Π΄ΠΈ стартиранС ΠΈ инициализация Kubernetes трябва Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΈΡ‚Π΅ настройки Π² конфигурационния Ρ„Π°ΠΉΠ» /var/lib/kubelet/config.yaml, ΠΊΠ°Ρ‚ΠΎ ΠΏΡŠΡ€Π²ΠΎ стС създали ΠΆΠ΅Π»Π°Π½Π°Ρ‚Π° дирСктория:
      mkdir /var/lib/kubelet
      
      cat <<EOF > /var/lib/kubelet/config.yaml
      apiVersion: kubelet.config.k8s.io/v1beta1
      kind: KubeletConfiguration
      cgroupDriver: systemd
      EOF

    • ВрСтият Π²Π°ΠΆΠ΅Π½ ΠΌΠΎΠΌΠ΅Π½Ρ‚, ΠΊΠΎΠΉΡ‚ΠΎ срСщамС ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° инсталацията: Π²ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ„Π°ΠΊΡ‚Π°, Ρ‡Π΅ смС посочили използвания Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ cgroupΠΈ Π½Π΅Π³ΠΎΠ²Π°Ρ‚Π° конфигурация Ρ‡Ρ€Π΅Π· ΠΏΡ€Π΅Π΄Π°Π΄Π΅Π½ΠΈΡ‚Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΈ ΠΊΡƒΠ±Π΅Π»Π΅Ρ‚ Π΅ остарял (ΠΊΠ°ΠΊΡ‚ΠΎ Π΅ ΠΈΠ·Ρ€ΠΈΡ‡Π½ΠΎ посочСно Π² докумСнтацията), трябва Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΈ към Ρ„Π°ΠΉΠ»Π°, Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π΅Π½ случай Π½Π°ΡˆΠΈΡΡ‚ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ няма Π΄Π° бъдС ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½:
      cat /dev/null > /etc/sysconfig/kubelet
      
      cat <<EOF > /etc/sysconfig/kubelet
      KUBELET_EXTRA_ARGS=--container-runtime=remote --cgroup-driver=systemd --container-runtime-endpoint='unix:///var/run/crio/crio.sock'
      EOF

    • Π‘Π΅Π³Π° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°ΠΌΠ΅ Π΄Π΅ΠΌΠΎΠ½Π° ΠΊΡƒΠ±Π΅Π»Π΅Ρ‚:
      sudo systemctl enable --now kubelet
      

      Π—Π° пСрсонализиранС ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½Π° Ρ€Π°Π²Π½ΠΈΠ½Π° ΠΈΠ»ΠΈ Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΊ възли Π·Π° ΠΌΠΈΠ½ΡƒΡ‚ΠΈ, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ с Ρ‚ΠΎΠ·ΠΈ скрипт.

  3. Π’Ρ€Π΅ΠΌΠ΅ Π΅ Π΄Π° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€Π°ΠΌΠ΅ нашия ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€.
    • Π—Π° Π΄Π° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‚Π΅ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°, ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π°:
      kubeadm init --pod-network-cidr=10.244.0.0/16
      

      НС забравяйтС Π΄Π° Π·Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° Π·Π° ΠΏΡ€ΠΈΡΡŠΠ΅Π΄ΠΈΠ½ΡΠ²Π°Π½Π΅ към ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° β€žkubeadm join...β€œ, която Ρ‰Π΅ Π±ΡŠΠ΄Π΅Ρ‚Π΅ ΠΏΠΎΠΌΠΎΠ»Π΅Π½ΠΈ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Π² края Π½Π° ΠΈΠ·Ρ…ΠΎΠ΄Π°, ΠΈΠ»ΠΈ ΠΏΠΎΠ½Π΅ посочСнитС Ρ‚ΠΎΠΊΠ΅Π½ΠΈ.

    • НСка инсталирамС плъгина (CNI) Π·Π° ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° Pod. ΠŸΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π²Π°ΠΌ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Π°ΠΌΠ΅Ρ€ΠΈΠΊΠ°Π½. ВСроятно ΠΏΠΎ-популярни Π±Π°Ρ€Ρ…Π΅Ρ‚ ΠΈΠΌΠ° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ със ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚Ρ‚Π° с nftables, Π΄Π° ΠΈ Π°ΠΌΠ΅Ρ€ΠΈΠΊΠ°Π½ - СдинствСното изпълнСниС Π½Π° CNI, ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π°Π½ΠΎ ΠΈ напълно тСствано ΠΎΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Kubernetes:
      kubectl --kubeconfig /etc/kubernetes/admin.conf apply -f https://docs.projectcalico.org/v3.15/manifests/calico.yaml 

    • Π—Π° Π΄Π° ΡΠ²ΡŠΡ€ΠΆΠ΅Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Π΅Π½ възСл към нашия ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€, трябва Π΄Π° Π³ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Ρ‚Π΅ съгласно инструкции 1 ΠΈ 2 ΠΈΠ»ΠΈ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ писмСност, слСд Ρ‚ΠΎΠ²Π° ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° ΠΎΡ‚ ΠΈΠ·Ρ…ΠΎΠ΄Π° β€žkubeadm init...β€œ, ΠΊΠΎΠΉΡ‚ΠΎ записахмС Π² ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½Π°Ρ‚Π° ΡΡ‚ΡŠΠΏΠΊΠ°:
      kubeadm join $CONTROL_PLANE_ADDRESS:6443 --token $TOKEN 
          --discovery-token-ca-cert-hash $TOKEN_HASH

    • НСка ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ Π΄Π°Π»ΠΈ Π½Π°ΡˆΠΈΡΡ‚ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½ ΠΈ Π·Π°ΠΏΠΎΡ‡Π½Π°Π» Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ:
      kubectl --kubeconfig=/etc/kubernetes/admin.conf get pods -A
      

    Π“ΠΎΡ‚ΠΎΠ²! Π’Π΅Ρ‡Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° хостватС ΠΏΠΎΠ»Π΅Π·Π½ΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΈ Π½Π° вашия ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ K8s.

Какво Π½ΠΈ Ρ‡Π°ΠΊΠ° Π·Π°Π½Π°ΠΏΡ€Π΅Π΄

Надявам сС, Ρ‡Π΅ инструкциитС ΠΏΠΎ-Π³ΠΎΡ€Π΅ са Π²ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π°Π»ΠΈ Π΄Π° спСститС Π²Ρ€Π΅ΠΌΠ΅ ΠΈ Π½Π΅Ρ€Π²ΠΈ.
Π Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΡŠΡ‚ ΠΎΡ‚ процСситС, ΠΏΡ€ΠΎΡ‚ΠΈΡ‡Π°Ρ‰ΠΈ Π² индустрията, чСсто зависи ΠΎΡ‚ Ρ‚ΠΎΠ²Π° ΠΊΠ°ΠΊ Ρ‚Π΅ сС ΠΏΡ€ΠΈΠ΅ΠΌΠ°Ρ‚ ΠΎΡ‚ ΠΏΠΎ-голямата част ΠΎΡ‚ ΠΊΡ€Π°ΠΉΠ½ΠΈΡ‚Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ Π½Π° Π΄Ρ€ΡƒΠ³ софтуСр Π² ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½Π°Ρ‚Π° ниша. ВсС ΠΎΡ‰Π΅ Π½Π΅ Π΅ съвсСм ясно Π΄ΠΎ ΠΊΠ°ΠΊΠ²ΠΎ Ρ‰Π΅ Π΄ΠΎΠ²Π΅Π΄Π°Ρ‚ ΠΈΠ½ΠΈΡ†ΠΈΠ°Ρ‚ΠΈΠ²ΠΈΡ‚Π΅ Π½Π° OCI слСд няколко Π³ΠΎΠ΄ΠΈΠ½ΠΈ, Π½ΠΎ Ρ‰Π΅ Π³ΠΈ Π³Π»Π΅Π΄Π°ΠΌΠ΅ с удоволствиС. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° сподСлитС Π²Π°ΡˆΠ΅Ρ‚ΠΎ ΠΌΠ½Π΅Π½ΠΈΠ΅ ΠΎΡ‰Π΅ сСга Π² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΡ‚Π΅.

ΠžΡΡ‚Π°Π½ΠΈ настроСн!

Π’Π°Π·ΠΈ статия сС появи Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π΅Π½ΠΈΠ΅ Π½Π° слСднитС ΠΈΠ·Ρ‚ΠΎΡ‡Π½ΠΈΡ†ΠΈ:



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

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