🚀 Шпаргалка по Kubernetes (kubectl)
🔹 Общие команды
Информация о кластере и контексте:
kubectl version— Показать версию kubectl и сервера APIkubectl cluster-info— Информация о кластереkubectl cluster-info dump— Детальный дамп информации о кластереkubectl config get-contexts— Список доступных контекстовkubectl config use-context NAME— Переключиться на другой контекстkubectl config current-context— Показать текущий контекстkubectl config view— Показать весь конфиг kubeconfig
Управление Namespaces:
kubectl get ns— Получить список namespacekubectl create ns my-namespace— Создать namespacekubectl delete ns my-namespace— Удалить namespacekubectl config set-context --current --namespace=NAMESPACE— Переключить namespace по умолчанию
🔹 Работа с подами (Pods)
Просмотр информации:
kubectl get pods— Получить список подовkubectl get pods -o wide— Расширенная информация о подах (IP, Node, Status)kubectl get pods -w— Отслеживание изменений в реальном времениkubectl get pods -A— Поды из всех namespacekubectl get pods -l key=value— Поды с определённым лейбломkubectl describe pod POD_NAME— Подробная информация о подеkubectl explain pod— Справка по структуре Pod ресурса
Логи и доступ:
kubectl logs POD_NAME— Просмотр логов подаkubectl logs POD_NAME -f— Стриминг логов пода (follow)kubectl logs POD_NAME -p— Логи предыдущего контейнераkubectl logs POD_NAME --timestamps=true— Логи с временными меткамиkubectl logs -f deployment/DEPLOY_NAME— Логи из всех подов deploymentkubectl logs POD_NAME -c CONTAINER_NAME— Логи конкретного контейнера
Взаимодействие с подом:
kubectl exec -it POD_NAME -- bash— Войти в контейнер (bash)kubectl exec -it POD_NAME -- sh— Войти в контейнер (если нет bash)kubectl exec POD_NAME -- COMMAND— Выполнить команду внутри подаkubectl cp POD_NAME:/path/file.txt ./file.txt— Скопировать файл из подаkubectl port-forward POD_NAME 8080:8080— Пробросить порт локально
Управление подами:
kubectl delete pod POD_NAME— Удалить подkubectl delete pods --all— Удалить все поды в текущем namespacekubectl run nginx --image=nginx— Создать под непосредственно (для тестирования)
🔹 Создание и применение ресурсов
Применение манифестов:
kubectl apply -f file.yaml— Применить манифестkubectl apply -f dir/— Применить все манифесты из директорииkubectl apply -f https://url/file.yaml— Применить манифест из URLkubectl apply -f file1.yaml -f file2.yaml— Применить несколько файловkubectl apply -f - < file.yaml— Применить из stdin
Создание ресурсов (imperative):
kubectl create deployment nginx --image=nginx— Создать deploymentkubectl create service clusterip my-svc --tcp=80:80— Создать Servicekubectl expose deployment DEPLOY --type=LoadBalancer --port=80 --target-port=8080— Опубликовать Service
Генерация YAML-файлов (без применения):
kubectl run nginx --image=nginx --dry-run=client -o yaml > pod.yaml— Генерировать YAML подаkubectl create deployment nginx --image=nginx --dry-run=client -o yaml > deployment.yaml— Генерировать YAML deploymentkubectl create service clusterip my-svc --tcp=80:80 --dry-run=client -o yaml > service.yaml— Генерировать YAML сервиса
ConfigMap и Secrets:
kubectl create configmap my-config --from-literal=key1=value1 --from-literal=key2=value2— Создать ConfigMap из парkubectl create configmap my-config --from-file=./config.properties— Создать ConfigMap из файлаkubectl create configmap my-config --from-env-file=.env— Создать ConfigMap из переменных окруженияkubectl create secret generic my-secret --from-literal=key1=value1— Создать Secretkubectl create secret generic my-secret --from-file=./secret.txt— Создать Secret из файлаkubectl create secret docker-registry my-reg --docker-server=registry.io --docker-username=user --docker-password=pass— Создать registry Secret
🔹 Управление Deployments
Просмотр:
kubectl get deployments— Получить список deploymentskubectl get deploy -o wide— Расширенная информацияkubectl describe deployment DEPLOY_NAME— Подробное описание deploymentkubectl get deploy --show-labels— Показать лейблы
Масштабирование и обновление:
kubectl scale deployment DEPLOY_NAME --replicas=3— Изменить количество репликkubectl set image deployment/DEPLOY_NAME container_name=new_image:tag— Обновить образkubectl set env deployment/DEPLOY_NAME KEY=VALUE— Установить переменные окруженияkubectl patch deployment DEPLOY_NAME -p '{\"spec\":{\"replicas\":5}}'— Патчить deployment
Управление:
kubectl delete deployment DEPLOY_NAME— Удалить deployment
🔹 Работа с Services
Просмотр:
kubectl get servicesилиkubectl get svc— Получить список сервисовkubectl get svc -o wide— Расширенная информацияkubectl describe service SVC_NAME— Подробная информация о сервисеkubectl get endpoints SVC_NAME— Показать endpoints сервиса
Управление:
kubectl delete service SVC_NAME— Удалить сервисkubectl expose pod POD_NAME --port=80 --target-port=8080 --type=ClusterIP— Создать Service для пода
🔹 Ingress
Просмотр:
kubectl get ingress— Получить список Ingress ресурсовkubectl get ingress -o wide— Расширенная информацияkubectl describe ingress INGRESS_NAME— Подробное описаниеkubectl get ingress -A— Ingress из всех namespace
Управление:
kubectl delete ingress INGRESS_NAME— Удалить Ingresskubectl apply -f ingress.yaml— Применить Ingress манифест
🔹 Мониторинг нагрузки и ресурсов
Resource Usage (требует metrics-server):
kubectl top nodes— Нагрузка CPU и памяти на узлахkubectl top pods— Нагрузка CPU и памяти на подахkubectl top pods -A— Нагрузка всех подовkubectl top pod POD_NAME --containers— Нагрузка по контейнерам
Просмотр узлов:
kubectl get nodes— Список узловkubectl describe node NODE_NAME— Подробная информация об узлеkubectl get nodes -o wide— Расширенная информация об узлах
🔹 Управление Secrets и ConfigMaps
Secrets:
kubectl get secrets— Получить список секретовkubectl describe secret SECRET_NAME— Подробное описание секретаkubectl get secret SECRET_NAME -o yaml— Получить Secret в формате YAMLkubectl delete secret SECRET_NAME— Удалить секретkubectl create secret generic my-secret --from-literal=key1=value1— Создать Secret
ConfigMaps:
kubectl get configmapsилиkubectl get cm— Получить список ConfigMapkubectl describe configmap CONFIGMAP_NAME— Описание ConfigMapkubectl get configmap CONFIGMAP_NAME -o yaml— Получить ConfigMap в формате YAMLkubectl delete configmap CONFIGMAP_NAME— Удалить ConfigMapkubectl create configmap my-config --from-literal=key1=value1— Создать ConfigMap
🔹 Управление rollouts (деплойменты)
Перезагрузка:
kubectl rollout restart deployment DEPLOY_NAME— Перезапустить deployment (мягкое обновление без даунтайма)
💡 Совет: используйте этот способ для подхвата новых ConfigMap или Secret без изменения deployment.
История и откат:
kubectl rollout history deployment DEPLOY_NAME— История ревизий deploymentkubectl rollout history deployment DEPLOY_NAME --revision=2— Деталь конкретной ревизииkubectl rollout undo deployment DEPLOY_NAME— Откатить deployment к последней ревизииkubectl rollout undo deployment DEPLOY_NAME --to-revision=2— Откатить к конкретной ревизииkubectl rollout status deployment DEPLOY_NAME— Статус текущего rollout
🔹 Лейблы и селекторы
Лейблы на ресурсах:
kubectl label pod POD_NAME key=value— Добавить лейбл к подуkubectl label pod POD_NAME key=value --overwrite— Перезаписать лейблkubectl label pod POD_NAME key-— Удалить лейблkubectl label nodes NODE_NAME key=value— Добавить лейбл к узлу
Поиск по лейблам:
kubectl get pods -l key=value— Поды с определённым лейбломkubectl get pods -l key!=value— Поды БЕЗ определённого лейблаkubectl get pods -l key in (value1,value2)— Поды с одним из значенийkubectl get pods --show-labels— Показать лейблы
🔹 Отладка и диагностика
События и статус:
kubectl get events— События в кластереkubectl describe pod POD_NAME— Полная информация с eventskubectl get events --sort-by='.lastTimestamp'— События отсортированные по времени
Отладочные поды:
- 💡
kubectl debug pod/<имя> -it --image=busybox— временный (Ephemeral) контейнер, который можно «вживить» в существующий, но сломанный Pod без его пересоздания и дебажить сеть, файловую систему, процессы. kubectl run debug-pod --image=busybox --stdin --tty --restart=Never -- sh— Запустить отладочный подkubectl debug node/NODE_NAME -it --image=ubuntu— Отладка узла
Проверка работы сети:
kubectl run test-pod --image=busybox --restart=Never -- ping google.com— Тест пингаkubectl run test-pod --image=busybox --restart=Never -- nslookup kubernetes.default— Тест DNS
🔹 HELM
Управление репозиториями:
helm repo add REPO_NAME https://charts.example.com— Добавить репозиторий чартовhelm repo list— Список добавленных репозиториевhelm repo update— Обновить индексы репозиториевhelm repo remove REPO_NAME— Удалить репозиторий
Установка и обновление:
helm install RELEASE_NAME REPO/CHART— Установить чартhelm install RELEASE_NAME REPO/CHART -f values.yaml— Установить с кастомными значениямиhelm install RELEASE_NAME REPO/CHART --set key=value— Установить с переопределением значенийhelm upgrade RELEASE_NAME REPO/CHART— Обновить чартhelm upgrade --install RELEASE_NAME REPO/CHART— Обновить или установить
Просмотр информации:
helm list— Список установленных чартовhelm list -A— Список чартов из всех namespacehelm show values REPO/CHART— Показать значения по умолчаниюhelm show chart REPO/CHART— Информация о чартеhelm get values RELEASE_NAME— Получить используемые значения
История и откат:
helm history RELEASE_NAME— История релизовhelm rollback RELEASE_NAME REVISION— Откат чарта к версииhelm uninstall RELEASE_NAME— Удалить чартhelm version— Версия Helm
Тестирование и отладка:
helm lint CHART_PATH— Проверить синтаксис чартаhelm template RELEASE_NAME CHART_PATH— Просмотреть сгенерированные манифесты
🔹 Быстрые выводы данных
Форматированный вывод:
kubectl get pods -o json— Вывод в JSONkubectl get pods -o yaml— Вывод в YAMLkubectl get pods -o wide— Расширенная таблицаkubectl get pods -o name— Только имена ресурсовkubectl get pods -o jsonpath='{.items[*].metadata.name}'— Кастомный JSONPath запросkubectl get pods --sort-by=.metadata.creationTimestamp— Сортировка по времени создания
Экспорт:
kubectl get all -o yaml > backup.yaml— Экспортировать все ресурсыkubectl get deployment -o yaml | kubectl apply -f -— Скопировать deployment
🔹 Полезные справки и объяснения
Справочные команды:
kubectl explain RESOURCE— Справка по ресурсуkubectl explain RESOURCE --recursive— Полная справка с вложенными полямиkubectl api-resources— Список всех доступных ресурсовkubectl api-versions— Список версий API
Быстрая активация автодополнения:
# Bashsource <(kubectl completion bash)
echo "source <(kubectl completion bash)" >> ~/.bashrc
# Zshsource <(kubectl completion zsh)
echo "source <(kubectl completion zsh)" >> ~/.zshrc
💡 Практические советы
1. Быстрая работа с namespace по умолчанию:
kubectl config set-context --current --namespace=production
2. Просмотр всех событий в кластере:
kubectl get events -A --sort-by='.lastTimestamp'
3. Форсировать удаление пода (если висит):
kubectl delete pod POD_NAME --grace-period=0 --force
4. Посмотреть, какие поды потребляют ресурсы:
kubectl top pods -A | sort --reverse --numeric --key 3
5. Отредактировать ресурс на лету:
kubectl edit pod POD_NAME
6. Применить манифесты и следить за процессом:
kubectl apply -f deployment.yaml && kubectl rollout status deployment/my-app
7. Проверить статус всех компонентов кластера:
kubectl get componentstatuses
8. Просмотреть расходы ресурсов:
kubectl describe node NODE_NAME | grep -A 5 "Allocated resources"
📝 Обновлено: 16.11.2025
💡 Совет: Используйте kubectl explain RESOURCE --recursive для получения справки о любой сущности в Kubernetes!




Свежие комментарии