Pods
Поды — неделимая сущность объекта в Kubernetes. Каждый Pod может включать в себя несколько контейнеров (минимум, 1). Рассмотрим несколько примеров, как работать с подами. Все команды выполняем на мастере.
Создание
Поды создаются командой kubectl, например:
kubectl run nginx --image=nginx:latest --port=80
* в данном примере мы создаем под с названием nginx, который в качестве образа Docker будет использовать nginx (последнюю версию); также наш под будет слушать запросы на порту 80.
Чтобы получить сетевой доступ к созданному поду, создаем port-forward следующей командой:
kubectl port-forward nginx --address 0.0.0.0 8888:80
* в данном примере запросы к кластеру kubernetes на порт 8888 будут вести на порт 80 (который мы использовали для нашего пода).
Команда kubectl port-forward является интерактивной. Ее мы используем только для тестирования. Чтобы пробросить нужные порты в Kubernetes используются Services — об этом будет сказано ниже.
Можно открыть браузер и ввести адрес http://10.10.50.200:8888 — должна открыться страница приветствия для NGINX.
Просмотр
Получить список всех подов в кластере можно командой:
kubectl get pods
Например, в нашем примере мы должны увидеть что-то на подобие:
NAME READY STATUS RESTARTS AGE
nginx 1/1 Running 0 3m26s
Посмотреть подробную информацию о конкретном поде можно командой:
kubectl describe pods nginx
Запуск команд внутри контейнера
Мы можем запустить одну команду в контейнере, например, такой командой:
kubectl exec nginx -- date
* в данном примере будет запущена команда date внутри контейнера nginx.
Также мы можем подключиться к командной строке контейнера командой:
kubectl exec --tty --stdin nginx -- /bin/bash
* обратите внимание, что не у всех образов для контейнеров установлена оболочка bash, например для образов на основе alpine. Если мы полчим ошибку error: Internal error occurred: error executing command in container, то можно вместо bash попробовать ввести sh.
Удаление
Для удаления пода вводим:
kubectl delete pods nginx
