YC K8s KMS NLB ALB Lockbox DNS CL CR
August 25, 2022

Создание кластера k8s с Cillium с масштабируемой и фиксированной группой нод

В этой статье опишу создание кластера k8s с помощью ус с использованием CNI Cillium.

Всю предварительную подготовку вроде создания SA, SG, KMS, описывал ранее здесь: https://teletype.in/@cameda/3BqWWeOkRZ0
Кластер версии 1.22 с ежедневным обновлением и внешним адресом.

Создаём кластер K8s с зональным мастером и ключем KMS + Cillium.

Для создания кластера с Cillium добавили для SA новую роль: k8s.tunnelClusters.agent Добавим её к нашему SA.

export FOLDER=$(yc config get folder-id)
export K8S_Creator_Resources=$(yc iam service-account get k8s-creator-resources --format json | jq -r '.id')
yc resource folder add-access-binding $FOLDER --role k8s.tunnelClusters.agent --subject serviceAccount:$K8S_Creator_Resources
export K8S_Puller_Registry=$(yc iam service-account get k8s-puller-registry --format json | jq -r '.id')
export NETWORK=$(yc vpc network get cameda-test --format json | jq -r '.id')
export SG=$(yc vpc sg get k8s-sg --format json | jq -r '.id')
export KMS=$(yc kms symmetric-key get k8s-key --format json | jq -r ".id")
export SUBNET=subnet-a
export ZONE=ru-central1-a

yc k8s cluster create \
--folder-id $FOLDER \
--name cam-kuber-cillium \
--description "cameda k8s 1.22 + cillium" \
--network-id $NETWORK \
--zone $ZONE \
--subnet-name $SUBNET \
--public-ip \
--release-channel rapid \
--enable-network-policy \
--cilium \
--version 1.22 \
--cluster-ipv4-range 10.97.0.0/16 \
--service-ipv4-range 10.98.0.0/16 \
--auto-upgrade \
--security-group-ids $SG \
--kms-key-id $KMS \
--service-account-id $K8S_Creator_Resources \
--node-service-account-name $K8S_Puller_Registry \
--daily-maintenance-window start=23:00,duration=10h \
--async

Создание масштабируемой нод группы для кластера.

yc k8s node-group create \
--folder-id $FOLDER \
--name cam-auto-group \
--cluster-name cam-kuber-cillium \
--description "autoupgrade group" \
--metadata serial-port-enable=1 \
--metadata-from-file=ssh-keys=/Users/cameda/ssh-pairs.txt \
--location zone=$ZONE \
--platform standard-v3 \
--preemptible \
--memory 2 \
--cores 2 \
--core-fraction 100 \
--disk-type network-ssd \
--disk-size 96 \
--network-acceleration-type standard \
--network-interface security-group-ids=$SG,subnets=$SUBNET,ipv4-address=nat \
--version 1.22 \
--container-runtime containerd \
--auto-scale min=0,max=3,initial=1 \
--auto-upgrade \
--auto-repair \
--max-expansion 2 \
--max-unavailable 1 \
--daily-maintenance-window start=22:00,duration=5h \
--allowed-unsafe-sysctls net.ipv4.tcp_timestamps \
--async
--auto-scale min=0,max=5,initial=2 - здесь передаем диапазон значений для нод.

Создание фиксированной нод группы для кластера.

yc k8s node-group create \
--folder-id $FOLDER \
--name cam-fix-group \
--cluster-name cam-kuber-cillium \
--description "fixgroup" \
--metadata serial-port-enable=1 \
--metadata-from-file=ssh-keys=/Users/cameda/ssh-pairs.txt \
--location zone=$ZONE \
--platform standard-v3 \
--memory 2 \
--cores 2 \
--core-fraction 100 \
--disk-type network-ssd \
--disk-size 96 \
--network-acceleration-type standard \
--network-interface security-group-ids=$SG,subnets=$SUBNET,ipv4-address=nat \
--version 1.22 \
--container-runtime containerd \
--fixed-size 1 \
--auto-upgrade=false \
--auto-repair \
--max-expansion 2 \
--max-unavailable 1 \
--daily-maintenance-window start=22:00,duration=5h \
--allowed-unsafe-sysctls net.ipv4.tcp_timestamps \
--async