Table of Contents

DevOps2. Использование Kubernetes

Программа курса

Модуль 0. Подготовка к занятию

  1. Узнать и записать свой номер стенда: X=
  2. Сообщить его в чат преподавателю

Модуль 1. Развертывание стенда и kubernetes кластера

Теория

Лабораторные работы: Развертывание стенда и kubernetes кластера

1.1 Схема стенда, импорт, настройка и запуск VM gate и server

Запустите с правами Administrator

C:\cmder\cmder.exe

bash

cd

test -d conf && rm -rf conf

git clone http://val.bmstu.ru/unix/conf.git

cd conf/virtualbox/

!!! 9 - это номер курса, вместо X укажите Ваш номер стенда, если не знаете его, спросите преподавателя !!!

./setup.sh X 9

1.2 Настройка сети VM gate и server

# sh net_gate.sh

# init 6
# sh net_server.sh

# init 6

1.3 Подготовка инфраструктуры для kubespray

server:~# git -C conf/ pull

server:~# sh conf/dns.sh
# cat /etc/resolv.conf
search corpX.un
nameserver 192.168.X.10
# nslookup kubeN
gate:~# git -C conf/ pull

gate:~# sh conf/dhcp.sh

1.4 Разворачивание кластера Kubernetes через Kubespray

1.5 Развертывание GitLab (для 3-го модуля)

1.6 Развертывание рабочей станции пользователя (для 4-го модуля)

server# apt install apache2

server# rm /var/www/html/index.html

server# cp wild.crt /var/www/html/ca.crt

1.7 Разработка образов приложений (для 2-го модуля)

1.8 Работа с кластером Kubernetes

bash -c '
scp /var/www/html/ca.crt kube1:/usr/local/share/ca-certificates/
ssh kube1 update-ca-certificates
ssh kube1 systemctl restart containerd
scp /var/www/html/ca.crt kube2:/usr/local/share/ca-certificates/
ssh kube2 update-ca-certificates
ssh kube2 systemctl restart containerd
scp /var/www/html/ca.crt kube3:/usr/local/share/ca-certificates/
ssh kube3 update-ca-certificates
ssh kube3 systemctl restart containerd
'

kubeN#
crictl pull server.corpX.un:5000/student/gowebd
crictl images
crictl rmi server.corpX.un:5000/student/gowebd

Модуль 2. Объекты kubernetes, helm

Теория

Теория через лабораторные работы: Управление объектами Kubernetes

2.1 deployment, service, проверка статуса пода, настройка лимитов

kube1:~# mkdir pywebd-k8s;cd $_
kube1:~/pywebd-k8s# kubectl -n my-ns exec -ti pods/my-webd-<TAB> -- sh

~ $ kill -STOP 16

kube1:~/pywebd-k8s# kubectl get pods -n my-ns --watch

2.2 volumes, nodeAffinity, helm

2.3 ingress

server.corpX.un:~# cat /etc/bind/corpX.un
...
pywebd  A       192.168.X.221
        A       192.168.X.222
        A       192.168.X.223
...
$ curl http://pywebd.corpX.un

2.4 configmap, secret

$ curl --connect-to "":"":server.corpX.un:4443 https://pywebd.corpX.un
$ curl --connect-to "":"":192.168.X.64:443 https://pywebd.corp24.un

server# cat /etc/bind/corpX.un
...
pywebd          A       192.168.X.64
...

Модуль 3. Создание CI/CD в kubernetes

3.1 Запуск gitlab-runner в kubernetes

3.2 Сборка докер контейнера в kubernetes

3.3 Разворачивание нужной версии приложения в kubernetes

kube1:~# mkdir gowebd-k8s;cd $_
kube1:~/gowebd-k8s# cp my-webd-deployment.yaml my-webd-deployment-env.yaml

kube1:~/gowebd-k8s# cat my-webd-deployment-env.yaml
...
        image: server.corpX.un:5000/student/gowebd:$VER
...
kube1:~/gowebd-k8s# export VER=ver1.2

kube1:~/gowebd-k8s# envsubst < my-webd-deployment-env.yaml | kubectl apply -f - -n my-ns

kubeN# curl my-webd.my-ns.svc.cluster.local
server.corpX.un:~# cat /etc/bind/corpX.un
...
gowebd  A       192.168.X.221
        A       192.168.X.222
        A       192.168.X.223
...
$ curl http://gowebd.corpX.un
gitlab-runner@server:~$ helm list -n my-ns

Модуль 4. Дополнительные материалы

4.1 Доступ к приложениям в Bare-Metal Kubernetes

server:~# ssh-copy-id gate

4.2 Стратегии деплоя в Kubernetes

4.3 Работа с хранилищами в Kubernetes и восстановление после аварии

4.4 Продолжение восстановления после аварии и Обновление кластера Kubernetes

“Хором” в классе можно выполнить шаг 4

выполняем работы:

4.5 Мониторинг кластера Kubernetes

4.6 Бюджетная безотказная сеть для кластера