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.