🚀 Шпаргалка по 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!


![[UPDATED 2025] MUSTKNOW BASH Команды для повседневной работы в консоли терминале Linux cheatSheet || Шпаргалка logo_brand_brands_logos_linux-512](https://lepkov.ru/wp-content/uploads/2019/05/logo_brand_brands_logos_linux-512.png)

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