Проект «SnakeProject» Михаила КозловаРегистрация

Навигация
⇒FreeBSD and Nix⇒

⇐CISCO
⇐Voice(Asterisk\Cisco)
⇐Microsoft
⇐Powershell
⇐Python
⇐SQL\T-SQL
⇐1С
⇐Общая
⇐WEB Разработка
⇐ORACLE SQL \ JAVA
⇐Мото

Щупаем Kubernetes за всякое часть 1


 

Щупаем Kubernetes за всякое часть 1


Предполагается:
в системе установлен Docker
Вы обладаете базовыми навыками работы с Docker


Машинаы с Linux имеют адреса:
Мастер - 192.168.0.128
Слейв - 192.168.0.129


Если незнакомы с Docker, пройдите сначала пособие:
http://snakeproject.ru/python/touch_docker.html


Вкратце поставить и включить Docker в Ubuntu 18.04:
$ sudo apt install docker.io
$ sudo systemctl enable docker


Установка Kubernetes на примере Ubuntu 18.04

Начнем с добавления ключа подписи Kubernetes:
$ sudo 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"

Установите Kubernetes:
$ sudo apt install kubeadm 

Kubernetes откажется работать, если ваша система использует память подкачки

Отключим память подкачки на всех узлах (master и slave):
$ sudo swapoff -a

Убедитесь, что все узлы имеют уникальное имена

Установите hostname с именем kubernetes-master:
$ sudo hostnamectl set-hostname kubernetes-master

*** В будущем для слейва для присоединения в кластер
Подчиненный узел с именем kubernetes-slave:
$ sudo hostnamectl set-hostname kubernetes-slave
***

Узлы должны иметь точное время и дату, или возникнут проблемы с сертификатами TLS


Инициализировать мастер-сервер Kubernetes

Теперь мы готовы инициализировать мастер-узел Kubernetes

Для этого выполните следующую команду linux на вашем главном узле:
$ sudo kubeadm init --pod-network-cidr=192.168.0.0/24

Запишите всю команду kubeadm join из нижней части вывода, мой вывод:
kubeadm join 192.168.0.128:6443 --token zsqqzy.dm1l7llaf4a5dzkh \
    --discovery-token-ca-cert-hash sha256:...***

Эта команда будет использована при объединении кластера Kubernetes с slave узлами

Если будут вылезать ошибки пречека - решите их и дайте следующие команды:
sudo swapoff -a
sudo kubeadm reset
sudo systemctl daemon-reload
sudo systemctl restart docker
sudo systemctl restart kubelet
sudo iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X

Удалить все остановленные (неиспользуемые) Docker-контейнеры:
$ sudo docker container prune -f

Если уверены, что ничего серьезного, используйте команду ниже:
$ sudo kubeadm init --pod-network-cidr=192.168.0.0/24 --ignore-preflight-errors=all

Чтобы начать использовать кластер Kubernetes введите из под обычного пользователя:
$ 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

Сеть pod используется для связи между узлами в кластере Kubernetes

Для этого мы будем использовать сеть Flannel pod:
$ sudo kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

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

Используйте команду kubectl, чтобы подтвердить, что все в порядке и готово:
$ sudo kubectl get pods --all-namespaces

 

Присоединиться к Kubernetes Cluster

Теперь все должно быть готово к тому, чтобы наш узел присоединился к кластеру Kubernetes

Используйте команду kubeadm join, полученную ранее, чтобы присоединить SLAVE к кластеру:

$ sudo kubeadm join 192.168.0.128:6443 --token zsqqzy.dm1l7llaf4a5dzkh \
    --discovery-token-ca-cert-hash sha256:...***

На мастере Kubernetes подтвердите, что узел slave теперь является частью нашего кластера Kubernetes:
$ kubectl get nodes


На мастере создадим тестовое приложение на базе nginx

Аналог команды docker container run для kubernetes:
$ sudo kubectl run mynginx --image=nginx --port=8888 --labels app=mynginx

Когда статус перейдет с ContainerCreating на Running, все будет готово:
$ sudo kubectl get pods --selector app=mynginx

Если статус не уходит на нормальный:
$ sudo kubectl describe pod mynginx

Проблема с flannel, вылезла при запуске - /run/flannel/subnet.env no such file or directory

Решил на обоих нодах:
$ sudo sysctl net.bridge.bridge-nf-call-iptables=1

$ cat /run/flannel/subnet.env
FLANNEL_NETWORK=10.244.0.0/16
FLANNEL_SUBNET=192.168.0.1/24
FLANNEL_MTU=1450
FLANNEL_IPMASQ=true

Перенаправим порт 8888 локального компьютера к порту 80 контейнера:
$ sudo kubectl port-forward mynginx --address 192.168.0.128 8888:80
Forwarding from 192.168.0.128:8888 -> 80
Handling connection for 8888

Делаем тестовый запрос со слейва например:
$ curl -I http://192.168.0.128:8888
HTTP/1.1 200 OK
Server: nginx/1.17.10
Date: Mon, 01 Jun 2020 16:29:21 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Tue, 14 Apr 2020 14:19:26 GMT
Connection: keep-alive
ETag: "5e95c66e-264"
Accept-Ranges: bytes


Удаление приложения с мастера:
$ sudo kubectl delete svc mynginx
$ sudo kubectl delete deployment mynginx
$ sudo kubectl delete pods mynginx


Если после перезапуска системы kubelet не поднимается, скорее всего дело в свапе:
$ sudo swapoff -a
$ sudo journalctl -u kubelet
$ sudo systemctl start kubelet
$ sudo systemctl status kubelet

Отключить на постоянку, внесите изменения в: 
/etc/fstab

 


Комментарии пользователей

Эту новость ещё не комментировалиНаписать комментарий
Анонимам нельзя оставоять комментарии, зарегистрируйтесь!

© Snakeproject.ru создан в 2013 году. При копировании материала с сайта - оставьте ссылку.


Яндекс.Метрика

Goon Каталог сайтов Рейтинг@Mail.ru