Справочник по командам Kubernetes

При работе с Kubernetes очень важно знать хотя бы основные команды. В этой статье вы найдете команды, которые чаще всего требуются при работе с кластером. Зная эти команды, вы сможете избавиться от необходимости писать файлы определений для простых объектов и создавать объекты с помощью этих файлов. Вместо этого вы можете использовать команды и видеть, как объекты создаются за доли секунды.

В этой статье вы увидите не только команды для получения сведений об объектах, но и команды для их создания. Статья посвящена исключительно командам, а не их описанию. Если вы хотите подробно изучить каждую команду, вы можете посетить официальную документацию здесь.

Эта статья станет для вас шпаргалкой по основным объектам в кластере Kubernetes.

Предварительные требования

  1. Базовое понимание Kubernetes
  2. Кластер Kubernetes с как минимум 1 рабочим узлом.
    Если вы хотите научиться создавать кластер Kubernetes, нажмите здесь. Это руководство поможет вам создать кластер Kubernetes с 1 мастером и 2 узлами на инстансах AWS Ubuntu EC2.

Что мы увидим?

  1. Важные команды
    1. Информация о кластере
    2. Информация о конфигурации
    3. Пространство имён
    4. Pod
    5. Развертывания
    6. Службы
    7. Управление объектами из файлов .yaml/.yml

Важные команды

Информация о кластере

Вывод информации о версии клиента и сервера

kubectl version

Вывод списка поддерживаемых ресурсов API на сервере

kubectl api-resources

Вывод списка поддерживаемых версий API на сервере в формате «группа/версия»

kubectl api-versions

Вывести информацию о кластере

kubectl cluster-info

Получить список узлов в кластере

kubectl  get nodes

Получить информацию о главном узле

kubectl  get nodes master -o wide

Получить подробную информацию о главных узлах

kubectl  describe  nodes  master

Информация о конфигурации

Отобразить объединенные настройки kubeconfig

kubectl  config view

Просмотреть текущий контекст

kubectl  config  current-context

Установить контекст, где kubernetes-admin@kubernetes — это имя контекста

kubectl config  use-context kubernetes-admin@kubernetes

Отобразить кластеры, определенные в kubeconfig

kubectl  config get-clusters

Описать один или несколько контекстов

kubectl  config get-contexts

Пространства имён

Получить все пространства имён

kubectl  get namespaces

Получить информацию о пространстве имён в формате yaml

kubectl  get namespaces -o yaml

Описать пространство имён по умолчанию

kubectl  describe  namespace default

Создать новое пространство имен

kubectl  create namespace my-namespace

Удалить пространство имен

kubectl  delete namespace my-namespace

Поды

Получить поды из текущего пространства имен

kubectl get pods

Получить поды из всех пространств имен

kubectl get pods --all-namespaces

Получить поды из указанного пространства имен

kubectl get pods -namespace=my-namespace

Создать под

kubectl  run my-pod-1 --image=nginx:latest --dry-run

посмотреть, как будет обработан под

kubectl  run my-pod-1 --image=nginx:latest --dry-run=client

Создать под в указанном пространстве имен

kubectl  run my-pod-2 --image=nginx:latest --namespace=my-namespace

Создать под с меткой

kubectl  run nginx --image=nginx -l --labels=app=test

Получить все поды с выводом меток

kubectl get pods --show-labels

Получить поды с расширенным/широким выводом

kubectl  get pods -o wide

Вывести список подов в отсортированном порядке

kubectl  get pods --sort-by=.metadata.name

Получить логи пода

kubectl  logs  my-pod-1

Получить поды в указанном пространстве имен с расширенным/полным выводом

kubectl get pods my-pod-2 --namespace=my-namespace -o wide

Получить журналы пода в указанном пространстве имен

kubectl  logs  my-pod-2 --namespace=my-namespace

Описать под

kubectl  describe  pod my-pod-1

Описать под в указанном пространстве имен

kubectl describe  pods my-pod-1 --namespace=my-namespace

Удалить под из текущего пространства имен

kubectl  delete pod my-pod-1

Удалить под из указанного пространства имен

kubectl delete  pods my-pod-1 --namespace=my-namespace

Развертывания

Получить список развертываний из текущего пространства имен

kubectl  get deployments

Получить список развертываний из указанного пространства имен

kubectl  get deployments --namespace=my-namespace

Создать развертывание

kubectl  create deployment my-deployment-1 --image=nginx

Получить указанное развертывание

kubectl  get deployment my-deployment-1

Получить указанное развертывание с его метками

kubectl  get deployment my-deployment-1 --show-labels

Описать указанное развертывание

kubectl describe  deployments my-deployment-1

Получить подробную информацию о развертывании в формате YAML

kubectl  get deployment my-deployment-1 -o yaml

Изменить образ в существующем развертывании

kubectl  set image deployment my-deployment-1 nginx=nginx:1.16.1

Просмотреть историю развертываний

kubectl rollout history deployment my-deployment-1

Отменить предыдущее развертывание

kubectl rollout undo deployment my-deployment-1

Вернуться к определенной версии в истории развертываний

kubectl rollout undo deployment my-deployment-1 --to-revision=2

Показать статус развертывания

kubectl rollout status deployment my-deployment-1

Перезапустить ресурс

kubectl rollout restart deployment my-deployment-1

Масштабировать развертывание до 3

kubectl scale --replicas=3 deployment my-deployment-1

Масштабировать с текущего количества до желаемого

kubectl scale --current-replicas=3 --replicas=5 deployment my-deployment-1

Это создаст HPA (Horizontal Pod Autoscaler)

kubectl autoscale deployment my-deployment-1 --min=2 --max=10

Сервисы

Сначала создайте под с меткой app=myapp.

Затем:

Создайте под с меткой

kubectl run my-pod --image=nginx --labels=app=myapp

Создайте сервис типа NodePort, который будет использовать метки пода в качестве селектора, но нам нужно указать тип, поэтому сначала создайте файл определения, а затем создайте сервис

kubectl expose pod my-pod --port=80 --name nginx-service --type=NodePort --dry-run=client -o yaml

Создайте сервис, который будет иметь тип NodePort, но у него не будет селектора my-app

kubectl create service nodeport nginx --tcp=80:80 --node-port=30080 --dry-run=client -o yaml

Получить сервисы из текущего контекста

kubectl  get service

Получить подробную информацию о сервисах

kubectl  get service -o wide

Получить сервисы с метками

kubectl  get service --show-labels

Получить сервисы из всех пространств имен

kubectl  get services --all-namespaces

Описать сервис, чтобы узнать о нем больше

kubectl  describe  service nginx-service

Получить конкретный сервис

kubectl  get  service nginx-service

Удалить сервис

kubectl  delete service nginx-service

Управление объектами из файлов .yaml/.yml

Сначала создайте файл определения для под

Создать файл определения для под

kubectl  run mypod --image=nginx --dry-run=client -o yaml > my-pod.yml

Создать объект

kubectl  create -f my-pod.yml

Удалить объект

kubectl  delete -f my-pod.yml

Заключение

В этой статье мы рассмотрели важные команды, необходимые при работе с Kubernetes. Команды в Kubernetes не ограничиваются только этими командами, но эти команды являются «обязательными к знанию» командами.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *