Files
k8s-deploy/env/avroid_prod/README.md
2024-12-20 19:44:28 +03:00

119 lines
6.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## Требования
[Requirements](./kubespray/README.md#requirements)
## Версия Kuberspray и Kubernetes у текущих инвентору
| Kuberspray | v2.26.0 |
|------------|---------|
| Kubernetes | v1.30.4 |
## Особенности развертывания кластера
| Модуль | Комментарий |
|--------------------------|------------------------------------------------------------------------------------------|
| Cluster name | k8s.prod.local |
| Сеть | Только IPv4 |
| Сеть | 172.24.0.0/18 - подсеть сервисов |
| Сеть | 172.24.64.0/18 - подсеть подов |
| Сеть | 30000-32767 - список портов, разрешённый к форвардингу на нодах |
| Маска подсети на ноду | 24 (Итого - max 254 подов на ноде и max 64 ноды) |
| CNI | calico |
| NTP-клиенты | Настроены на локальные приватные NTP-сервера и московскую таймзону |
| DNS zone | k8s.prod.local |
| DNS | Dual CoreDNS + nodelocaldns |
| Etcd | данные сервиса в /data/etcd на отдельном блочном устройстве с ext4) |
| Container runtime | containerd (/var/lib/containerd на отдельном блочном устройстве с XFS) |
| Приватный реестр образов | Используются приватные кеширующие зеркала с harbor.avroid.tech в настройках containerd |
| Диски | Все ноды: /var/lib/containerd вынесен на отдельные блочное устройства с XFS |
| Диски | k8s-control-0X: /data вынесен на отдельные блочное устройства с ext4 |
| Диски | k8s-worker/build-0X: /var/lib/kubelet/pods вынесен на отдельные блочное устройства с XFS |
| HA | API Server |
| Ingress | Nginx ingress controller 80 --> 30080 (k8s-worker-0X), 443 --> 30081 (k8s-worker-0X) |
| Дополнительные сервисы | Helm, Metrics Server, Cert manager, netchecker |
## Доступ до развёрнутых сервисов
### Ingress NGINX Controller
https://github.com/kubernetes/ingress-nginx/blob/main/README.md#readme
<worker_node>:30080/TCP --> nginx:80/TCP
<worker_node>:30081/TCP --> nginx:443/TCP
### netchecker
https://github.com/Mirantis/k8s-netchecker-server
http://<IP_АДРЕС_НОДЫ>:31081/api/v1/agents/
http://<IP_АДРЕС_НОДЫ>:31081/api/v1/connectivity_check
http://<IP_АДРЕС_НОДЫ>:31081/metrics
## Подготовка окружения для развёртывания и развёртывание
### 1. Предварительная подготовка ВМ
Предварительно готовим ВМ основным набором спритов Ansible со следующими особенностями:
- настраиваем дополнительные диски и точки монтирования
- настраиваем авторизацию доменную
- отключаем настройку NTP
- отключаем настройку node_exporter
### 2. Обновляем подмодуль с Kubespray и проверяем что он стоит на необходимом тэге
```bash
cd env/<ОКРУЖЕНИЕ_XX>
git submodule update --init --recursive
cd kubespray
git status
cd ../..
```
### 3. Готовим окружение Ansible
[Kubespray docs: Ansible Python Compatibility](./kubespray/docs/ansible/ansible.md#ansible-python-compatibility)
| Ansible Version | Python Version |
|-----------------|----------------|
| 2.11 | 2.7,3.5-3.9 |
| 2.12 | 3.8-3.10 |
| >=2.16.4 | 3.10-3.12 |
```bash
cd env/<ОКРУЖЕНИЕ_XX>
export VENVDIR=kubespray-venv
export KUBESPRAYDIR=kubespray
python3 -m venv ./$VENVDIR
source $VENVDIR/bin/activate
pip3 install -U -r $KUBESPRAYDIR/requirements.txt
```
### 4. Запускаем раскатку кластера
```bash
cd env/<ОКРУЖЕНИЕ_XX>
export VENVDIR=kubespray-venv
export KUBESPRAYDIR=kubespray
source $VENVDIR/bin/activate
cd $KUBESPRAYDIR
ansible-playbook cluster.yml -i ../inventory/inventory.ini -bkK -v
```
### 5. Копируем конфиг для подключения к кластеру через kubectl
Копируем с любой из master-нод конфиг:
```text
/etc/kubernetes/admin.conf
```
К себе на машину и правим, в опции `server` указываем вместо `127.0.0.1` внешний адрес мастер-ноды.
Затем настраиваем любым удобным способом работу с кластером через него:
[Kubespray docs: Access the kubernetes cluster](./kubespray/docs/getting_started/setting-up-your-first-cluster.md#access-the-kubernetes-cluster)
## Дополнительные действия с кластером через Kubespray
Дополнительные теги:
[Kubespray docs: Ansible tags](./kubespray/docs/ansible/ansible.md#ansible-tags)
Добавление/удаление нод:
[Kubespray docs: Adding/replacing a node](./kubespray/docs/operations/nodes.md)
Обновление кластера:
[Kubespray docs: Upgrading Kubernetes in Kubespray](./kubespray/docs/operations/upgrades.md)