Π₯Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Π² кластСрС Kubernetes

ΠΠ°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Ρ… Π² кластСрС Kubernetes, ΠΌΠΎΠΆΠ½ΠΎ нСсколькими способами. Одни ΠΈΠ· Π½ΠΈΡ… ΡƒΠΆΠ΅ устарСли, Π΄Ρ€ΡƒΠ³ΠΈΠ΅ появились совсСм Π½Π΅Π΄Π°Π²Π½ΠΎ. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ рассмотрим ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡŽ Ρ‚Ρ€Ρ‘Ρ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π‘Π₯Π”, Π² Ρ‚ΠΎΠΌ числС самый послСдний β€” ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ‡Π΅Ρ€Π΅Π· Container Storage Interface.

Π₯Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Π² кластСрС Kubernetes

Бпособ 1. Π£ΠΊΠ°Π·Π°Π½ΠΈΠ΅ PV Π² манифСстС ΠΏΠΎΠ΄Π°

Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΉ манифСст, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠΉ ΠΏΠΎΠ΄ Π² кластСрС Kubernetes:

Π₯Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Π² кластСрС Kubernetes

Π¦Π²Π΅Ρ‚ΠΎΠΌ Π²Ρ‹Π΄Π΅Π»Π΅Π½Ρ‹ части манифСста, Π³Π΄Π΅ описано, ΠΊΠ°ΠΊΠΎΠΉ Ρ‚ΠΎΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΈ ΠΊΡƒΠ΄Π°.

Π’ Ρ€Π°Π·Π΄Π΅Π»Π΅ volumeMounts ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Ρ‚ΠΎΡ‡ΠΊΠΈ монтирования (mountPath) β€” Π² ΠΊΠ°ΠΊΠΎΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ постоянный Ρ‚ΠΎΠΌ, Π° Ρ‚Π°ΠΊΠΆΠ΅ имя Ρ‚ΠΎΠΌΠ°.

Π’ Ρ€Π°Π·Π΄Π΅Π»Π΅ x ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ всС Ρ‚ΠΎΠΌΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² ΠΏΠΎΠ΄Π΅. Π£ΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ имя ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ‚ΠΎΠΌΠ°, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ‚ΠΈΠΏ (Π² нашСм случаС: awsElasticBlockStore) ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ. КакиС ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ΡΡ Π² манифСстС, зависит ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° Ρ‚ΠΎΠΌΠ°.

Один ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ‚ΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ смонтирован ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π² нСсколько ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² ΠΏΠΎΠ΄Π°. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Ρ€Π°Π·Π½Ρ‹Π΅ процСссы прилоТСния ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ доступ ΠΊ ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ Π΄Π°Π½Π½Ρ‹ΠΌ.

Π­Ρ‚ΠΎΡ‚ способ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π»ΠΈ Π² самом Π½Π°Ρ‡Π°Π»Π΅, ΠΊΠΎΠ³Π΄Π° Kubernetes Ρ‚ΠΎΠ»ΡŒΠΊΠΎ зароТдался, ΠΈ Π½Π° сСгодня способ устарСл.

ΠŸΡ€ΠΈ Π΅Π³ΠΎ использовании Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ нСсколько ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ:

  1. всС Ρ‚ΠΎΠΌΠ° Π½Π°Π΄ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, Kubernetes Π½Π΅ смоТСт ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΈΡ‡Π΅Π³ΠΎ Π·Π° нас;
  2. ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ доступа ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΈΠ· Ρ‚ΠΎΠΌΠΎΠ² ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅, ΠΈ ΠΈΡ… Π½Π°Π΄ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π² манифСстах всСх ΠΏΠΎΠ΄ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Ρ‚ΠΎΠΌ;
  3. Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ систСму хранСния (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠ΅Ρ€Π΅Π΅Ρ…Π°Ρ‚ΡŒ ΠΈΠ· AWS Π² Google Cloud), Π½Π°Π΄ΠΎ ΠΌΠ΅Π½ΡΡ‚ΡŒ настройки ΠΈ Ρ‚ΠΈΠΏ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Ρ‘Π½Π½Ρ‹Ρ… Ρ‚ΠΎΠΌΠΎΠ² Π²ΠΎ всСх манифСстах.

