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 нСльзя Π½Π΅ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ: Π² этих дистрибутивах ΠΈ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… рСпозиториях отсутствуСт ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Docker, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ идСологичСски ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‚ собой ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Podman, Buildah (ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π² дистрибутивС ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ) ΠΈ CRI-O. Π­Ρ‚ΠΎ связано с практичСской Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ стандартов, Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ…, Π² Ρ‚ΠΎΠΌ числС, ΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Red Hat Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Open Container Initiative (OCI).

ЦСль OCI, ΡΠ²Π»ΡΡŽΡ‰Π΅ΠΉΡΡ Ρ‡Π°ΡΡ‚ΡŒΡŽ The Linux Foundation, β€” созданиС ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… ΠΈΠ½Π΄ΡƒΡΡ‚Ρ€ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… стандартов для Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ² ΠΈ исполняСмой срСды ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹ Ρ€Π΅ΡˆΠ°Π»ΠΈ сразу нСсколько Π·Π°Π΄Π°Ρ‡. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, Π½Π΅ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ философии Linux (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Ρ‚ΠΎΠΉ Π΅Ρ‘ части, Ρ‡Ρ‚ΠΎ каТдая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ ΠΎΠ΄Π½ΠΎ дСйствиС, Π° Docker прСдставляСт собой этакий ΠΊΠΎΠΌΠ±Π°ΠΉΠ½ всё-Π²-ΠΎΠ΄Π½ΠΎΠΌ). Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ ΡƒΡΡ‚Ρ€Π°Π½ΠΈΡ‚ΡŒ всС ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ΡΡ нСдостатки Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌ обСспСчСнии Docker. Π’-Ρ‚Ρ€Π΅Ρ‚ΡŒΠΈΡ…, Π±Ρ‹Π»ΠΈ Π±Ρ‹ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ совмСстимыми с бизнСс-трСбованиями, Π²Ρ‹Π΄Π²ΠΈΠ³Π°Π΅ΠΌΡ‹ΠΌΠΈ Π²Π΅Π΄ΡƒΡ‰ΠΈΠΌΠΈ коммСрчСскими ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°ΠΌΠΈ для развёртывания, управлСния ΠΈ обслуТивания ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Red Hat OpenShift).

НСдостатки Docker ΠΈ достоинства Π½ΠΎΠ²ΠΎΠ³ΠΎ ПО ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΈ довольно ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ описаны Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅, Π° с ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΌ описаниСм ΠΊΠ°ΠΊ всСго ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΠΎΠ³ΠΎ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° OCI стСка ПО ΠΈ Π΅Π³ΠΎ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹ΠΌΠΈ особСнностями ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ Π² ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΈ ΡΡ‚Π°Ρ‚ΡŒΡΡ… ΠΊΠ°ΠΊ ΠΎΡ‚ самой Red Hat (нСплохая ΡΡ‚Π°Ρ‚ΡŒΡ Π² Red Hat blog), Ρ‚Π°ΠΊ ΠΈ Π² сторонних ΠΎΠ±Π·ΠΎΡ€Π°Ρ….

Π’Π°ΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΠΎΠ³ΠΎ стСка:

  • Podman β€” нСпосрСдствСнноС взаимодСйствиС с ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°ΠΌΠΈ ΠΈ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠ² Ρ‡Π΅Ρ€Π΅Π· процСсс runC;
  • Buildah β€” сборка ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π² рССстр ΠΎΠ±Ρ€Π°Π·ΠΎΠ²;
  • CRI-O β€” исполняСмая срСда для систСм оркСстрации ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Kubernetes).

Π”ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ для понимания ΠΎΠ±Ρ‰Π΅ΠΉ схСмы взаимодСйствия ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ стСка цСлСсообразно привСсти здСсь схСму связСй Kubernetes c runC ΠΈ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ с использованиСм CRI-O:

CRI-O ΠΊΠ°ΠΊ Π·Π°ΠΌΠ΅Π½Π° Docker Π² качСствС исполняСмой срСды для Kubernetes: настройка Π½Π° CentOS 8

