Загрузка данных


Ты описываешь задание по инициализации Kubernetes‑кластера с `kubeadm` и правильным `kubeadm-config.yaml`. Ниже — готовый рабочий конфиг и краткая инструкция, которую можно сразу применять на `k8s-srv1`.

***

### 1. Конфигурационный файл `kubeadm-config.yaml`

На `k8s-srv1` как `root` (или через `sudo su -`) создай файл `/etc/kubernetes/kubeadm-config.yaml` со следующим содержимым (версия `v1beta4` и значения по твоему заданию):  

```yaml
apiVersion: kubeadm.k8s.io/v1beta4
kind: InitConfiguration
nodeRegistration:
  criSocket: unix:///var/run/containerd/containerd.sock
---
apiVersion: kubeadm.k8s.io/v1beta4
kind: ClusterConfiguration
kubernetesVersion: "1.35.0"
controlPlaneEndpoint: "192.168.0.253:7443"
networking:
  podSubnet: "10.244.0.0/16"
  serviceSubnet: "10.96.0.0/12"
---
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
mode: "ipvs"
ipvs:
  strictARP: true
---
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
clusterDNS:
  - 169.254.25.10
systemReserved:
  cpu: "500m"
  memory: "512Mi"
```

Создать этот файл можно одной командой (как в твоём примере):  

```bash
sudo su -
cat <<EOF > /etc/kubernetes/kubeadm-config.yaml
apiVersion: kubeadm.k8s.io/v1beta4
kind: InitConfiguration
nodeRegistration:
  criSocket: unix:///var/run/containerd/containerd.sock
---
apiVersion: kubeadm.k8s.io/v1beta4
kind: ClusterConfiguration
kubernetesVersion: "1.35.0"
controlPlaneEndpoint: "192.168.0.253:7443"
networking:
  podSubnet: "10.244.0.0/16"
  serviceSubnet: "10.96.0.0/12"
---
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
mode: "ipvs"
ipvs:
  strictARP: true
---
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
clusterDNS:
  - 169.254.25.10
systemReserved:
  cpu: "500m"
  memory: "512Mi"
EOF
```



***

### 2. Что означают ключевые параметры

- `InitConfiguration.criSocket: unix:///var/run/containerd/containerd.sock` — указывает, что CRI‑сокет `containerd` находится по этому пути.  
- `ClusterConfiguration.kubernetesVersion: "1.35.0"` — версия Kubernetes, которую будет инициализировать `kubeadm`.  
- `controlPlaneEndpoint: "192.168.0.253:7443"` — «плавающий» IP‑адрес (VIP) и порт `haproxy`, через который идёт доступ к API‑серверам в HA‑кластере. [itproblog](https://itproblog.ru/%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-kubernetes-%D0%B2-%D0%BE%D1%82%D0%BA%D0%B0%D0%B7%D0%BE%D1%83%D1%81%D1%82%D0%BE%D0%B9%D1%87%D0%B8%D0%B2%D0%BE%D0%B9-%D0%BA%D0%BE%D0%BD%D1%84%D0%B8/)
- `podSubnet: "10.244.0.0/16"` — CIDR для подов, должен совпадать с подсетью CNI (Calico), иначе поды не получат IP. [purpleschool](https://purpleschool.ru/knowledge-base/article/kubernetes-install)
- `serviceSubnet: "10.96.0.0/12"` — подсеть для сервисов Kubernetes.  
- `mode: "ipvs"` и `strictARP: true` — включают IPVS‑режим для `kube‑proxy` и настройку `strictARP`, что важно для MetalLB и HA‑балансировщиков. [habr](https://habr.com/ru/articles/886528/)
- `clusterDNS: - 169.254.25.10` — адрес NodeLocalDNS, который будет развернут позже и будет кэшировать DNS‑запросы на каждой ноде. [habr](https://habr.com/ru/articles/886528/)

***

### 3. Инициализация кластера на `k8s-srv1`

Выполни на `k8s-srv1`:

```bash
sudo kubeadm init --config /etc/kubernetes/kubeadm-config.yaml --upload-certs
```

Флаг `--upload-certs` загружает сертификаты в `Secret` кластера, чтобы другие control‑плейн‑ноды могли присоединиться без ручного копирования сертификатов. [kalyuzhnyy](https://kalyuzhnyy.ru/kak-nastroit-klaster-kubernetes-s-pomoshhju-kubeadm/)

Ожидаемый вывод примерно такой (процесс долгий из‑за загрузки образов):

```text
Your Kubernetes control-plane has initialized successfully!
```

***

### 4. Настройка `kubectl` на `k8s-srv1`

После инициализации обеспечь работу `kubectl` на самой ноде:

```bash
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
```

Проверь, что нода видна (статус `NotReady` нормален до установки CNI):

```bash
kubectl get nodes
```



***

Если напишешь, в какой именно части задания застрял (ошибка вывода, не совпадение CIDR, не стартует API‑сервер и т.п.), могу помочь уже по конкретному логу или выводу команд.