Всё это ΠΎΡ‡Π΅Π½ΡŒ Π½Π΅ΡƒΠ΄ΠΎΠ±Π½ΠΎ, поэтому Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΌ способом ΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Ρ‚ΠΎΠΌΠΎΠ²: configMap, secret, emptyDir, hostPath:

  • configMap ΠΈ secret β€” слуТСбныС Ρ‚ΠΎΠΌΠ°, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π΅ Ρ‚ΠΎΠΌ с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ ΠΈΠ· манифСстов Kubernetes.

  • emptyDir β€” Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ Ρ‚ΠΎΠΌ, создаётся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° врСмя ΠΆΠΈΠ·Π½ΠΈ ΠΏΠΎΠ΄Π°. Π£Π΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для тСстирования ΠΈΠ»ΠΈ хранСния Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. Когда pod удаляСтся, Ρ‚ΠΎΠΌ Ρ‚ΠΈΠΏΠ° emptyDir Ρ‚ΠΎΠΆΠ΅ удаляСтся ΠΈ всС Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠΏΠ°Π΄Π°ΡŽΡ‚.

  • hostPath β€” позволяСт ΡΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€ΡŒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° с ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ любой ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ локального диска сСрвСра, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, β€” Π² Ρ‚ΠΎΠΌ числС /etc/kubernetes. Π­Ρ‚ΠΎ нСбСзопасная Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ, поэтому ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ бСзопасности Π·Π°ΠΏΡ€Π΅Ρ‰Π°ΡŽΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠΌΠ° этого Ρ‚ΠΈΠΏΠ°. Π˜Π½Π°Ρ‡Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊΠ° смоТСт Π·Π°ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€ΡŒ своСго ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ HTC Kubernetes ΠΈ ΡƒΠΊΡ€Π°ΡΡ‚ΡŒ всС сСртификаты кластСра. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Ρ‚ΠΎΠΌΠ° hostPath Ρ€Π°Π·Ρ€Π΅ΡˆΠ°ΡŽΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ систСмным прилоТСниям, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ Π² namespace kube-system.

CистСмы хранСния Π΄Π°Π½Π½Ρ‹Ρ…, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Kubernetes Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈΠ· ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

Бпособ 2. ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊ ΠΏΠΎΠ΄Π°ΠΌ SC/PVC/PV

ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ способ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ β€” концСпция Storage class, PersistentVolumeClaim, PersistentVolume.

Storage class Ρ…Ρ€Π°Π½ΠΈΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ систСмС хранСния Π΄Π°Π½Π½Ρ‹Ρ….

PersistentVolumeClaim описываСт трСбования ΠΊ Ρ‚ΠΎΠΌΡƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½ΡƒΠΆΠ΅Π½ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ.
PersistentVolume Ρ…Ρ€Π°Π½ΠΈΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ доступа ΠΈ статус Ρ‚ΠΎΠΌΠ°.

Π‘ΡƒΡ‚ΡŒ ΠΈΠ΄Π΅ΠΈ: Π² манифСстС ΠΏΠΎΠ΄Π° ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ volume Ρ‚ΠΈΠΏΠ° PersistentVolumeClaim ΠΈ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ этой сущности Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ claimName.

Π₯Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Π² кластСрС Kubernetes

Π’ манифСстС PersistentVolumeClaim ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ трСбования ΠΊ Ρ‚ΠΎΠΌΡƒ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ. Π’ Ρ‚ΠΎΠΌ числС:

  • Ρ€Π°Π·ΠΌΠ΅Ρ€ диска;
  • способ доступа: ReadWriteOnce ΠΈΠ»ΠΈ ReadWriteMany;
  • ссылка Π½Π° Storage class β€” Π² ΠΊΠ°ΠΊΠΎΠΉ систСмС хранСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ‚ΠΎΠΌ.

