Kubernetes, также известная как K8s, технология де-факто для управления контейнерами и оркестровки, известная своей сложностью настройки и внедрения на локальных серверах.

Однако с помощью этого пошагового руководства вы сможете легко настроить работающий кластер Kubernetes на сервере Ubuntu. После того, как он запущен и запущен, он легко настраивается и служит основой современных ИТ-усилий организации.

Как говорят, «Kubernetes, также известная как K8s, — это система с открытым исходным кодом для автоматизации развертывания, масштабирования и управления контейнерными приложениями».

Давайте рассмотрим некоторые основы-

Кластер Kubernetes состоит из набора рабочих машин, также называемых узлами. На узлах выполняются контейнерные приложения. В каждом кластере должен быть хотя бы один рабочий узел.

узел может быть виртуальной или физической машиной. Каждый узел управляется плоскостью управления, также известной как мастер, и содержит службы, необходимые для запуска модулей.

pod – это логический хост для контейнера. На рабочих узлах размещаются модули, которые являются компонентами рабочей нагрузки приложения. Управляющий узел (Master) управляет рабочими узлами (Nodes) и модулями в кластере.

Docker — это программная платформа, используемая для создания приложений на основе контейнеров — небольших и легких сред выполнения, использующая общие части ядра операционной системы, своего рода виртуализацию. В то время как контейнеры уже некоторое время используются в системах Linux и Unix. Docker, проект с открытым исходным кодом, запущенный в 2013 году, помог популяризировать эту технологию, сделав разработчикам еще проще, чем когда-либо, упаковывать свое программное обеспечение, чтобы "создать один раз и работать где угодно".

Образ контейнера Docker – это легкий, исполняемый и автономный программный пакет, который включает в себя все необходимое для запуска программного приложения. Например. Код, среды выполнения, системные библиотеки, системные инструменты и все необходимые настройки.

Контейнерное программное обеспечение всегда будет работать одинаково, независимо от внутренней инфраструктуры. Контейнеры изолируют программное обеспечение и программы от его среды и обеспечивают единую работу во всех средах, несмотря на различия.

Необходимые условия: 2 компьютера с не менее чем 2 ГБ ОЗУ и 2 ядрами ЦП, чем больше, тем лучше. В этом руководстве я буду использовать 2 капли Digital Ocean с 8 ГБ ОЗУ и 4 ядрами ЦП каждая.

Давайте настроим наш кластер Kubernetes:

SSH в один дроплет/сервер, назовем его Master:

1. Установите Докер

sudo apt-get update
sudo apt-get install \
 ca-certificates \
 curl \
 gnupg \
 lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg — dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
sudo apt-get update
echo \
 “deb [arch=$(dpkg — print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
 $(lsb_release -cs) stable” | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update && sudo apt install docker-ce docker-ce-cli containerd.io

2. Установить кубектл

Kubectl — это инструмент командной строки для запуска команд в кластере kubernetes, который используется для развертывания приложений, управления ресурсами и просмотра журналов службы.

sudo apt-get install -y apt-transport-https ca-certificates curl
sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg
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
sudo apt-get update
sudo apt-get install -y kubectl
kubectl version –client

3. Установить кубадм

Kubeadm выполняет все необходимые действия и операции, необходимые для максимально быстрого запуска работающего кластера.

sudo apt-get install -y apt-transport-https ca-certificates curl
sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg
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
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl

4. Создайте кластер

sudo swapoff -a
sudo sed -i ‘/ swap / s/^/#/’ /etc/fstab
sudo mkdir /etc/docker
 cat <<EOF | sudo tee /etc/docker/daemon.json
 {
 “exec-opts”: [“native.cgroupdriver=systemd”],
 “log-driver”: “json-file”,
 “log-opts”: {
 “max-size”: “100m”
 },
 “storage-driver”: “overlay2”
 }
 EOF
sudo systemctl enable docker
sudo systemctl daemon-reload
sudo systemctl restart docker
sudo kubeadm init

Не закрывайте соединение SSH и не копируйте команду Join (вывод после `kubeadm init`)
Если что-то пойдет не так, вы можете сбросить кластер, используя

sudo kubeadm reset

5. Настроить сервер Node

SSH на второй сервер, назовем его Node,
Выполните все шаги с 1 по 4, кроме

sudo kubeadm init

Вставьте скопированную команду (из мастера) в узел

Eg.

kubeadm join x.x.x.x:6443 — token k1kccu.chr9mx78mvwjl6y9 \
 — discovery-token-ca-cert-hash sha256:4e05d83baebb583ff89fa27d4cfb08eb1ed9aff54e22c196cec160b091091739826

Если вы каким-то образом забыли команду присоединения, вы можете распечатать ее с помощью приведенной ниже команды
В Мастере —` токен kubeadm create –print-join-command`

• Установите указанную ниже библиотеку как в Master, так и в Node.

sudo apt-get install -y nfs-common

6. После успешного присоединения

Запускаем все команды в Master, давайте проверим соединение

kubectl get nodes

Вывод, который вы видите, должен быть не готов. Но это нормально.

Установите CNI (контейнерный сетевой интерфейс)

CNI — это подключаемый модуль, отвечающий за вставку сетевого интерфейса в сеть контейнера и внесение любых необходимых изменений на хосте, необходимых для создания внутренней сети.

kubectl apply -f “https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d ‘\n’)”

Еще раз проверьте соединение

kubectl get nodes
kubectl get pods -n kube-system

7. Установите NGINX

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.0.5/deploy/static/provider/baremetal/deploy.yaml
* Verify Installation
kubectl get svc –namespace=ingress-nginx

Вот и все для этой статьи, теперь у вас есть работающий кластер kubernetes вместе с установленным NGINX.
В следующей статье мы увидим постоянные тома, постоянный том Утверждения, Ingress, Load Balancer, NodePort и Helm Charts.