Кластер Kubernetes
Все кластеры Kubernetes развертываются с помощью Terraform модулей k8s_master и k8s_nodes.
Основной кластер
k8s-medikt-net
| Параметр | Значение |
|---|---|
| Версия Kubernetes | Последняя стабильная (Cloud Native) |
| Зона размещения | ru-central1-a |
| Подсеть | 172.16.50.0/24 |
| Public IP master | false (internal only) |
| Логирование | включено (kube-apiserver, events, audit, cluster-autoscaler) |
| KMS ключ | 24h ротация |
Инфраструктура
VPC
- Подсеть (172.16.50.0/24) - подсеть для всех узлов кластера
- NAT Gateway - обеспечивает исходящий доступ узлов к Yandex Container Registry, Object Storage и другим сервисам
- Route Table - маршрут по умолчанию (0.0.0.0/0) через NAT Gateway для подсети кластера
Security Groups
k8s-main-sg - базовые правила для работы кластера
- Входящий трафик от балансировщика (health checks на 10501)
- Входящий трафик из self_security_group (взаимодействие master-узел, узел-узел)
- Входящий трафик из 10.96.0.0/16, 10.112.0.0/16 (под-под, сервис-сервис)
- Входящий ICMP из 172.16.0.0/12, 10.0.0.0/8, 192.168.0.0/16 (отладка)
- Исходящий трафик на 0.0.0.0/0
k8s-public-services - разрешает входящий трафик на NodePort из интернета
- Входящий TCP на 30000-32767 из 0.0.0.0/0
k8s-master-whitelist - разрешает доступ к API Kubernetes только из доверенных сетей
- Входящий TCP на 6443/443 из: 95.161.152.59/32, 84.201.183.0/24, 158.160.4.248/32, 51.250.53.0/24, 178.154.237.0/24
Группы узлов
core_nodes_ssd (web-api-ssd)
- Тип: web-api-ssd
- vCPU: 8
- RAM: 8 GB
- Диск: network-ssd
- Preemptible: false
- Auto-scale: 2-5
- Назначение: Web API приложения
- Labels: api_affinity=true, web_affinity=true
cc_nodes200 (cc-nodes200)
- Тип: cc-nodes200
- vCPU: 8
- RAM: 8 GB
- Диск: network-hdd (200 GB)
- Preemptible: true (дешевая VM, может быть остановлена при нехватке ресурсов)
- Auto-scale: 1-5
- Назначение: Transcoding Workers, Composer, Chunker
- Labels: workers_affinity=true, composer_affinity=true, chunker_affinity=true
transcoders (transcoder_workers8)
- Тип: transcoders
- vCPU: 8
- RAM: 8 GB
- Диск: network-ssd
- Preemptible: true
- Auto-scale: 1-5
- Назначение: Transcoding workers
- Labels: t_affinity=true
featbit (featbit_nodes)
- Тип: featbit
- vCPU: 4
- RAM: 8 GB
- Диск: network-ssd
- Preemptible: false
- Auto-scale: 1-2
- Назначение: Feature flags сервер
- Labels: featbit_affinity=true, api_affinity=false, web_affinity=false
monitoring (monitoring_nodes)
- Тип: k8s-medikt-net-monitoring
- vCPU: 4
- RAM: 4 GB
- Диск: network-ssd
- Preemptible: false
- Auto-scale: 1-2
- Назначение: Мониторинг (Prometheus, Alertmanager, Grafana)
- Labels: monitoring_affinity=true
nats (nats_nodes)
- Тип: nats
- vCPU: 2
- RAM: 2 GB
- Диск: network-ssd
- Preemptible: false
- Auto-scale: 3-3 (фиксированный)
- Назначение: NATS cluster (3 ноды для отказоустойчивости)
- Labels: nats_affinity=true
Terraform модули
k8s_master:
- Создает кластер Kubernetes
- Настраивает логирование в Cloud Logging
- Создает VPC подсеть и route table
- Создает KMS ключ для шифрования
- Создает security groups
k8s_nodes:
- Создает группу узлов с указанными параметрами
- Поддерживает preemptible виртуальные машины
- Автомасштабирование