Π’ манифСстС Storage class хранятся Ρ‚ΠΈΠΏ ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ систСмС хранСния Π΄Π°Π½Π½Ρ‹Ρ…. Они Π½ΡƒΠΆΠ½Ρ‹ ΠΊΡƒΠ±Π»Π΅Ρ‚Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠΌ ΠΊ сСбС Π½Π° ΡƒΠ·Π΅Π».

Π’ манифСстах PersistentVolume указываСтся Storage class ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ доступа ΠΊ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌΡƒ Ρ‚ΠΎΠΌΡƒ (ID Ρ‚ΠΎΠΌΠ°, ΠΏΡƒΡ‚ΡŒ, ΠΈ Ρ‚. Π΄.).

Боздавая PVC, Kubernetes смотрит, Ρ‚ΠΎΠΌ ΠΊΠ°ΠΊΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΈ ΠΈΠ· ΠΊΠ°ΠΊΠΎΠ³ΠΎ Storage class потрСбуСтся, ΠΈ ΠΏΠΎΠ΄Π±ΠΈΡ€Π°Π΅Ρ‚ свободный PersistentVolume.

Если Ρ‚Π°ΠΊΠΈΡ… PV Π½Π΅Ρ‚ Π² Π½Π°Π»ΠΈΡ‡ΠΈΠΈ, Kubernetes ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ β€” Provisioner (Π΅Ρ‘ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π² Storage class). Π­Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΊ Π‘Π₯Π”, создаёт Ρ‚ΠΎΠΌ Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°, ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΈ создаСт Π² кластСрС Kubernetes манифСст PersistentVolume, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ связываСтся с PersistentVolumeClaim.

Всё это мноТСство абстракций позволяСт ΡƒΠ±Ρ€Π°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚ΠΎΠΌ, с ΠΊΠ°ΠΊΠΎΠΉ Π‘Π₯Π” Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, с уровня манифСста ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ администрирования.

ВсС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ систСмС хранСния Π΄Π°Π½Π½Ρ‹Ρ… находятся Π² Storage class, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‚ администраторы кластСра. Всё, Ρ‡Ρ‚ΠΎ Π½Π°Π΄ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΅Π·Π΄Π΅ ΠΈΠ· AWS Π² Google Cloud, β€” это Π² манифСстах прилоТСния ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Storage class Π² PVC. Persistance Volume для хранСния Π΄Π°Π½Π½Ρ‹Ρ… Π±ΡƒΠ΄ΡƒΡ‚ созданы Π² кластСрС автоматичСски, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Provisioner.

Бпособ 3. Container Storage Interface

Π’Π΅ΡΡŒ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ взаимодСйствуСт с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ систСмами хранСния Π΄Π°Π½Π½Ρ‹Ρ…, являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ ядра Kubernetes. Выпуск исправлСний ошибок ΠΈΠ»ΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π° привязан ΠΊ Π½ΠΎΠ²Ρ‹ΠΌ Ρ€Π΅Π»ΠΈΠ·Π°ΠΌ, ΠΊΠΎΠ΄ приходится ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ для всСх ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… вСрсий Kubernetes. Всё это тяТСло ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π».

Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΈΠ· Cloud Foundry, Kubernetes, Mesos ΠΈ Docker создали Container Storage Interface (CSI) β€” простой ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ интСрфСйс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ описываСт взаимодСйствиС систСмы управлСния ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°ΠΌΠΈ ΠΈ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° (CSI Driver), Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅Π³ΠΎ с ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Π‘Π₯Π”. Π’Π΅ΡΡŒ ΠΊΠΎΠ΄ ΠΏΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΈΡŽ с Π‘Π₯Π” вынСсли ΠΈΠ· ядра Kubernetes Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ систСму.

