Установка и настройка Kubernetes на linux ubuntu 20.04
Подробное руководство по установке, настройке и оптимизации Kubernetes для linux ubuntu 20.04
Введение
Kubernetes (k8s) - мощная система оркестрации контейнеров для автоматизации развертывания, масштабирования и управления приложениями. Это руководство поможет:
- Установить последнюю стабильную версию Kubernetes
- Настроить кластер с одним мастер-узлом
- Подключить сетевой плагин
- Решить типичные проблемы при развертывании
Требования
Перед началом убедитесь, что:
- 2+ ГБ оперативной памяти
- 2+ ядра CPU
- Ubuntu 20.04 LTS (Focal Fossa)
- Права sudo/root
- Стабильное интернет-соединение
- Отключен swap:
swapoff -a
- Уникальные hostnames для всех узлов
Установка
Подготовка
1# Обновить пакеты 2sudo apt update && sudo apt upgrade -y 3 4# Установить базовые зависимости 5sudo apt install -y apt-transport-https ca-certificates curl 6 7# Добавить GPG-ключ Kubernetes 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# Обновить кэш пакетов 14sudo apt update
Процесс установки
1# Установить компоненты 2sudo apt install -y kubelet kubeadm kubectl 3 4# Закрепить версии пакетов 5sudo apt-mark hold kubelet kubeadm kubectl 6 7# Инициализировать кластер 8sudo kubeadm init --pod-network-cidr=10.244.0.0/16 9 10# Настроить доступ для пользователя 11mkdir -p $HOME/.kube 12sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config 13sudo chown $(id -u):$(id -g) $HOME/.kube/config 14 15# Установить сетевой плагин (Calico) 16kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
Настройка
После успешной установки:
- Проверить статус узлов:
1kubectl get nodes
- Убедиться, что все поды в состоянии Running:
1kubectl get pods --all-namespaces
- Для добавления worker-узлов используйте команду из вывода kubeadm init
- Настроить автоматический запуск служб:
1sudo systemctl enable kubelet
Типичные ошибки и их решения
Ошибка: 'kubelet не запущен'
- Решение: Проверить журнал systemd:
journalctl -xeu kubelet
Ошибка: 'crictl not found'
- Решение: Установить CRI tools:
sudo apt install -y cri-tools
Проблема: Ноды в состоянии NotReady
- Решение: Проверить сетевой плагин и фаервол:
sudo ufw allow 6443/tcp sudo ufw allow 10250/tcp
Заключение
Вы успешно развернули Kubernetes кластер на Ubuntu 20.04. Для дальнейшей настройки:
- Добавьте worker-узлы
- Настройте Persistent Volumes
- Установите Dashboard интерфейс
- Включите мониторинг через Prometheus
Команды
Обновление пакетов системы
sudo apt update && sudo apt upgrade -y
Установка основных компонентов Kubernetes
1sudo apt install -y kubelet kubeadm kubectl
Инициализация кластера
1sudo kubeadm init --pod-network-cidr=10.244.0.0/16
Проверка состояния узлов
1kubectl get nodes
Решение проблем
Ошибка cgroup driver mismatch
Синхронизировать драйверы Docker и kubelet
1sudo sed -i 's/^ExecStart=.*/ExecStart=/usr/bin/dockerd -H fd:// --containerd=\/run\/containerd\/containerd.sock --exec-opt native.cgroupdriver=systemd/' /lib/systemd/system/docker.service && sudo systemctl daemon-reload && sudo systemctl restart docker
Порт 6443 недоступен
Проверить фаервол и запущенные сервисы
sudo lsof -i :6443 && sudo ufw allow 6443/tcp
Сетевой плагин не работает
Переустановить Calico с правильным CIDR
1kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml