Понимание режимов заявки на постоянный том в openshift

Я пытаюсь понять различные режимы доступа к постоянным заявкам на объем в Openshift. Нашел следующую информацию из здесь

Access Mode         CLI Abbreviation             Description
ReadWriteOnce           RWO               The volume can be mounted as read-write by a single node.

ReadOnlyMany            ROX               The volume can be mounted read-only by many nodes.

ReadWriteMany           RWX               The volume can be mounted as read-write by many nodes.

Я знаю, что PVC привязан к одному проекту / пространству имен и может быть расширен на разные проекты.

Но путаница заключается в том, что здесь означает «один узел» или «много узлов». Например, в режиме RWO "The volume can be mounted as read-write by a single node". К какому узлу это относится.

Может ли кто-нибудь дать мне значение этих режимов по отношению к одному проекту / пространству имен. Может ли хранилище с RWO иметь разрешение на запись только для одного приложения или для всех приложений в проекте?


person Here_2_learn    schedule 14.02.2018    source источник


Ответы (1)


Вся концепция RWO vs RWX связана с проблемой монтирования одной и той же файловой системы на нескольких хостах, что требует поддержки таких вещей, как ie. распределенная блокировка. Существуют конкретные реализации, которые могут справиться с этим, например, например. NFS, Ceph, GlusterFS и т. Д., Как правило, файловые системы, ориентированные на сеть / кластер. Другие файловые системы не смогут работать правильно, если вы попытаетесь смонтировать их на разных серверах одновременно (обычно они просто не позволяют этого).

Итак, узел в данном случае означает конкретный узел кластера Kubernetes (будь то сервер baremetal или виртуальная машина). Но, в более широком смысле, вы должны думать об этом и в рамках POD, потому что в большинстве случаев модули могут разворачиваться на разных узлах, что означает, что они не могут использовать один и тот же том, или вы не можете предположить, что этот том будет иметь согласованное общее состояние. , как это случилось бы т.е. используя тома HostPath, уникальные для каждого узла в кластере.

Чтобы прояснить вопрос ниже:

Объемы RWO имеют отношение 1: 1 к контейнеру в целом. Хотя в некоторых случаях вы можете определить тома RWO так, чтобы они указывали на один и тот же физический ресурс, такой как hostPath, технически они всегда будут тесно связаны исключительно с одним POD. Это особенно заметно, если вы используете объекты PhysicalVolumes / PhysicalVolumeClaims, которые будут учитывать эти ограничения для привязки PV к PVC. Только тома RWX предоставляют хранилище, используемое несколькими модулями, и все модули могут писать в него.

person Radek 'Goblin' Pieczonka    schedule 14.02.2018
comment
еще одна путаница, предположим, что 3 PODS (реплики) работают для приложения на 3 разных узлах. Если я выберу хранилище RWO, означает ли это, что только 1 POD с 1 узла может записывать в это хранилище? Не могли бы вы это объяснить? - person Here_2_learn; 14.02.2018
comment
Чтобы уточнить дальше. Если вы используете RWO с масштабируемым приложением, если экземпляр запланирован на хосте, отличном от первого модуля, то развертывание последнего зависнет и в конечном итоге завершится ошибкой. Это связано с тем, что Kubernetes не может удовлетворить требование монтирования постоянного тома, поскольку он уже смонтирован на другом узле для использования первым модулем. Короче говоря, не используйте RWO для масштабируемых приложений или скользящих развертываний. Последний не будет работать, так как даже если у вас есть только одна реплика, он создает вторую во время развертывания. - person Graham Dumpleton; 15.02.2018
comment
@GrahamDumpleton: Если я правильно понимаю, 1) Используйте RWO только для приложений без масштабирования / скользящего развертывания. 2) Используйте RWO только для одного POD / приложения, но не для нескольких приложений. 3) RWX для любого количества приложений / PODS в рамках проекта ... Не могли бы вы подтвердить, что эти пункты действительны? - person Here_2_learn; 15.02.2018
comment
не совсем так, существуют допустимые случаи использования RWO для масштабируемых подов. Просто каждый модуль получит свой собственный, а не общий том. Представьте себе что-то вроде кластера серверов баз данных - кластеризация выполняется в движке БД, поэтому все, что вам нужно, это выделенное пространство для хранения для движка - RWO дает именно это (т. Е. Если вы определяете том в модуле напрямую или через volumeClaimTemplate). - person Radek 'Goblin' Pieczonka; 15.02.2018
comment
Для обычного варианта использования DeploymentConfig / ReplicationController / Pod у вас не будет уникального тома RWO для каждого модуля. Приносить его и StatefulSet up для тех, кто пытается изучить основы, просто сбивает с толку. Так что да, есть исключения, но шаг за шагом. - person Graham Dumpleton; 15.02.2018
comment
Я согласен, что это не совсем начальный уровень знаний, но опять же, это объясняет, почему Use RWO only for the applications without scaling/rolling deployments. является ошибочным заявлением, особенно учитывая, что большая часть того, что вы делаете, должно быть как развертывание, т.е. масштабирование / прокрутка. Но да, это означает, что нужно еще раз покопаться, чтобы понять :) - person Radek 'Goblin' Pieczonka; 15.02.2018