ДокумСнтация ΠΏΠΎ Container Storage Interface.

Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, CSI Driver состоит ΠΈΠ· Π΄Π²ΡƒΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ²: Node Plugin ΠΈ Controller plugin.

Node Plugin запускаСтся Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡƒΠ·Π»Π΅ ΠΈ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΎΠΌΠΎΠ² ΠΈ Π·Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π° Π½ΠΈΡ…. Controller plugin взаимодСйствуСт с Π‘Π₯Π”: создаСт ΠΈΠ»ΠΈ удаляСт Ρ‚ΠΎΠΌΠ°, Π½Π°Π·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΏΡ€Π°Π²Π° доступа ΠΈ Ρ‚. Π΄.

Пока Π² ядрС Kubernetes ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ старыС Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹, Π½ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈΠΌΠΈ ΡƒΠΆΠ΅ Π½Π΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽΡ‚ ΠΈ всСм ΡΠΎΠ²Π΅Ρ‚ΡƒΡŽΡ‚ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ CSI Driver ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ для Ρ‚ΠΎΠΉ систСмы, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ прСдстоит Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ.

НововвСдСниС ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΠΏΡƒΠ³Π°Ρ‚ΡŒ Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ ΡƒΠΆΠ΅ ΠΏΡ€ΠΈΠ²Ρ‹ΠΊ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Ρ‡Π΅Ρ€Π΅Π· Storage class, Π½ΠΎ Π½Π° самом Π΄Π΅Π»Π΅ Π½ΠΈΡ‡Π΅Π³ΠΎ ΡΡ‚Ρ€Π°ΡˆΠ½ΠΎΠ³ΠΎ Π½Π΅ ΡΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ. Для программистов Ρ‚ΠΎΡ‡Π½ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ мСняСтся β€” ΠΎΠ½ΠΈ ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΈΠΌΠ΅Π½Π΅ΠΌ Storage class, Ρ‚Π°ΠΊ ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚. Для администраторов добавилась установка helm chart ΠΈ помСнялась структура настроСк. Если Ρ€Π°Π½ΡŒΡˆΠ΅ настройки вводились Π² Storage class Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ, Ρ‚ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΈΡ… сначала Π½Π°Π΄ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ Π² helm chart, Π° ΠΏΠΎΡ‚ΠΎΠΌ ΡƒΠΆΠ΅ Π² Storage class. Если Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ, Π½ΠΈΡ‡Π΅Π³ΠΎ ΡΡ‚Ρ€Π°ΡˆΠ½ΠΎΠ³ΠΎ Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ.

