Установка и настройка Kubernetes на Linux CentOS 9
Пошаговое руководство по развертыванию Kubernetes-кластера с использованием kubeadm на CentOS 9
Введение
Kubernetes - мощная система оркестрации контейнеров, позволяющая управлять распределенными приложениями. В этом руководстве мы настроим кластер из одного узла для тестирования и разработки.
Требования
Перед началом убедитесь, что:
- Минимальные системные требования: 2 CPU, 2GB RAM, 20GB HDD
- Статический IP-адрес на сервере
- Доступ с правами root или через sudo
- Отключен SELinux или настроен в permissive режиме
- Выключен swap
Установка
Подготовка
1# Отключение swap 2sudo swapoff -a 3sudo sed -i '/ swap / s/^/#/' /etc/fstab 4 5# Настройка сетевых параметров 6cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf 7br_netfilter 8EOF 9 10cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf 11net.bridge.bridge-nf-call-ip6tables = 1 12net.bridge.bridge-nf-call-iptables = 1 13EOF 14 15sudo sysctl --system 16 17# Установка Docker 18sudo dnf install -y docker 19sudo systemctl enable --now docker
Процесс установки
1# Добавление репозитория Kubernetes 2cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo 3[kubernetes] 4name=Kubernetes 5baseurl=https://pkgs.k8s.io/core:/stable:/v1.28/rpm/ 6enabled=1 7gpgcheck=1 8gpgkey=https://pkgs.k8s.io/core:/stable:/v1.28/rpm/repodata/repomd.xml.key 9EOF 10 11# Установка компонентов 12sudo dnf install -y kubelet kubeadm kubectl --disableexcludes=kubernetes 13 14# Запуск kubelet 15sudo systemctl enable --now kubelet 16 17# Инициализация кластера 18sudo kubeadm init --pod-network-cidr=192.168.0.0/16 19 20# Настройка конфигурации 21mkdir -p $HOME/.kube 22sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config 23sudo chown $(id -u):$(id -g) $HOME/.kube/config
Настройка
1# Установка сетевого плагина Calico 2kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.26.1/manifests/tigera-operator.yaml 3kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.26.1/manifests/custom-resources.yaml 4 5# Проверка состояния кластера 6kubectl get nodes 7kubectl get pods --all-namespaces
Важно: Для production-окружения настройте:
- TLS-аутентификацию
- RBAC-правила
- Network Policies
Типичные ошибки и их решения
Заключение
Теперь у вас работает базовый Kubernetes-кластер. Для дальнейшей настройки изучите документацию Kubernetes и рассмотрите:
- Установку Dashboard
- Настройку persistent storage
- Реализацию мониторинга
Команды
Проверка версии Kubernetes
1kubectl version --short
Просмотр состояния узлов
1kubectl get nodes -o wide
Перезапуск kubelet
sudo systemctl restart kubelet
Решение проблем
Ошибка cgroup driver
Убедитесь, что Docker и kubelet используют одинаковый cgroup driver
1sudo sed -i 's/^ExecStart=.*/ExecStart=\/usr\/bin\/kubelet --cgroup-driver=systemd/' /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf 2sudo systemctl daemon-reload 3sudo systemctl restart kubelet
Сбой при инициализации кластера
Выполните сброс и повторную инициализацию
1sudo kubeadm reset -f 2sudo rm -rf /etc/kubernetes/*
Ноды в статусе NotReady
Проверьте установку сетевого плагина и настройки firewall
1sudo firewall-cmd --permanent --add-port={6443,2379-2380,10250,10259,10257}/tcp 2sudo firewall-cmd --reload