Вижу твой текст из задания. Давай сравним то, что мы делали, с этим эталонным вариантом. Есть три критических отличия, из-за которых у нас могли быть ошибки:
## 1. Версия API и путь к сокету
* В задании: apiVersion: kubeadm.k8s.io/v1beta4 и сокет /var/run/containerd/containerd.sock.
* У нас было: v1beta3 и сокет /run/containerd/containerd.sock.
* Решение: Нужно использовать v1beta4, как в образце, и путь /var/run/....
## 2. Подсеть для Подов (PodSubnet)
* В задании: podSubnet: "10.244.0.0/16".
* У нас было: 192.168.128.0/17.
* Решение: Обязательно меняем на 10.244.0.0/16, иначе Calico не заработает по этой инструкции.
## 3. Настройки IPVS и Ресурсов
* В задании: Добавлены strictARP: true и systemReserved (cpu: 500m, memory: 512Mi). Это важно для стабильности.
------------------------------
## Что нужно сделать прямо сейчас (Работа над ошибками):
Давай приведем твой файл к идеальному соответствию заданию. Выполни на k8s-srv1:
1. Полный сброс (чтобы начать на чистую):
sudo kubeadm reset -f
rm -rf $HOME/.kube
2. Создание правильного конфига /etc/kubernetes/kubeadm-config.yaml:
(Я переписал его в точности по твоему скриншоту)
sudo tee /etc/kubernetes/kubeadm-config.yaml <<EOF
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"
cgroupDriver: systemd
EOF
3. Повторная инициализация:
sudo kubeadm init --config /etc/kubernetes/kubeadm-config.yaml --upload-certs
## Почему сейчас должно сработать:
Мы обновили версию API до v1beta4, которая лучше дружит с Kubernetes 1.35.0, и прописали резервирование ресурсов.
Как только команда завершится:
1. Сделай: mkdir -p $HOME/.kube && ln -s /etc/kubernetes/admin.conf $HOME/.kube/config (как в твоем варианте реализации).
2. Проверь: kubectl get nodes.
Попробуй этот вариант. Если kubeadm снова выдаст "Forbidden" в конце — не прерывай его, дай ему дойти до таймаута, а потом мы просто используем admin.conf.
Жду результат! На этот раз всё должно быть по инструкции.