Шпаргалка по командам Kubernetes

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

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

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

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

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

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

kubectl version

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

kubectl api-resources

Вывод поддерживаемых версий API на сервере, в виде «group/version»

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

Показать кластеры, определенные в 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

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

kubectl get pods -namespace=my-namespace

Создать модуль

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

Посмотреть, как будет обрабатываться pod

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

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

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

Создать pod с меткой к нему

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

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

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

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

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

Опишите pod

kubectl describe pod my-pod-1

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

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

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

kubectl delete pod my-pod-1

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

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

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

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

kubectl get deployments

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

kubectl get deployments --namespace=my-пространство имен

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

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 Aotuscaler)

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

Services

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

Затем:

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

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

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

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

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

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

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.