CRI-O ΠΈ Kubernetes ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Ρ†ΠΈΠΊΠ»Π° выпуска ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ (ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° совмСстимости ΠΎΡ‡Π΅Π½ΡŒ проста: ΠΌΠ°ΠΆΠΎΡ€Π½Ρ‹Π΅ вСрсии Kubernetes ΠΈ CRI-O ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚), Π° это, с ΡƒΡ‡Ρ‘Ρ‚ΠΎΠΌ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€Π° Π½Π° ΠΏΠΎΠ»Π½ΠΎΠ΅ ΠΈ всСстороннСС тСстированиС Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π΄Π°Π½Π½ΠΎΠ³ΠΎ стСка Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ, Π΄Π°Ρ‘Ρ‚ Π½Π°ΠΌ ΠΏΡ€Π°Π²ΠΎ ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ максимально достиТимой ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π² Ρ€Π°Π±ΠΎΡ‚Π΅ ΠΏΡ€ΠΈ Π»ΡŽΠ±Ρ‹Ρ… сцСнариях использования (здСсь Π½Π° ΠΏΠΎΠ»ΡŒΠ·Ρƒ ΠΈΠ΄Π΅Ρ‚ ΠΈ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Π»Π΅Π³ΠΊΠΎΠ²Π΅ΡΠ½ΠΎΡΡ‚ΡŒ CRI-O ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Docker Π² силу Ρ†Π΅Π»Π΅Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½ΠΎΠ³ΠΎ ограничСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ).

ΠŸΡ€ΠΈ установкС Kubernetes Β«right wayΒ» способом (ΠΏΠΎ мнСнию OCI, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ) с использованиСм CRI-O Π½Π° CentOS 8 ΠΌΡ‹ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΠ»ΠΈΡΡŒ с нСбольшими затруднСниями, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅, ΠΎΠ΄Π½Π°ΠΊΠΎ, ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΏΡ€Π΅ΠΎΠ΄ΠΎΠ»Π΅Π»ΠΈ. Π‘ΡƒΠ΄Ρƒ Ρ€Π°Π΄ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ с Π²Π°ΠΌΠΈ инструкциСй ΠΏΠΎ установкС ΠΈ настройкС, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² совокупности Π·Π°ΠΉΠΌΡƒΡ‚ ΠΎΡ‚ силы 10 ΠΌΠΈΠ½ΡƒΡ‚.

Как Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Kubernetes Π½Π° CentOS 8 с использованиСм срСды CRI-O

ΠŸΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ условия: Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ ΠΎΠ΄Π½ΠΎΠ³ΠΎ хоста (2 cores, 4 GB RAM, Π½Π°ΠΊΠΎΠΏΠΈΡ‚Π΅Π»ΡŒ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ 15 GB) с установлСнной CentOS 8 (рСкомСндуСтся ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ установки Β«ServerΒ»), Π° Ρ‚Π°ΠΊΠΆΠ΅ записи для Π½Π΅Π³ΠΎ Π² локальном DNS (Π² ΠΊΡ€Π°ΠΉΠ½Π΅ΠΌ случаС ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ записью Π² /etc/hosts). И Π½Π΅ Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ swap.

