Введение
Kubernetes — это бесплатный инструмент управления контейнерами с открытым исходным кодом. Он используется для автоматического развертывания приложений на основе контейнеров в среде кластера, а также для управления контейнерами Docker на узлах кластера kubernetes. Kubernetes также известен как K8s.
В этом руководстве мы настроим максимально простой двухузловой кластер Kubernetes. Первый узел с именем хоста kubernetes-master будет выступать в качестве главного узла.
Второй узел с именем хоста kubernetes-slave также будет работать под управлением Ubuntu 18.04 и будет подчиненным узлом, который просто присоединится к кластеру Kuberneets. Как только кластер Kubernetes будет запущен и запущен, будет реализован контейнер сервера Nginx.
Если вы намерены установить Kubernetes на удаленный сервер, продолжайте читать, в противном случае, если вы хотите установить Kubernetes на свой локальный компьютер, пропустите первый абзац «Подключение к серверу» и прочитайте следующий.
Подключение к серверу
Чтобы получить доступ к серверу, вам нужно знать IP-адрес. Вам также потребуется пароль для аутентификации.
Чтобы подключиться к серверу как root, введите эту команду:
ssh root@IP_DEL_SERVER
Далее вам будет предложено ввести пароль пользователя root.
Если вы не используете пользователя root, вы можете войти под другим именем пользователя с помощью той же команды, а затем изменить первый параметр:
ssh VOSTRO_UTENTE@IP_DEL_SERVER
Затем вам будет предложено ввести пароль пользователя.
Теперь вы подключены к своему серверу и готовы начать установку Kubernetes на Ubuntu 18.04 LTS.
Установить Докер
Установите Docker на оба сервера Ubuntu, затем на kubernetes-master и kubernetes-slave. Docker присутствует в официальных репозиториях Ubuntu.
Обновите список пакетов Ubuntu:
sudo apt-get update
Чтобы установить Docker, просто введите в терминале:
sudo apt install docker.io
После установки убедитесь, что автоматический запуск включен после перезагрузки сервера:
sudo systemctl enable docker
Установите Кубернетес
Нам снова нужно установить Kubernetes на все ноды. Затем выполните следующие команды на обоих серверах (ведущем и подчиненном), чтобы установить Kubernetes:
Добавьте ключ подписи Kubernetes:
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add
Добавьте репозиторий, необходимый для загрузки Kubernetes:
sudo apt-add-repository "deb http://apt.kubernetes.io/kubernetes-xenial main"
Установите кудаадм:
sudo apt install kubeadm
Kubernetes не будет работать, если ваша система использует память подкачки, поэтому вам нужно отключить память подкачки на всех ваших узлах (ведущих и подчиненных):
sudo swapoff -a
Убедитесь, что все узлы имеют уникальное имя хоста. Затем установите имя хоста для обоих узлов. Основная нода с именем хоста kubernetes-master:
sudo hostnamectl set-hostname kubernetes-master
Вторичный узел с именем хоста kubernetes-slave
sudo hostnamectl set-hostname kubernetes-slave
Баш Обновление:
exec bash
Важно правильно установить дату и время на всех нодах, иначе могут быть проблемы с TLS-сертификатами.
Настроить Kubernetes-мастер
Теперь мы готовы инициализировать главный узел Kubernetes. Для этого выполните следующую команду на своем основном узле:
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
Предупреждение: для инициализации основного узла требуется как минимум 2 ЦП, если у вас нет 2 ЦП, вы можете добавить флаг --ignore-preflight-errors = NumCPU, чтобы продолжить работу без ошибок. Не использовать на рабочем сервере, только для тестирования.
Следовательно:
sudo kubeadm init --pod-network-cidr=10.244.0.0/16 --ignore-preflight-errors=NumCPU
Предупреждение. Скопируйте последнюю часть выходного сообщения об инициализации главного узла Kubernetes, так как позже потребуется команда для доступа с подчиненного узла Kubernetes.
Запустите эти команды, предложенные при инициализации Kubernetes, используя пользователя без полномочий root с привилегиями sudo:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Следующим шагом является реализация сети pod. Сеть pod используется для связи между узлами в кластере Kubernetes. Для этого мы будем использовать сеть Flannel pod:
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
Используйте следующую команду для подтверждения статуса:
kubectl get pods --all-namespaces
Настроить Kubernetes-ведомое устройство
Теперь мы можем подключить подчиненный узел к кластеру Kubernetes. Используйте команду соединения kubeadm, скопированную ранее из выходных данных инициализации kubernetes-master: Предупреждение: не копируйте следующий код примера, он не будет работать на вашем сервере.
sudo kubeadm join 10.1.1.9:6443 --token qdjnpd.5glu39uxr92xarsj --discovery-token-ca-cert-hash sha256:ed0684156c718caf425ceae6c85a56c05f7b49037cde3a2f1fd57430a4f58f89
Это может занять несколько минут.
На главном узле Kubernetes-master введите следующую команду, чтобы подтвердить соединение с узлом kubernetes-slave:
kubectl get nodes
Разверните сервис в кластере Kubernetes
Для проверки реализации вы можете использовать Nginx в кластере Kubernetes. Запустите эти команды с основного узла kubernetes-master:
kubectl run nginx --image=nginx --port 80
kubectl expose deploy nginx --port 80 --target-port 80 --type NodePort
Теперь вы должны увидеть новый док-контейнер Nginx на вторичном узле, ведомом:
sudo docker ps
Чтобы убедиться, что служба Nginx запущена и работает, перечислите все службы, доступные на главном узле, и используйте команду curl для выполнения HTTP-запроса на IP-адресе кластера:
kubectl get svc
Вы должны получить выходное сообщение, подобное следующему:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 5m52s
nginx NodePort 10.103.44.31 <none> 80:new_nginx_port/TCP 2m50s
Чтобы убедиться, что все работает, подключитесь к IP-адресу вторичного узла, kubernetes-slave, используя порт, показанный в предыдущем выводе. Вы должны увидеть страницу приветствия Nginx:
http://INDIRIZZO_IP_NODO_SLAVE:new_nginx_port
Если вы хотите удалить приложение Nginx, сначала удалите службу Nginx с корневого узла:
kubectl delete service nginx
Чтобы обеспечить удаление службы, введите следующую команду:
kubectl get services
Вы должны получить выходное сообщение, подобное следующему:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 9m59s
Затем, чтобы удалить дистрибутив Nginx:
kubectl delete deployment nginx
Команда подтверждения:
kubectl get deployments
Вы должны получить выходное сообщение, подобное следующему:
No resources found.
Установка и настройка Kubernetes на Ubuntu 18.04 LTS завершена