Главные объекты K8s

  • Pod – объект в котором работают один или больше Docker контейнеров
  • Deployment – сэт одинаковых подов, нужен для Auto scaling и для обновления Docker image, держит минимальное количество работающих подов
  • Service – предоставляет доступ к Deployment через: ClusterIP, NodePort, LoadBalance или ExternalName
  • Nodes – сервера где все это работает
  • Cluster – логическое объединение нодов

И сегодня мы поговорим про Pod.

Создание и управление Pods

kubectl run POD_NAME --image=IMAGE_NAME --port=PORT

Эта команда создаст pod с именем POD_NAME из Docker image с именем IMAGE_NAME и откроет на этом поде порт с номеров PORT. Но есть и второй вариант создания пода:

kubectl apply -f FILE_NAME.yaml

Данная команда создаст файл на основании yaml файла. С минимально необходимым yaml файлом вы можете ознакомиться в моем GitHub`е.

Для вывода списка созданных подов можно использовать следующую команду:

kubectl get pods

Как удалить Pod? Очень просто, для этого есть команда:

kubectl delete pods POD_NAME

Окей, мы создали под, что дальше? А дальше у нас есть следующие команды для работы с Pods:

kubectl describe pods POD_NAME

Данная команда выведет подробнейшую информацию о поде с именем POD_NAME. Тут вы можете увидеть имя ноды на которой запущен данный под, ip адреса, какие volume приаттачены к контейнеру и так далее.

kubectl exec POD_NAME CMD_NAME

Данная команда запускает команду CMD_NAME внутри пода POD_NAME. Для примера:

kubectl exec -it POD_NAME sh

Запустит шелл в интерактивном режиме (ключ -it). Про шелл вы можете прочитать тут.

kubectl logs POD_NAME

Данная команда выведет логи пода с именем POD_NAME.

kubectl port-forward POD_NAME LOCAL_PORT:REMOTE_PORT

Данная команда пробросит порт с вашего локального компьютера (LOCAL_PORT) на порт (REMOTE_PORT) пода с именем POD_NAME.

В следующих статьях мы посмотрим на такие объекты k8s как Deployment и Service.

Обсудить эту заметку можно в нашем Телеграм канале: https://t.me/devops_spb_ru (@devops_spb_ru)

От DevOps

DevOps or not...