[DO-143] Final prepare for env k8s avroid_prod (!2)
DO-1431 Co-authored-by: denis.patrakeev <denis.patrakeev@avroid.tech> Reviewed-on: https://git.avroid.tech/K8s/k8s-deploy/pulls/2
This commit is contained in:
111
env/avroid_prod/README.md
vendored
111
env/avroid_prod/README.md
vendored
@@ -3,52 +3,41 @@
|
||||
[Requirements](./kubespray/README.md#requirements)
|
||||
|
||||
## Версия Kuberspray и Kubernetes у текущих инвентору
|
||||
| Kuberspray | v2.25.1 |
|
||||
|------------|----------|
|
||||
| Kubernetes | v1.29.10 |
|
||||
| Kuberspray | v2.26.0 |
|
||||
|------------|---------|
|
||||
| Kubernetes | v1.30.4 |
|
||||
|
||||
# TODO: ???
|
||||
## Особенности развертывания кластера
|
||||
| Модуль | Комментарий |
|
||||
|------------------------|------------------------------------------------------------------------------|
|
||||
| Cluster name | k8s.avroid.local |
|
||||
| Сеть | Только IPv4 |
|
||||
| Сеть | 172.24.0.0/18 - подсеть сервисов |
|
||||
| Сеть | 172.24.64.0/18 - подсеть подов |
|
||||
| Сеть | 10000-32767 - список портов, разрешённый к форвардингу на нодах |
|
||||
| Маска подсети на ноду | 25 (Итого - max 126 на ноде и max 128 нод) |
|
||||
| CNI | calico |
|
||||
| DNS zone | k8s.<ОКРУЖЕНИЕ_XX>.local |
|
||||
| DNS | Dual CoreDNS + nodelocaldns |
|
||||
| Etcd | данные сервиса в /data/etcd на отдельном блочном устройстве с ext4) |
|
||||
| Core | containerd (/var/lib/containerd на отдельном блочном устройстве с XFS) |
|
||||
| Приватные регистри | nexus.local.club в настройках |
|
||||
| HA | API Server |
|
||||
| NTP | Настроен с российскими серверами и Московской таймзоной |
|
||||
| Ingress | Nginx ingress controller 80 --> 30100 (Node), 443 --> 30101 (Node) |
|
||||
| Дополнительные сервисы | Kubernetes dashboard, Helm, Metrics Server, Cert manager, netchecker |
|
||||
| netchecker | netchecker |
|
||||
| Local storage | Локальный диск на master-нодах для Prometheus через local_volume_provisioner |
|
||||
| Модуль | Комментарий |
|
||||
|--------------------------|------------------------------------------------------------------------------------------|
|
||||
| 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 |
|
||||
|
||||
|
||||
## Доступ до развёрнутых сервисов
|
||||
### Kubernetes Dashboard:
|
||||
[Kubespray docs: Accessing Kubernetes Dashboard](./kubespray/docs/getting_started/getting-started.md#accessing-kubernetes-dashboard)
|
||||
|
||||
[Official docs: Accessing Kubernetes Dashboard](https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/#accessing-the-dashboard-ui)
|
||||
|
||||
### Ingress NGINX Controller
|
||||
https://github.com/kubernetes/ingress-nginx/blob/main/README.md#readme
|
||||
|
||||
С кастомными патчами из ./pathes/ingress_nginx
|
||||
<worker_node>:30080/TCP --> nginx:80/TCP
|
||||
|
||||
<worker_node>:30100/TCP --> nginx:80/TCP
|
||||
|
||||
<worker_node>:30101/TCP --> nginx:443/TCP
|
||||
|
||||
### DNS
|
||||
https://github.com/kubernetes/dns/blob/master/docs/specification.md
|
||||
|
||||
<worker_node>:53/UDP
|
||||
<worker_node>:30081/TCP --> nginx:443/TCP
|
||||
|
||||
### netchecker
|
||||
https://github.com/Mirantis/k8s-netchecker-server
|
||||
@@ -60,7 +49,6 @@ http://<IP_АДРЕС_НОДЫ>:31081/api/v1/connectivity_check
|
||||
http://<IP_АДРЕС_НОДЫ>:31081/metrics
|
||||
|
||||
|
||||
|
||||
## Подготовка окружения для развёртывания и развёртывание
|
||||
|
||||
### 1. Предварительная подготовка ВМ
|
||||
@@ -75,17 +63,12 @@ http://<IP_АДРЕС_НОДЫ>:31081/metrics
|
||||
```bash
|
||||
cd env/<ОКРУЖЕНИЕ_XX>
|
||||
git submodule update --init --recursive
|
||||
cd kukbespray
|
||||
cd kubespray
|
||||
git status
|
||||
cd ../
|
||||
cd ../..
|
||||
```
|
||||
|
||||
### 3. Переходим в каталог с Kubespray
|
||||
```bash
|
||||
cd kubespray
|
||||
```
|
||||
|
||||
### 4. Готовим окружение Ansible
|
||||
### 3. Готовим окружение Ansible
|
||||
[Kubespray docs: Ansible Python Compatibility](./kubespray/docs/ansible/ansible.md#ansible-python-compatibility)
|
||||
|
||||
| Ansible Version | Python Version |
|
||||
@@ -95,26 +78,25 @@ cd kubespray
|
||||
| >=2.16.4 | 3.10-3.12 |
|
||||
|
||||
```bash
|
||||
VENVDIR=kubespray-venv
|
||||
KUBESPRAYDIR=kubespray
|
||||
virtualenv --python=$(which python3) -m venv $VENVDIR
|
||||
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
|
||||
pip install -U -r requirements.txt
|
||||
```
|
||||
|
||||
# TODO: ???
|
||||
### 5. Копируем инвентори
|
||||
```bash
|
||||
cp -r <...>/inventory ./inventory/
|
||||
```
|
||||
|
||||
### 6. Запускаем раскатку кластера
|
||||
```bash
|
||||
ansible-playbook cluster.yml -i ../inventory/inventory.ini -bkK -v
|
||||
```
|
||||
|
||||
### 7. Копируем конфиг для подключения к кластеру через kubectl
|
||||
### 5. Копируем конфиг для подключения к кластеру через kubectl
|
||||
Копируем с любой из master-нод конфиг:
|
||||
```text
|
||||
/etc/kubernetes/admin.conf
|
||||
@@ -124,11 +106,6 @@ ansible-playbook cluster.yml -i ../inventory/inventory.ini -bkK -v
|
||||
Затем настраиваем любым удобным способом работу с кластером через него:
|
||||
[Kubespray docs: Access the kubernetes cluster](./kubespray/docs/getting_started/setting-up-your-first-cluster.md#access-the-kubernetes-cluster)
|
||||
|
||||
### 8. Применяем кастомные патчи для Ingress NGINX
|
||||
```bash
|
||||
kubectl --kubeconfig='config_k8s.<ОКРУЖЕНИЕ_XX>.local' -n ingress-nginx apply -f ./pathes/ingress_nginx/svc-ingress-nginx-controller.yaml
|
||||
kubectl --kubeconfig='config_k8s.<ОКРУЖЕНИЕ_XX>.local' -n ingress-nginx apply -f ./pathes/ingress_nginx/ic-ingress-nginx.yaml
|
||||
```
|
||||
|
||||
## Дополнительные действия с кластером через Kubespray
|
||||
Дополнительные теги:
|
||||
|
||||
Reference in New Issue
Block a user