Кажется, что Kubernetes поддерживает 3 режима доступа к постоянному тому: ReadWriteOnce
, ReadOnlyMany
, ReadWriteMany
. Мне действительно любопытна стратегия планировщика для модуля, который использует том в режиме ReadWriteOnce
. Например, я создал RC с номером модуля = 2, я предполагаю, что два модуля будут запланированы на один и тот же хост, потому что они используют том с режимом ReadWriteOnce
? Я очень хочу знать исходный код этой части.
режим доступа к постоянному тому kubernetes
Ответы (2)
Если модуль монтирует том с ReadWriteOnce
режимом доступа, никакой другой модуль не сможет его смонтировать. В GCE (Google Compute Engine) разрешены только режимы ReadWriteOnce
и ReadOnlyMany
. Таким образом, либо один модуль подключает том ReadWrite
, либо один или несколько модулей подключают том ReadOnlyMany
.
Планировщик (код здесь) не позволит модулю планировать, если он использует том GCE, который уже был смонтирован для чтения и записи.
(Ссылка на документацию для тех, кто не понял вопроса: доступ к постоянному тому режимы)
isVolumeConflict
func проверяется только режим GCEPD, что, если я использую режим readwriteonce для другого типа постоянного хранилища, такого как aws или nfs? есть ли алгоритм проверки таких конфликтов в планировщике?
- person wangzhe; 06.06.2016
RWO
, ROX
и RWX
относятся к количество рабочих узлов, которые могут использовать том одновременно, а не количество модулей!
- person LaloLoop; 20.04.2020
Я думаю, что ответ, за который проголосовали, неверен. Согласно документации Kubernetes по режимам доступа
Доступны следующие режимы:
- ReadWriteOnce - том может быть смонтирован как чтение-запись одним узлом
- ReadOnlyMany - том можно монтировать в режиме «только для чтения» многими узлами.
- ReadWriteMany - том может быть смонтирован как чтение-запись многими узлами
Таким образом, режимы доступа, как они определены сегодня, описывают только семантику подключения узла (не монтирования модуля) и ничего не навязывают.
Таким образом, чтобы два модуля не монтировали один и тот же PVC, даже если их запуск запланирован на одном узле, вы можете использовать антиаффинность модуля. Это не то же самое, что не подключать один том к 2 модулям, запланированным на одном узле. Но анти-сродство можно использовать, чтобы запретить планировщику запускать 2 модуля на одном узле. Следовательно, это предотвращает установку одного тома на 2 модуля.