Подведем теоретический итог изученного из предыдущих частей
Cluster - логический сегмент серверов с Kubernetes
Nodes - сервера с установленным Kubernetes
Service - предоставляет доступ к Deployment с помощью:
1. ClusterIP
2. NodePort
3. LoadBalancer
4. ExternalName
Deployment - развертывание, логическое объединение однотипных Pod
Pod - объект, содержит один или более работающих контейнеров
Закрепим все знания
Вывод доступной информации
Проверим работоспособное состояние хотя-бы одной ноды:
$ kubectl get nodes NAME STATUS ROLES AGE VERSION kubernetes-master Ready master 3d20h v1.18.2 kubernetes-slave NotReady <none> 3d19h v1.18.2
Проверим сетевую часть:
$ kubectl get services NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 3d20h
Проверим наличие работающих Pod:
$ kubectl get pods No resources found in default namespace.
И наличие развертываний:
$ kubectl get deployments No resources found in default namespace.
Манипулирование и управление контейнерами docker в kubernetes
Создадим объект Pod с одним контейнером на базе nginx:
$ kubectl run mynginx --image=nginx --port=8888 --labels app=mynginx pod/mynginx created
Проверяем, статус должен смениться через некоторое время:
$ kubectl get pods NAME READY STATUS RESTARTS AGE mynginx 0/1 ContainerCreating 0 27s
$ kubectl get pods NAME READY STATUS RESTARTS AGE mynginx 1/1 Running 0 63s
Выведем подробную информацию о Pod:
$ kubectl describe pods mynginx
Формат выполнения команд - kubectl kubectl exec [POD] -- [COMMAND]
Исполнить команду в контейнере mynginx в Pod:
$ kubectl exec mynginx -- uname Linux
Перейти в оболочку в контейнере mynginx в Pod:
$ kubectl exec -it mynginx -- bash root@mynginx:/#
Вывести логи:
$ kubectl logs mynginx /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty... /docker-entrypoint.sh: Looking for shell scripts in /dock... /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-... 10-listen-on-ipv6-by-default.sh: Getting the checksum of ... 10-listen-on-ipv6-by-default.sh: Enabled listen on IPv6 i... /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-... /docker-entrypoint.sh: Configuration complete; ready for ...
Удалим наш Pod:
$ kubectl delete pods mynginx pod "mynginx" deleted
Проверяем:
$ kubectl get pods No resources found in default namespace.
Создадим Pod с использованием манифеста и двух разных web серверов
Создадим файл манифеста myweb.yaml:
Где основное: kind: Pod - что создаем name: myweb - имя создаваемого объекта Pod namespace: default - в каком пространстве имен spec: - описание запуска контейнеров
Запустим Pod на основе манифеста:
$ kubectl apply -f myweb.yaml pod/myweb created
Проверяем работоспособность:
$ kubectl get pods NAME READY STATUS RESTARTS AGE myweb 2/2 Running 0 5m44s
Перенаправление ip:порт 192.168.0.128
Порта 88 сервера к порту 80 контейнера
Порта 99 сервера к порту 8080 контейнера