Π”Π°Π²Π°ΠΉΡ‚Π΅, Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, рассмотрим ΠΊΠ°ΠΊΠΈΠ΅ прСимущСства ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ, пСрСйдя Π½Π° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π‘Π₯Π” Ceph с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ CSI Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°.

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Ceph ΠΏΠ»Π°Π³ΠΈΠ½ CSI Π΄Π°Ρ‘Ρ‚ большС возмоТностСй для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π‘Π₯Π”, Ρ‡Π΅ΠΌ встроСнныС Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹.

  1. ДинамичСскоС созданиС дисков. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ диски RBD ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ RWO, Π° CSI для Ceph позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ RWX. НСсколько pod’ΠΎΠ² Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… ΡƒΠ·Π»Π°Ρ… ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ RDB-диск ΠΊ сСбС Π½Π° ΡƒΠ·Π»Ρ‹ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π½ΠΈΠΌΠΈ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ. БправСдливости Ρ€Π°Π΄ΠΈ, Π½Π΅ всё Ρ‚Π°ΠΊ Π»ΡƒΡ‡Π΅Π·Π°Ρ€Π½ΠΎ β€” этот диск ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠ°ΠΊ Π±Π»ΠΎΡ‡Π½ΠΎΠ΅ устройство, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ придётся Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄ Ρ€Π°Π±ΠΎΡ‚Ρƒ с Π½ΠΈΠΌ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ мноТСствСнного доступа.
  2. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ½Π°ΠΏΡˆΠΎΡ‚ΠΎΠ². Π’ кластСрС Kubernetes ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ манифСст с Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΡΠ½Π°ΠΏΡˆΠΎΡ‚. Плагин CSI Π΅Π³ΠΎ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚ ΠΈ сдСлаСт ΡΠ½Π°ΠΏΡˆΠΎΡ‚ с диска. На Π΅Π³ΠΎ основании ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π»ΠΈΠ±ΠΎ бэкап, Π»ΠΈΠ±ΠΎ копию PersistentVolume.
  3. Π£Π²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° диска Π½Π° Π‘Π₯Π” ΠΈ PersistentVolume Π² кластСрС Kubernetes.
  4. ΠšΠ²ΠΎΡ‚Ρ‹. ВстроСнныС Π² Kubernetes Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹ CephFS Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ ΠΊΠ²ΠΎΡ‚Ρ‹, Π° свСТиС CSI-ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹ со свСТим Ceph Nautilus ΡƒΠΌΠ΅ΡŽΡ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΊΠ²ΠΎΡ‚Ρ‹ Π½Π° CephFS-Ρ€Π°Π·Π΄Π΅Π»Ρ‹.
  5. ΠœΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ. CSI-ΠΏΠ»Π°Π³ΠΈΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Π΄Π°Π²Π°Ρ‚ΡŒ Π² Prometheus мноТСство ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΎΠΌΠ° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹, ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠ΄ΡƒΡ‚ взаимодСйствия ΠΈ Ρ‚. Π΄.
  6. Topology aware. ΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π² манифСстах, ΠΊΠ°ΠΊ гСографичСски распрСдСлён кластСр, ΠΈ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ ΠΏΠΎΠ΄Π°ΠΌ, Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹ΠΌ Π² Π›ΠΎΠ½Π΄ΠΎΠ½Π΅ систСмы хранСния Π΄Π°Π½Π½Ρ‹Ρ…, располоТСнной Π² АмстСрдамС.

Как ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ceph ΠΊ кластСру Kubernetes Ρ‡Π΅Ρ€Π΅Π· CSI, смотритС Π² практичСской части Π»Π΅ΠΊΡ†ΠΈΠΈ Π²Π΅Ρ‡Π΅Ρ€Π½Π΅ΠΉ ΡˆΠΊΠΎΠ»Ρ‹ Π‘Π»Ρ‘Ρ€ΠΌ. Π’Π°ΠΊ ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Ρ‚ΡŒΡΡ Π½Π° Π²ΠΈΠ΄Π΅ΠΎ-курс Ceph, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΡƒΡ‰Π΅Π½ 15 октября.

Автор ΡΡ‚Π°Ρ‚ΡŒΠΈ: Π‘Π΅Ρ€Π³Π΅ΠΉ Π‘ΠΎΠ½Π΄Π°Ρ€Π΅Π², ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΡƒΡŽΡ‰ΠΈΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΠΎΡ€ Southbridge, Certified Kubernetes Administrator, ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² kubespray.

НСмного Post Scriptum Π½Π΅ Ρ€Π΅ΠΊΠ»Π°ΠΌΡ‹ для, Π° ΠΏΠΎΠ»ΡŒΠ·Ρ‹ Ρ€Π°Π΄ΠΈ…

P.S. Π‘Π΅Ρ€Π³Π΅ΠΉ Π‘ΠΎΠ½Π΄Π°Ρ€Π΅Π² Π²Π΅Π΄Ρ‘Ρ‚ Π΄Π²Π° интСнсива: ΠΎΠ±Π½ΠΎΠ²Π»Ρ‘Π½Π½Ρ‹ΠΉ Kubernetes Π‘Π°Π·Π° 28-30 сСнтября ΠΈ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹ΠΉ Kubernetes МСга 14–16 октября.

Π₯Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Π² кластСрС Kubernetes

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

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