Стадия жизненного цикла модуля: Preview
У модуля есть требования для установки
CassandraClass
Cluster Wide Ресурс CassandraClass позволяет ограничить создание невалидных конфигураций и предопределить некоторые значения.
Каждый ресурс Cassandra обязательно должен быть связан с существующим ресурсом CassandraClass.
Перед развертыванием сервиса, вся конфигурация будет проверена о соответствующий CassandraClass.
Sizing Policies
Структура позволяет создавать набор политик определения размера связанных Cassandra.
Это позволит избегать неравномерного распределения ресурсов CPU и Memory на нодах кластера.
Определяющим фактором выбора той или иной политики является попадание в интервал cores.
Далее будет проверено соответствие остальных полей конкретной политики.
spec:
sizingPolicies:
- cores:
min: 1
max: 4
memory:
min: 100Mi
max: 1Gi
step: 1Mi
coreFraction: [10%, 30%, 50%]
- cores:
min: 5
max: 10
memory:
min: 500Mi
max: 2Gi
coreFraction: [50%, 70%, 100%]Validation Rules
В качестве синтаксиса используется CEL (Common Expression Language) для создания гибких механизмов валидаций.
Мы предоставляем набор предопределенных переменных, которые можно использовать в rule:
- instance.memory.size
int - instance.cpu.cores
int
spec:
validations:
- message: "CPU cores must be between 1 and 64"
rule: "instance.cpu.cores >= 1 && instance.cpu.cores <= 64"Affinity
Стандартный механизм Kubernetes для управления планированием разворачиваемых подов.
spec:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: "node.deckhouse.io/group"
operator: "In"
values:
- "cas"Tolerations
Стандартный механизм Kubernetes для управления планированием разворачиваемых подов.
spec:
tolerations:
- key: primary-role
operator: Equal
value: cas
effect: NoScheduleNode Selector
Стандартный механизм Kubernetes для управления планированием разворачиваемых подов.
nodeSelector:
"node.deckhouse.io/group": "cas"Примеры использования
Базовое использование
apiVersion: managed-services.deckhouse.io/v1alpha1
kind: CassandraClass
metadata:
name: default
spec:
sizingPolicies:
- cores:
min: 1
max: 2
memory:
min: 2Gi
max: 4Gi
step: 512Mi
coreFractions:
- "25%"
- "50%"
- "75%"
- "100%"
validations:
- message: "CPU cores must be between 1 and 8"
rule: "instance.cpu.cores >= 1 && instance.cpu.cores <= 16"
- message: "Memory must be between 2 and 64"
rule: "instance.memory.size >= 2 && instance.memory.size <= 64"