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