ВсС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π° хостС ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌ ΠΎΡ‚ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ root, Π±ΡƒΠ΄ΡŒΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹.

  1. На ΠΏΠ΅Ρ€Π²ΠΎΠΌ шагС настроим ОБ, установим ΠΈ настроим ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ зависимости для CRI-O.
    • Обновим ОБ:
      dnf -y update
      

    • Π”Π°Π»Π΅Π΅ трСбуСтся Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ„Π°ΠΉΡ€Π²ΠΎΠ»Π» ΠΈ SELinux. Π—Π΄Π΅ΡΡŒ Ρƒ нас всё зависит ΠΎΡ‚ окруТСния, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ наш хост ΠΈΠ»ΠΈ хосты. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π»ΠΈΠ±ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ„Π°ΠΉΡ€Π²ΠΎΠ»Π» ΠΏΠΎ рСкомСндациям ΠΈΠ· Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, Π»ΠΈΠ±ΠΎ, Ссли Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ΡΡŒ Π² Π΄ΠΎΠ²Π΅Ρ€Π΅Π½Π½ΠΎΠΉ сСти ΠΈΠ»ΠΈ примСняСтС сторонний Ρ„Π°ΠΉΡ€Π²ΠΎΠ»Π», ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π·ΠΎΠ½Ρƒ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π½Π° Π΄ΠΎΠ²Π΅Ρ€Π΅Π½Π½ΡƒΡŽ ΠΈΠ»ΠΈ Π²Ρ‹ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΡ€Π²ΠΎΠ»Π»:
      firewall-cmd --set-default-zone trusted
      
      firewall-cmd --reload

      Π§Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΡ€Π²ΠΎΠ»Π» ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

      systemctl disable --now firewalld
      

      SELinux трСбуСтся Π²Ρ‹ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π»ΠΈΠ±ΠΎ пСрСвСсти Π² Ρ€Π΅ΠΆΠΈΠΌ Β«permissiveΒ»:

      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

    • Π’Ρ‚ΠΎΡ€ΠΎΠΉ Π²Π°ΠΆΠ½Ρ‹ΠΉ нюанс: Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΡ‹ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π΄Π΅ΠΌΠΎΠ½ Docker, Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π΄Π΅ΠΌΠΎΠ½ 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, ΠΈ Π΅Π³ΠΎ настройка Ρ‡Π΅Ρ€Π΅Π· Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ kubelet устарСла (Π½Π° Ρ‡Ρ‚ΠΎ прямо ΡƒΠΊΠ°Π·Π°Π½ΠΎ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ), Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² Ρ„Π°ΠΉΠ» Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹, ΠΈΠ½Π°Ρ‡Π΅ наш кластСр Π½Π΅ инициализируСтся:
      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

    • Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π΅ΠΌΠΎΠ½ kubelet:
      sudo systemctl enable --now kubelet
      

      Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ control-plane ΠΈΠ»ΠΈ worker Π½ΠΎΠ΄Ρ‹ Π·Π° считанныС ΠΌΠΈΠ½ΡƒΡ‚Ρ‹, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ этим скриптом.

  3. ΠŸΠΎΡ€Π° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ наш кластСр.
    • Для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ кластСра Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:
      kubeadm init --pod-network-cidr=10.244.0.0/16
      

      ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ присоСдинСния ΠΊ кластСру Β«kubeadm join …Β», ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ прСдлагаСтся Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΊΠΎΠ½Ρ†Π΅ Π²Ρ‹Π²ΠΎΠ΄Π°, Π»ΠΈΠ±ΠΎ, ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Ρ‚ΠΎΠΊΠ΅Π½Ρ‹.

    • Установим ΠΏΠ»Π°Π³ΠΈΠ½ (CNI) для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Pod network. Π― Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Calico. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π±ΠΎΠ»Π΅Π΅ популярный Flannel ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒΡŽ с nftables, Π΄Π° ΠΈ Calico β€” СдинствСнная рСализация CNI, рСкомСндуСмая ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ протСстированная ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ Kubernetes:
      kubectl --kubeconfig /etc/kubernetes/admin.conf apply -f https://docs.projectcalico.org/v3.15/manifests/calico.yaml 

    • Для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ worker Π½ΠΎΠ΄Ρ‹ ΠΊ Π½Π°ΡˆΠ΅ΠΌΡƒ кластСру Π΅Ρ‘ трСбуСтся Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΏΠΎ ΠΏΡƒΠ½ΠΊΡ‚Π°ΠΌ инструкции 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, Π½ΠΎ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ с ΡƒΠ΄ΠΎΠ²ΠΎΠ»ΡŒΡΡ‚Π²ΠΈΠ΅ΠΌ Π·Π° этим ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ. Π‘Π²ΠΎΠΈΠΌ ΠΌΠ½Π΅Π½ΠΈΠ΅ΠΌ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ прямо сСйчас Π² коммСнтариях.

Stay tuned!

Данная ΡΡ‚Π°Ρ‚ΡŒΡ появилась благодаря ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ источникам:



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

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