name: k8s_sthutrval_cluster service_id: 150 service_display_name: Kubernetes кластер Штурвал service_short_name: k8sSthutrvalCluster service_man: '# Развёртывание Kubernetes: ограничения и предварительный чек-лист

> **Внимание:** перед началом развёртывания кластера Kubernetes убедитесь, что выполнены все описанные ниже условия. Несоблюдение порядка шагов может привести к ошибкам при создании кластера.

---

## Ограничения при развёртывании

| Ограничение | Статус |
|---|---|
| 1 кластер = 1 vDC | Действует (будет исправлено в ближайшее время) |

---

## Предварительный чек-лист

Перед установкой кластера Kubernetes необходимо последовательно выполнить следующие шаги.

### 1. Создать организацию в Cloud Director

- Перейдите в услугу **Организация в Cloud Director**.
- Создайте организацию.

### 2. Создать виртуальный датацентр (vDC)

- Перейдите в услугу **Виртуальный датацентр (vDC)**.
- Создайте vDC.
- Выделите **достаточно ресурсов для разворачивания _всех_ нод** кластера.

### 3. Создать Edge (сетевой шлюз периметра)

- Перейдите в услугу **Сетевой шлюз периметра (Edge)**.
- Создайте Edge.
- Обязательно:
- Включить **ALB**.
- Установить **Кол-во VS на AVI ≥ 3**.

### 4. Добавить внешние адреса в организации

- Вернитесь в **Организация в Cloud Director**.
- Выполните операцию **Modify**.
- Добавьте **3 внешних адреса**.
- Количество `ipSpaces` значения не имеет, важно чтобы суммарно было 3 адреса.

### 5. Настроить SNAT для виртуальных машин

- Вернитесь в **Сетевой шлюз периметра (Edge)**.
- Выполните операцию **Modify**.
- Выберите доступный `ipSpaceName`.
- Это будет **SNAT для виртуальных машин**.

### 6. Развернуть кластер Kubernetes

- Только **после выполнения всех шагов выше** переходите к услуге **Kubernetes кластер Штурвал**.
- Начните разворачивание кластера.

---

## Минимальные требования к кластеру

| Параметр | Значение |
|---|---|
| Мастер-ноды | минимум **1** |
| Воркер-ноды | минимум **1** |
| CPU (на ноду) | **4 vCPU** |
| RAM (на ноду) | **8 GB** |
| Диск (на ноду) | **50 GB** |

