Схемы размещения
Deckhouse Kubernetes Platform поддерживает две схемы размещения ресурсов в VCD.
Standard
Пример конфигурации схемы размещения:
---
apiVersion: deckhouse.io/v1alpha1
kind: VCDClusterConfiguration
layout: Standard
provider:
server: '<SERVER>'
username: '<USERNAME>'
password: '<PASSWORD>'
insecure: true
sshPublicKey: ssh-rsa AAAABBBBB
organization: deckhouse
virtualDataCenter: MSK-1
virtualApplicationName: deckhouse
internalNetworkCIDR: 192.168.199.0/24
masterNodeGroup:
replicas: 1
instanceClass:
storageProfile: "Fast vHDD"
sizingPolicy: 4cpu8mem
template: "catalog/Ubuntu 22.04 Server"
mainNetwork: internal
mainNetworkIPAddresses:
- 192.168.199.2
mainNetwork: internal
WithNAT
При использовании данной схемы размещения необходимо уточнить у администратора тип платформы сетевой виртуализации и указать его в параметре edgeGateway.type
. Поддерживаются два варианта: NSX-T
и NSX-V
.
Для обеспечения административного доступа к узлам кластера разворачивается бастион. Параметры для его настройки описываются в секции bastion
.
Если Edge Gateway работает на базе NSX-T
, в созданной сети для узлов автоматически активируется DHCP-сервер. Он будет выделять IP-адреса, начиная с 30-го адреса в подсети и до предпоследнего (перед broadcast-адресом). Начальный адрес DHCP-пула можно изменить с помощью параметра internalNetworkDHCPPoolStartAddress
.
Если используется NSX-V
, DHCP необходимо настроить вручную. В противном случае узлы, ожидающие получение IP-адреса по DHCP, не смогут его получить.
Не рекомендуется использовать динамическую адресацию для первого master-узла совместно с NSX-V
.
Схема размещения предполагает автоматическое создание следующих правил NAT:
- SNAT — трансляция адресов внутренней сети узлов во внешний адрес, указанный в параметре
edgeGateway.externalIP
. - DNAT — трансляция внешнего адреса и порта, заданных в параметрах
edgeGateway.externalIP
иedgeGateway.externalPort
, на внутренний IP-адрес бастиона по порту 22 (протокол TCP) для обеспечения административного доступа по SSH.
Если Edge Gateway обеспечивается средствами NSX-V
, то для построения правил необходимо указать имя и тип сети, к которым правило будет привязано в свойствах edgeGateway.NSX-V.externalNetworkName
и edgeGateway.NSX-V.externalNetworkType
соответственно. Как правило, это сеть, подключённая к Edge Gateway в разделе Gateway Interfaces
и имеющая внешний IP-адрес.
Дополнительно возможно создание правил брандмауэра отдельным свойством createDefaultFirewallRules
.
Если Edge Gateway обеспечивается средствами NSX-T
, то существующие в Edge Gateway правила будут перезаписаны. Предполагается, что использование данной опции подразумевает размещение одного кластера на Edge Gateway.
Будут созданы следующие правила:
- Разрешение любого исходящего трафика;
- Разрешение входящего трафика по протоколу
TCP
и 22 порту для соединения с узлами кластера по SSH; - Разрешение любого входящего трафика по протоколу
ICMP
; - Разрешение входящего трафика по протоколам
TCP
иUDP
и портам 30000–32767 для использованияNodePort
.
Пример конфигурации схемы размещения с использованием NSX-T
:
apiVersion: deckhouse.io/v1alpha1
kind: VCDClusterConfiguration
layout: WithNAT
provider:
server: '<SERVER>'
username: '<USERNAME>'
password: '<PASSWORD>'
insecure: true
sshPublicKey: ssh-rsa AAAABBBBB
organization: deckhouse
virtualDataCenter: MSK-1
virtualApplicationName: deckhouse
internalNetworkCIDR: 192.168.199.0/24
internalNetworkDNSServers:
- 77.88.8.8
- 1.1.1.1
mainNetwork: internal
bastion:
instanceClass:
rootDiskSizeGb: 30
sizingPolicy: 2cpu1mem
template: "catalog/Ubuntu 22.04 Server"
storageProfile: Fast vHDD
mainNetworkIPAddress: 10.1.4.10
edgeGateway:
name: "edge-gateway-01"
type: "NSX-T"
externalIP: 10.0.0.1
externalPort: 10022
createDefaultFirewallRules: false
masterNodeGroup:
replicas: 1
instanceClass:
storageProfile: "Fast vHDD"
sizingPolicy: 4cpu8mem
template: "catalog/Ubuntu 22.04 Server"
mainNetworkIPAddresses:
- 192.168.199.2
Пример конфигурации схемы размещения с использованием NSX-V
:
apiVersion: deckhouse.io/v1alpha1
kind: VCDClusterConfiguration
layout: WithNAT
provider:
server: '<SERVER>'
username: '<USERNAME>'
password: '<PASSWORD>'
insecure: true
sshPublicKey: ssh-rsa AAAABBBBB
organization: deckhouse
virtualDataCenter: MSK-1
virtualApplicationName: deckhouse
internalNetworkCIDR: 192.168.199.0/24
internalNetworkDNSServers:
- 77.88.8.8
- 1.1.1.1
mainNetwork: internal
bastion:
instanceClass:
rootDiskSizeGb: 30
sizingPolicy: 2cpu1mem
template: "catalog/Ubuntu 22.04 Server"
storageProfile: Fast vHDD
mainNetworkIPAddress: 10.1.4.10
edgeGateway:
name: "edge-gateway-01"
type: "NSX-V"
externalIP: 10.0.0.1
externalPort: 10022
NSX-V:
externalNetworkName: external
externalNetworkType: ext
createDefaultFirewallRules: true
masterNodeGroup:
replicas: 1
instanceClass:
storageProfile: "Fast vHDD"
sizingPolicy: 4cpu8mem
template: "catalog/Ubuntu 22.04 Server"
mainNetworkIPAddresses:
- 192.168.199.2
Конфигурация
Интеграция осуществляется с помощью ресурса VCDClusterConfiguration, который описывает конфигурацию облачного кластера в VCD и используется системой виртуализации, если управляющий слой (control plane) кластера размещён в системе. Отвечающий за интеграцию модуль DKP настраивается автоматически, исходя из выбранной схемы размещения.
Чтобы изменить конфигурацию в запущенном кластере, выполните следующую команду:
d8 platform edit provider-cluster-configuration
После изменения параметров узлов необходимо выполнить команду dhctl converge
, чтобы изменения вступили в силу.
Пример конфигурации:
apiVersion: deckhouse.io/v1
kind: VCDClusterConfiguration
sshPublicKey: "<SSH_PUBLIC_KEY>"
organization: My_Org
virtualDataCenter: My_Org
virtualApplicationName: Cloud
mainNetwork: internal
layout: Standard
internalNetworkCIDR: 172.16.2.0/24
masterNodeGroup:
replicas: 1
instanceClass:
template: Templates/ubuntu-focal-20.04
sizingPolicy: 4cpu8ram
rootDiskSizeGb: 20
etcdDiskSizeGb: 20
storageProfile: nvme
nodeGroups:
- name: worker
replicas: 1
instanceClass:
template: Org/Templates/ubuntu-focal-20.04
sizingPolicy: 16cpu32ram
storageProfile: ssd
provider:
server: "<SERVER>"
username: "<USERNAME>"
password: "<PASSWORD>"
insecure: true
Количество и параметры процесса заказа машин в облаке настраиваются в кастомном ресурсе NodeGroup, в котором также указывается название используемого для этой группы узлов инстанс-класса (параметр cloudInstances.classReference
). Инстанс-класс для cloud-провайдера VCD — это кастомный ресурс VCDInstanceClass, в котором указываются конкретные параметры самих машин.
Ниже представлен пример конфигурации VCDInstanceClass для эфемерных узлов cloud-провайдера VMware Cloud Director.
Пример конфигурации кастомного ресурса VCDInstanceClass
apiVersion: deckhouse.io/v1
kind: VCDInstanceClass
metadata:
name: test
spec:
rootDiskSizeGb: 90
sizingPolicy: payg-4-8
storageProfile: SSD-dc1-pub1-cl1
template: MyOrg/Linux/ubuntu2204-cloud-ova
Storage
Для каждого Datastore и DatastoreCluster из зон (зоны) автоматически создаётся StorageClass.
Имя StorageClass’а, который будет использоваться в кластере по умолчанию, можно настроить (параметр default) и отфильтровать ненужные StorageClass’ы (параметр exclude).
CSI
Подсистема хранения по умолчанию использует CNS-диски с возможностью изменения их размера на лету. Но также поддерживается работа и в legacy-режиме с использованием FCD-дисков. Поведение подсистемы устанавливается с помощью параметра compatibilityFlag.