режим доступа к постоянному тому kubernetes

Кажется, что Kubernetes поддерживает 3 режима доступа к постоянному тому: ReadWriteOnce, ReadOnlyMany, ReadWriteMany. Мне действительно любопытна стратегия планировщика для модуля, который использует том в режиме ReadWriteOnce. Например, я создал RC с номером модуля = 2, я предполагаю, что два модуля будут запланированы на один и тот же хост, потому что они используют том с режимом ReadWriteOnce? Я очень хочу знать исходный код этой части.


person wangzhe    schedule 06.06.2016    source источник


Ответы (2)


Если модуль монтирует том с ReadWriteOnce режимом доступа, никакой другой модуль не сможет его смонтировать. В GCE (Google Compute Engine) разрешены только режимы ReadWriteOnce и ReadOnlyMany. Таким образом, либо один модуль подключает том ReadWrite, либо один или несколько модулей подключают том ReadOnlyMany.

Планировщик (код здесь) не позволит модулю планировать, если он использует том GCE, который уже был смонтирован для чтения и записи.

(Ссылка на документацию для тех, кто не понял вопроса: доступ к постоянному тому режимы)

person DavidO    schedule 06.06.2016
comment
Спасибо за Ваш ответ! кажется, что в isVolumeConflict func проверяется только режим GCEPD, что, если я использую режим readwriteonce для другого типа постоянного хранилища, такого как aws или nfs? есть ли алгоритм проверки таких конфликтов в планировщике? - person wangzhe; 06.06.2016
comment
Кажется, развлечение isVolumeConflic в настоящее время поддерживает только проверку GCEPD, AWSElasticBlockStore, RBD? - person wangzhe; 06.06.2016
comment
том может быть смонтирован как чтение-запись одним узлом. Я думаю, что ReadWriteOnce означает, что этот том можно смонтировать только на одном узле k8s. Я пробовал смонтировать один и тот же том ReadWriteOnce на одном узле двумя модулями. И это работает - person Haoyuan Ge; 18.10.2017
comment
ive видел один и тот же том, установленный на 2 модулях, но только если на том же узле, в динамической инициализации GKE. - person jayunit100; 06.04.2018
comment
Согласно официальной документации томов Kubernetes, режим доступа ReadWriteOnce ограничивает объем более чем одним NODE (не POD). - person ACloudRoamer; 05.09.2019
comment
Кроме того, цитируя Kubernetes в действии: ›RWO, ROX и RWX относятся к количество рабочих узлов, которые могут использовать том одновременно, а не количество модулей! - person LaloLoop; 20.04.2020

Я думаю, что ответ, за который проголосовали, неверен. Согласно документации Kubernetes по режимам доступа

Доступны следующие режимы:

  • ReadWriteOnce - том может быть смонтирован как чтение-запись одним узлом
  • ReadOnlyMany - том можно монтировать в режиме «только для чтения» многими узлами.
  • ReadWriteMany - том может быть смонтирован как чтение-запись многими узлами

Таким образом, режимы доступа, как они определены сегодня, описывают только семантику подключения узла (не монтирования модуля) и ничего не навязывают.

Таким образом, чтобы два модуля не монтировали один и тот же PVC, даже если их запуск запланирован на одном узле, вы можете использовать антиаффинность модуля. Это не то же самое, что не подключать один том к 2 модулям, запланированным на одном узле. Но анти-сродство можно использовать, чтобы запретить планировщику запускать 2 модуля на одном узле. Следовательно, это предотвращает установку одного тома на 2 модуля.

person 0xMH    schedule 01.01.2021