kubectl
Утилита kubectl - командная утилита для взаимодействия с кластерами kubernetes. Позволяет управлять всеми ресурсами кластера через командную строку.
api-resources
Список доступных ресурсов кластера. Полезна для получения всех возможных для использование и управления ресурсов.
explain
Детальное описание конкретного ресурса k8s. Подробная документация от kubernetes по любому ресурсу. Можно указывать (через точку) конкретные поля спецификации.
get
Получение списка ресурсов
# Получить информацию об основных объектах кластера
kubectl get all
#Получение всех ресурсов во всех неймспейсах
kubectl get all -A
# Получить информацию о конкретных объектах кластера
kubectl get pods,deployments,services
describe
Подробная информация о ресурсе. Предоставляет контекстную информацию, которая может быть полезной для диагностики проблем.
# Подробная информация о поде
kubectl describe pod/pod_name
# Подробная информация о развертывании
kubectl describe deployment/deploy_name
create
Создание ресурсов: подов, служб, развертываний и пр
# Создание объекта deployment с определенным состоянием
kubectl create deployment my-deployment --image=nginx:latest --replicas=3
apply
Запуск файлов-манифестов для создания или обновления ресурсов.
kubectl apply -f /file_name.yaml
# Если ресурс описанный в манифесте не существует - он будет создан в кластере
# Если состояния ресурсов в манифесте и кластере отличаются - работающий в кластере ресурс обновится
delete
Команда для удаления существующих ресурсов кластера
# Удаление конкретного ресурса по имени
kubectl delete pod/pod_name
# Удаление ресурсов указаных в манифесте
kubectl delete -f /file_name.yaml
# Удаление ресурсов с определенными метками
kubectl delete pods -l app=my-app
# Удаление всех ресурсов во всех пространствах имен
kubectl delete all --all -n my-namespace
logs
Позволяет просматривать логи контейнеров внутри пода
# Получение логов от последнего запущенного пода
kubectl logs my-pod-name
# Получение логов от всех контейнеров пода
kubectl logs my-pod-name --all-containers
# Получение логов от конкретного контейнера в поде
kubectl logs my-pod-name -c my-container name
# Получение логов в реальном времени
kubectl logs -f my-pod-name -c my-container-name
# Получение логов с метками времени
kubectl logs --timestamps my-pod-name
# Получение последних ста логов
kubectl logs --tail=100 my-pod-name
# Получение логов с предыдущего пода, если был перезапуск
kubectl logs --previous POD_NAME
edit
Команда для быстрого редактирования существующих ресурсов k8s прямо в консоли. После внесения изменений и сохранения, ресурс немедленно обновляется, если изменения имели корректный синтаксис. Стоит с аккуратностью использовать данную команду, потому что сложно отслеживать изменения ресурсов, они нигде не фиксируются и не попадают в систему контроля версий.
scale
Команда, которая быстро позволяет масштабировать существующие ресурсы. В основном, применима к таким ресурсам как: Deployment, ReplicaSet или StatefulSet
exec
Выполняет команду внутри контейнера в указанном поде. Можно указывать конкретный контейнер
# Подключаемся к оболочке bash контейнера в интерактивном режиме
kubectl exec -it <pod-name> -- /bin/bash
# Подключаемся к конкретному контейнеру
kubectl exec -it <pod-name> -c <cont-name> -- sh
# Запускаем команду ls внутки оболочки shell внутри контейнера
kubectl exec -it <pod-name> -c <cont-name> -- sh -c 'ls -la /var/www/html'
port-forward
Установка прямого соединения между портами локальной машины и портами в подах
# Прямое соединение с подом
kubectl port-forward my-pod 8080:8080
# Соединение с сервисом
kubectl port-forward service/my-service 8080:8080
api-resources
Позволяет легко узнать о доступных ресурсах Kubernetes и использовать их в дальнейшем для управления кластером.
Эта команда выведет список ресурсов API Kubernetes, таких как поды (Pods), службы (Services), развертывания (Deployments) и другие. Каждый ресурс будет сопровождаться информацией о его сокращенном имени, полном имени, сокращенном синониме и возможности.
componentstatus
Используется для получения состояния компонентов Kubernetes. Компоненты Kubernetes могут включать в себя API-сервер, контроллеры, планировщик и другие важные части системы. Результат выполнения этой команды позволяет увидеть, работают ли эти компоненты нормально.
Эта команда выведет состояние всех компонентов Kubernetes, указывая, работает ли каждый из них. Например, вы увидите информацию о компонентах, таких как:
- etcd: Состояние хранилища данных etcd, которое используется Kubernetes для хранения состояния кластера.
- kube-apiserver: API-сервер Kubernetes, который предоставляет доступ к API кластера.
- kube-controller-manager: Контроллер-менеджер Kubernetes, который отвечает за контрольный цикл компонентов кластера.
- kube-scheduler: Планировщик Kubernetes, который отвечает за распределение задач по узлам кластера.
Результат выполнения команды kubectl get componentstatus позволяет операторам и администраторам отслеживать работоспособность различных компонентов Kubernetes и выявлять проблемы, если они возникают.
use-context
Используется для выбора текущего контекста конфигурации Kubernetes. Контекст в Kubernetes определяет набор параметров, необходимых для взаимодействия с кластером, таких как сервер API Kubernetes, имя пользователя и данные аутентификации.
kubectl config use-context my-cluster
# После выполнения этой команды kubectl будет использовать указанный контекст для выполнения всех операций взаимодействия с кластером, таких как
# просмотр, создание, удаление ресурсов и т. д.
# список доступных контекстов
kubectl config get-contexts
# текущий активный контекст
kubectl config current-context
Использование правильного контекста важно, чтобы убедиться, что вы взаимодействуете с правильным кластером Kubernetes.
set-credentials
Используется для добавления или обновления учетных данных пользователя в файле конфигурации kubectl
kubectl config set-credentials my-user --client-certificate=my-cert.crt --client-key=my-key.key
delete-user
Используется для удаления учетных данных пользователя из файла конфигурации kubectl