---' lifecycle: suspendOnDestroyDefault: true adoptExistingOnCreateDefault: false operations: - svcOperationId: 108 operation: create kind: instance action: create - svcOperationId: 281 operation: create_user kind: subresource action: create - svcOperationId: 109 operation: delete kind: instance action: delete - svcOperationId: 282 operation: delete_user kind: subresource action: delete - svcOperationId: 110 operation: modify kind: instance action: modify - svcOperationId: 253 operation: reconcile kind: action action: reconcile - svcOperationId: 174 operation: resume kind: instance action: resume - svcOperationId: 173 operation: suspend kind: instance action: suspend stateOut: users: {} cfsParams: - svcOperationCfsParamId: 750 svcOperationCfsParam: startupConfiguration dataType: map-fixed isRequired: true defaultValue: '' isModifiable: false dataDescriptor: vdcUid: dataType: string defaultValue: '' isRequired: true isModifiable: false nsxtUid: dataType: string defaultValue: '' isRequired: true isModifiable: false clusterName: dataType: string defaultValue: example-ryatr2rx isRequired: true isModifiable: false exLogging: dataType: boolean defaultValue: 'true' isRequired: false isModifiable: false valueList: - 'true' - 'false' exMonitoring: dataType: boolean defaultValue: 'true' isRequired: false isModifiable: false valueList: - 'true' - 'false' exLocalCsi: dataType: boolean defaultValue: 'true' isRequired: false isModifiable: false valueList: - 'true' - 'false' exVip: dataType: boolean defaultValue: 'true' isRequired: false isModifiable: false valueList: - 'true' - 'false' exUpdate: dataType: boolean defaultValue: 'true' isRequired: false isModifiable: false valueList: - 'true' - 'false' exIngress: dataType: boolean defaultValue: 'true' isRequired: false isModifiable: false valueList: - 'true' - 'false' exNamedCsi: dataType: boolean defaultValue: 'true' isRequired: false isModifiable: false valueList: - 'true' - 'false' - svcOperationCfsParamId: 751 svcOperationCfsParam: controlPlaneConfiguration dataType: map-fixed isRequired: true defaultValue: '' isModifiable: true dataDescriptor: sizingPolicy: dataType: string defaultValue: '[]' isRequired: true isModifiable: false valueList: - '{}' sizingDisk: dataType: integer > 0 defaultValue: '50' isRequired: true isModifiable: false count: dataType: integer > 0 defaultValue: '1' isRequired: true isModifiable: false valueList: - '1' - '3' - '5' - svcOperationCfsParamId: 752 svcOperationCfsParam: workerConfiguration dataType: array-map-fixed isRequired: true defaultValue: '[{}]' isModifiable: true dataDescriptor: groupName: dataType: string defaultValue: workers-e6bfgpqf isRequired: true isModifiable: false sizingPolicy: dataType: string defaultValue: '' isRequired: true isModifiable: false valueList: - '{}' sizingDisk: dataType: integer > 0 defaultValue: '50' isRequired: true isModifiable: false count: dataType: integer > 0 defaultValue: '2' isRequired: true isModifiable: false autoscale: dataType: boolean defaultValue: 'false' isRequired: false isModifiable: false valueList: - 'false' - 'true' autoscaleMin: dataType: integer > 0 defaultValue: '2' isRequired: false isModifiable: false autoscaleMax: dataType: integer > 0 defaultValue: '3' isRequired: false isModifiable: false labelDeck: dataType: boolean defaultValue: 'true' isRequired: true isModifiable: false valueList: - 'true' - 'false' - svcOperationCfsParamId: 753 svcOperationCfsParam: accessConfiguration dataType: map-fixed isRequired: true defaultValue: '' isModifiable: true dataDescriptor: needExternalAddressAPI: dataType: boolean defaultValue: 'true' isRequired: true isModifiable: false valueList: - 'true' accessIpListAPI: dataType: json defaultValue: '[]' isRequired: true isModifiable: false needExternalAddressIngress: dataType: boolean defaultValue: 'true' isRequired: true isModifiable: false valueList: - 'true' accessIpListIngress: dataType: json defaultValue: '[]' isRequired: true isModifiable: false - svcOperationCfsParamId: 755 svcOperationCfsParam: clusterConfiguration dataType: map-fixed isRequired: true defaultValue: '' isModifiable: true dataDescriptor: appVersion: dataType: string defaultValue: 2.14.0 isRequired: true isModifiable: false valueList: - 2.14.0 - 2.13.1 - 2.12.1 - 2.11.0 - svcOperationCfsParamId: 869 svcOperationCfsParam: admins dataType: array-map-fixed isRequired: true defaultValue: '[{}]' isModifiable: false dataDescriptor: email: dataType: string defaultValue: '' isRequired: true isModifiable: false - svcOperationCfsParamId: 870 svcOperationCfsParam: admins dataType: array-map-fixed isRequired: true defaultValue: '' isModifiable: true dataDescriptor: email: dataType: string defaultValue: '' isRequired: true isModifiable: false - svcOperationCfsParamId: 756 svcOperationCfsParam: clusterConfiguration dataType: map-fixed isRequired: true defaultValue: '' isModifiable: true dataDescriptor: appVersion: dataType: string defaultValue: '' isRequired: true isModifiable: false valueList: - 2.14.0 - 2.13.1 - 2.12.1 - 2.11.0 - svcOperationCfsParamId: 757 svcOperationCfsParam: controlPlaneConfiguration dataType: map-fixed isRequired: true defaultValue: '' isModifiable: true dataDescriptor: sizingPolicy: dataType: string defaultValue: '' isRequired: true isModifiable: false valueList: - '{}' sizingDisk: dataType: integer > 0 defaultValue: '' isRequired: true isModifiable: false count: dataType: integer > 0 defaultValue: '' isRequired: true isModifiable: false valueList: - '1' - '3' - '5' - svcOperationCfsParamId: 758 svcOperationCfsParam: workerConfiguration dataType: array-map-fixed isRequired: true defaultValue: '' isModifiable: true dataDescriptor: groupName: dataType: string defaultValue: workers-ohtgog3p isRequired: true isModifiable: false sizingPolicy: dataType: string defaultValue: '' isRequired: true isModifiable: false valueList: - '{}' sizingDisk: dataType: integer > 0 defaultValue: '' isRequired: true isModifiable: false count: dataType: integer >= 0 defaultValue: '' isRequired: true isModifiable: false autoscale: dataType: boolean defaultValue: '' isRequired: false isModifiable: false valueList: - 'false' - 'true' autoscaleMin: dataType: integer > 0 defaultValue: '' isRequired: false isModifiable: false autoscaleMax: dataType: integer > 0 defaultValue: '' isRequired: false isModifiable: false labelDeck: dataType: boolean defaultValue: '' isRequired: true isModifiable: false valueList: - 'true' - 'false' - svcOperationCfsParamId: 759 svcOperationCfsParam: accessConfiguration dataType: map-fixed isRequired: true defaultValue: '' isModifiable: true dataDescriptor: needExternalAddressAPI: dataType: boolean defaultValue: 'true' isRequired: true isModifiable: false valueList: - 'true' accessIpListAPI: dataType: json defaultValue: '[]' isRequired: true isModifiable: false needExternalAddressIngress: dataType: boolean defaultValue: 'true' isRequired: true isModifiable: false valueList: - 'true' accessIpListIngress: dataType: json defaultValue: '[]' isRequired: true isModifiable: false cfsParamsByOp: 108: - 750 - 751 - 752 - 753 - 755 281: - 869 109: [] 282: - 870 110: - 756 - 757 - 758 - 759 253: [] 174: [] 173: [] stateParams: startupConfiguration: '{"vdcUid": "", "nsxtUid": "", "clusterName": "example-ryatr2rx", "exLogging": true, "exMonitoring": true, "exLocalCsi": true, "exVip": true, "exUpdate": true, "exIngress": true, "exNamedCsi": true}' controlPlaneConfiguration: '{"sizingPolicy": "[]", "sizingDisk": 50, "count": 1}' workerConfiguration: '{"groupName": "workers-e6bfgpqf", "sizingPolicy": "", "sizingDisk": 50, "count": 2, "autoscale": false, "autoscaleMin": 2, "autoscaleMax": 3, "labelDeck": true}' accessConfiguration: '{"needExternalAddressAPI": true, "accessIpListAPI": "[]", "needExternalAddressIngress": true, "accessIpListIngress": "[]"}' clusterConfiguration: '{"appVersion": "2.14.0"}'