Установка и настройка Kubernetes на linux ubuntu 23.10
Подробное руководство по установке, настройке и оптимизации Kubernetes для linux ubuntu 23.10
Введение
Kubernetes (K8s) – платформа для оркестрации контейнерных приложений. В этом руководстве мы:
- Установим минимальный production-ready кластер
- Настроим сетевое взаимодействие
- Проверим работоспособность системы
- Рассмотрим частые проблемы
Требования
Минимальные требования:
- 2+ ядра CPU
- 2+ ГБ RAM
- 20+ ГБ дискового пространства
- Ubuntu 23.10 (обновленная)
- Доступ с правами sudo
Обязательные условия:
- Отключенный swap:
swapoff -a
- Уникальные hostnames на всех узлах
- Совпадение времени на всех узлах (NTP)
Установка
Полная установка Kubernetes Cluster
Подготовка
1# Обновление пакетов 2sudo apt update && sudo apt upgrade -y 3 4# Установка зависимостей 5sudo apt install -y apt-transport-https ca-certificates curl 6 7# Добавление GPG-ключей 8curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - 9 10# Настройка репозитория 11echo 'deb https://apt.kubernetes.io/ kubernetes-xenial main' | sudo tee /etc/apt/sources.list.d/kubernetes.list 12 13# Настройка параметров ядра 14cat << EOF | sudo tee /etc/modules-load.d/k8s.conf 15br_netfilter 16EOF 17 18cat << EOF | sudo tee /etc/sysctl.d/k8s.conf 19net.bridge.bridge-nf-call-ip6tables = 1 20net.bridge.bridge-nf-call-iptables = 1 21EOF 22 23sudo sysctl --system 24 25 26### Процесс установки 27 28```bash 29# Установка компонентов 30sudo apt update 31sudo apt install -y kubelet kubeadm kubectl 32sudo apt-mark hold kubelet kubeadm kubectl 33 34# Инициализация кластера (на master-узле) 35sudo kubeadm init --pod-network-cidr=10.244.0.0/16 36 37# Настройка конфигурации для пользователя 38mkdir -p $HOME/.kube 39sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config 40sudo chown $(id -u):$(id -g) $HOME/.kube/config 41 42# Установка сетевого плагина (Calico) 43kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
Проверка:
1kubectl get nodes 2kubectl get pods --all-namespaces
Настройка
Базовая конфигурация кластера:
- Добавление worker-узлов:
1kubeadm join <master-ip>:<port> --token <token> --discovery-token-ca-cert-hash <hash>
- Настройка автоматического завертывания обновлений:
1sudo systemctl enable kubelet
- Настройка автодополнения для kubectl:
1echo 'source <(kubectl completion bash)' >> ~/.bashrc
Типичные ошибки и их решения
1. Ошибка cgroup driver:
error: failed to run Kubelet: misconfiguration: kubelet cgroup driver: "systemd" is different from docker cgroup driver: "cgroupfs"
Решение:
1sudo mkdir /etc/docker 2cat << EOF | sudo tee /etc/docker/daemon.json 3{ 4 "exec-opts": ["native.cgroupdriver=systemd"] 5} 6EOF 7sudo systemctl restart docker
2. Нода в статусе NotReady: Проверьте:
- Состояние сетевого плагина
- Ограничения firewall
- Соответствие версий компонентов
Заключение
Вы успешно установили Kubernetes-кластер на Ubuntu 23.10. Для дальнейшей настройки:
- Настройте RBAC-политики
- Установите Dashboard интерфейс
- Настройте мониторинг через Prometheus
- Регулярно обновляйте компоненты безопасности
Команды
Установка зависимостей
1sudo apt install -y apt-transport-https ca-certificates curl
Добавление репозитория Kubernetes
1echo 'deb https://apt.kubernetes.io/ kubernetes-xenial main' | sudo tee /etc/apt/sources.list.d/kubernetes.list
Инициализация кластера
1sudo kubeadm init --pod-network-cidr=10.244.0.0/16
Решение проблем
Ошибка подключения к API-серверу
Проверьте статус kubelet: systemctl status kubelet Убедитесь что admin.conf настроен правильно
1sudo journalctl -u kubelet -f
Сетевые пакеты не проходят между нодами
Проверьте установку сетевого плагина Отключите firewall или настройте правила
1kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml