Kubernetes - это бесплатная система управления контейнерами с открытым исходным кодом, которая предоставляет платформу для автоматизации развертывания, масштабирования и эксплуатации контейнеров приложений на кластерах хост-компьютеров. С Kubernetes вы можете свободно использовать гибридную, локальную и публичную облачную инфраструктуру для выполнения задач развертывания вашей организации.
В этом руководстве мы расскажем, как установить Kubernetes на систему Ubuntu, а также развернуть Kubernetes на двухузловом кластере Ubuntu.
Поскольку мы будем использовать командную строку Ubuntu, Терминал, для выполнения всех команд, вы можете открыть его либо через системный Dash, либо сочетанием клавиш Ctrl+Alt+T.
Установка Kubernetes
Двухузловой кластер, который мы будем формировать в этой статье, будет состоять из ведущего узла и ведомого узла. На обоих узлах должен быть установлен Kubernetes. Поэтому выполните описанные ниже шаги, чтобы установить Kubernetes на оба узла Ubuntu.
Установка дополнительных утилит
перед установкой Kubernetes, необходимо установить дополнительные утилиты
1 2 3 | sudo apt-get update sudo apt-get install -y ca-certificates curl sudo apt-get install -y apt-transport-https |
Шаг 1: Установите Docker на оба узла
Установите утилиту Docker на оба узла, выполнив следующую команду от имени sudo в терминале каждого узла:
1 | sudo apt install docker.io |
Вам будет предложено выбрать Y/n, чтобы продолжить установку. Пожалуйста, введите Y и нажмите Enter для продолжения. После этого Docker будет установлен на вашу систему. Вы можете проверить установку, а также узнать номер версии Docker с помощью следующей команды:
1 | docker --version |
Шаг 2: Включите Docker на обоих узлах
Включите утилиту Docker на обоих узлах, выполнив следующую команду на каждом из них:
1 | sudo systemctl enable docker |
Шаг 3: Добавьте ключ подписи Kubernetes на обоих узлах
Выполните следующую команду, чтобы получить ключ подписи Kubernetes:
1 2 | sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg |
Вам будет предложено ответить Y/n, чтобы продолжить установку. Пожалуйста, введите Y и нажмите Enter для продолжения. После этого утилита Curl будет установлена в вашей системе.
Если сервер packages.cloud.google.com возвращает ошибку 500, можно использоватеь зеркало ниже
1 | sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://mirror.g-soft.info/packages.cloud.google.com/apt-key.gpg |
Шаг 4: Добавьте репозиторий Xenial Kubernetes на оба узла
Выполните следующую команду на обоих узлах, чтобы добавить репозиторий Xenial Kubernetes:
1 | echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list |
Шаг 5: Установите Kubeadm
Обновите список доступных пакетов
1 | sudo apt-get update |
Последним шагом в процессе установки является установка Kubeadm на оба узла с помощью следующей команды:
1 | sudo apt install kubeadm |
Вам будет предложено выбрать Y/n, чтобы продолжить установку. Пожалуйста, введите Y и нажмите Enter для продолжения. После этого Kubeadm будет установлен в вашей системе.
Вы можете проверить номер версии Kubeadm, а также проверить установку с помощью следующей команды:
1 | kubeadm version |
Развертывание Kubernetes
Шаг 1: Отключите память подкачки (если она работает) на обоих узлах
Вам необходимо отключить память подкачки на обоих узлах, поскольку Kubernetes не работает должным образом на системе, использующей память подкачки. Выполните следующую команду на обоих узлах, чтобы отключить память подкачки
1 | sudo swapoff -a |
Шаг 2: Дайте уникальные имена хостов каждому узлу
Выполните следующую команду на главном узле, чтобы присвоить ему уникальное имя хоста:
1 | sudo hostnamectl set-hostname master-node |
Выполните следующую команду на ведомом узле, чтобы присвоить ему уникальное имя хоста:
1 | hostnamectl set-hostname slave-node |
Шаг 3: Инициализация Kubernetes на ведущем узле
Выполните следующую команду от имени sudo на главном узле:
1 | sudo kubeadm init --pod-network-cidr=10.244.0.0/16 |
Процесс может занять минуту или больше в зависимости от вашего интернет-соединения. Вывод этой команды очень важен:
Пожалуйста, запишите следующую информацию из вывода:
Чтобы начать использовать ваш кластер, вам нужно выполнить следующие действия от имени обычного пользователя:
1 2 3 | mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config |
Теперь вы можете присоединить любое количество машин, выполнив следующие действия на каждом узле
от имени root:
1 | kubeadm join 192.168.100.6:6443 --token 06tl4c.oqn35jzecidg0r0m --discovery-token-ca-cert-hash sha256:c40f5fa0aba6ba311efcdb0e8cb637ae0eb8ce27b7a03d47be6d966142f2204c |
Вы можете проверить состояние главного узла, выполнив следующую команду:
1 | kubectl get nodes |
Вы увидите, что статус главного узла еще "не готов". Это связано с тем, что на главном узле еще не развернута ни одна капсула, и поэтому сетевой интерфейс контейнеров пуст.
Шаг 4: Развертывание сети pod на главном узле
Сеть pod - это средство связи между узлами сети. В этом руководстве мы развертываем сеть Flannel pod на нашем кластере с помощью следующей команды:
1 | sudo kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml |
Для просмотра состояния сети используйте следующую команду:
1 | kubectl get pods --all-namespaces |
Теперь, когда вы увидите статус узлов, вы увидите, что мастер-узел готов:
1 | sudo kubectl get nodes |
Шаг 5: Добавьте ведомый узел в сеть, чтобы сформировать кластер
На ведомом узле выполните следующую команду, которую вы создали при инициализации Kubernetes на ведущем узле:
1 | sudo kubeadm join 192.168.100.6:6443 --token 06tl4c.oqn35jzecidg0r0m --discovery-token-ca-cert-hash sha256:c40f5fa0aba6ba311efcdb0e8cb637ae0eb8ce27b7a03d47be6d966142f2204c |
Теперь, когда вы выполните следующую команду на ведущем узле, она подтвердит, что в вашей системе запущены два узла, ведущий узел и серверные узлы.
1 | sudo kubectl get nodes |
Это показывает, что двухузловой кластер теперь запущен и работает через систему управления контейнерами Kubernetes.
В этой статье мы рассказали об установке системы управления контейнерами Kubernetes на двух узлах Ubuntu. Затем мы сформировали простой двухузловой кластер и развернули на нем Kubernetes. Теперь вы можете развернуть и использовать любую службу, например, сервер Nginx или контейнер Apache, чтобы воспользоваться этой кластерной сетью.