kubectl

73 commands

73 shown

Список всех подов во всех неймспейсах Все поды с расположением на нодах и IP-адресами kubectl get pods -A -o wide #pods Описание пода Подробная информация: события, условия, монтирование томов kubectl describe pod <name> -n <ns> #pods#debug Следить за логами пода Потоковые логи в реальном времени; добавьте -c <container> для мульти-контейнерных подов kubectl logs -f <pod> -n <ns> #logs#debug Логи предыдущего контейнера Логи последнего упавшего или перезапущенного экземпляра контейнера kubectl logs <pod> --previous -n <ns> #logs#debug Войти в под Интерактивная оболочка внутри работающего контейнера kubectl exec -it <pod> -n <ns> -- bash #pods#debug Проброс порта сервиса Туннелирование порта кластерного сервиса на localhost kubectl port-forward svc/<name> 8080:80 -n <ns> #debug#network Следить за статусом rollout Блокировать до завершения деплоя или таймаута (используется в CI) kubectl rollout status deployment/<name> -n <ns> #deployments Откат деплоймента Вернуться к предыдущей ревизии kubectl rollout undo deployment/<name> -n <ns> #deployments Масштабирование деплоймента Немедленно изменить количество реплик kubectl scale deployment/<name> --replicas=3 -n <ns> #deployments События кластера по времени Последние события кластера, сначала старые — удобно при post-incident разборе kubectl get events -A --sort-by='.lastTimestamp' #debug Проверка манифеста (server-side dry-run) Валидация манифеста через живой API без применения изменений kubectl apply --server-side --dry-run=server -f file.yaml #config Экспорт ресурса в YAML Текущее состояние без служебных полей; удобен как базовый шаблон kubectl get deployment/<name> -n <ns> -o yaml #config Принудительное удаление зависшего пода Удалить под в состоянии Terminating немедленно (используйте с осторожностью) kubectl delete pod <name> -n <ns> --grace-period=0 --force #pods#debug Копирование файла из пода Извлечь файл из работающего контейнера kubectl cp <ns>/<pod>:/remote/path ./local-path #debug Cordon ноды Пометить ноду как неналиняющую — новые поды сюда не попадают kubectl cordon <node> #nodes Drain ноды Аккуратно вытеснить все поды перед обслуживанием kubectl drain <node> --ignore-daemonsets --delete-emptydir-data #nodes Редактировать ресурс в кластере Открыть ресурс в $EDITOR; изменения применяются при сохранении kubectl edit deployment/<name> -n <ns> #deployments#config Проверка прав RBAC Проверить что ServiceAccount имеет право делать kubectl auth can-i list pods --as=system:serviceaccount:<ns>:<sa> -n <ns> #rbac#debug Ресурс с кастомными колонками Вывести только нужные поля без jq kubectl get pods -n <ns> -o custom-columns='NAME:.metadata.name,NODE:.spec.nodeName,STATUS:.status.phase' #pods Patch поля ресурса Изменить поле ресурса без редактирования манифеста kubectl patch deployment <name> -n <ns> -p '{"spec":{"replicas":2}}' #deployments#config Добавить аннотацию к ресурсу Добавить/обновить аннотацию; --overwrite заменяет существующее значение kubectl annotate pod <pod> -n <ns> key=value --overwrite #config Добавить лейбл к ресурсу Добавить или изменить лейбл на любом ресурсе kubectl label node <node> role=worker --overwrite #nodes#config Добавить taint на ноду Запретить размещение подов без соответствующего toleration kubectl taint nodes <node> key=value:NoSchedule #nodes Снять taint с ноды Снять taint — поставить тире в конце kubectl taint nodes <node> key=value:NoSchedule- #nodes Обновить образ деплоймента Обновить образ контейнера без редактирования YAML kubectl set image deployment/<name> <container>=image:tag -n <ns> #deployments История деплоев Все ревизии с причиной изменения kubectl rollout history deployment/<name> -n <ns> #deployments Rolling restart деплоймента Перезапустить поды по одному без простоя kubectl rollout restart deployment/<name> -n <ns> #deployments Создать неймспейс Создать новый неймспейс; идемпотентно через --dry-run=client | apply kubectl create namespace <ns> #config Задать requests/limits Обновить requests и limits деплоймента без правки YAML kubectl set resources deployment/<name> -c <container> --requests=cpu=100m,memory=128Mi --limits=cpu=500m,memory=512Mi -n <ns> #deployments#config Запустить разовый под Временный под для отладки; удаляется при выходе kubectl run tmp --image=nicolaka/netshoot -it --rm --restart=Never -n <ns> -- bash #debug#pods Лейблы нод Все лейблы назначенные на каждую ноду kubectl get nodes --show-labels #nodes Разблокировать ноду Разрешить планирование на ранее заблокированной ноде kubectl uncordon <node> #nodes Статус HPA HPA — текущие/желаемые реплики и метрики kubectl get hpa -A #deployments#monitoring Квоты ресурсов неймспейса Использованные vs жёсткие лимиты CPU, памяти, объектов в неймспейсе kubectl describe resourcequota -n <ns> #config Статус PodDisruptionBudget Показать min-available и текущее число здоровых подов kubectl get pdb -A #deployments LimitRange неймспейса Дефолтные и максимальные ресурсные лимиты подов в неймспейсе kubectl describe limitrange -n <ns> #config Все CRD в кластере Все Custom Resource Definitions отсортированные по времени создания kubectl get crds --sort-by='.metadata.creationTimestamp' #config#debug Endpoints сервиса Pod IP-адреса за Service — диагностика несоответствия selector kubectl get endpoints <svc> -n <ns> #network#debug Проверить срок сертификата Статус и дата истечения сертификатов cert-manager kubectl get certificate -A -o wide #network#debug Топология spread constraints Проверить topologySpreadConstraints пода kubectl get pod <pod> -n <ns> -o jsonpath='{.spec.topologySpreadConstraints}' #pods#config Apply с удалением лишнего Применить манифесты и удалить устаревшие объекты по label selector kubectl apply -f ./dir/ --prune -l app=<label> -n <ns> #config Diff живого vs локального Показать что изменится при применении этого манифеста kubectl diff -f file.yaml #config#debug Выполнить команду во всех подах Выполнить команду в каждом поде с нужным label selector kubectl get pods -n <ns> -l app=<label> -o name | xargs -I{} kubectl exec {} -n <ns> -- <cmd> #pods#debug Watch статуса подов Обновление в реальном времени при изменении статусов kubectl get pods -n <ns> -w #pods#debug Поды по CPU Использование CPU по всем неймспейсам отсортировано kubectl top pods -A --sort-by=cpu #pods#monitoring Создать токен ServiceAccount Сгенерировать краткосрочный bound-токен ServiceAccount kubectl create token <sa-name> -n <ns> --duration=1h #rbac#config Аудит прав — кто что может Все разрешения текущего пользователя в неймспейсе kubectl auth can-i --list -n <ns> #rbac#debug Удалить все поды в неймспейсе Форс-рекреация всех подов — удобно после смены ConfigMap kubectl delete pods --all -n <ns> #pods Список Ingress Все Ingress-ресурсы с хостами и адресами kubectl get ingress -A #network Дамп всех подов в YAML Резервная копия/инспекция всех подов неймспейса в YAML kubectl get pods -n <ns> -o yaml > pods-dump.yaml #debug#pods Все образы контейнеров в кластере Перечислить все образы контейнеров запущенных в кластере kubectl get pods -A -o jsonpath='{range .items[*]}{.metadata.namespace}{"\t"}{.metadata.name}{"\t"}{range .spec.containers[*]}{.image}{"\n"}{end}{end}' #debug#pods Переключить kubeconfig контекст Переключить активный контекст кластера kubectl config use-context <context> #config Список kubeconfig контекстов Все контексты в текущем kubeconfig kubectl config get-contexts #config Объединить kubeconfig файлы Объединить несколько kubeconfig файлов в один KUBECONFIG=~/.kube/config:~/.kube/cluster2.yaml kubectl config view --flatten > ~/.kube/merged.yaml #config Дефолтный неймспейс контекста Не нужно добавлять -n в каждую команду для этого контекста kubectl config set-context --current --namespace=<ns> #config Информация о кластере API server и CoreDNS endpoints кластера kubectl cluster-info #debug#config Условия ноды Все условия каждой ноды (Ready, MemoryPressure, DiskPressure) kubectl get nodes -o jsonpath='{range .items[*]}{.metadata.name}{": "}{range .status.conditions[*]}{.type}={.status},{" "}{end}{"\n"}{end}' #nodes#debug Запустить CronJob вручную Немедленно запустить CronJob как разовый Job kubectl create job --from=cronjob/<name> manual-run -n <ns> #config#debug Ждать готовности пода Заблокировать до готовности подов или таймаута kubectl wait pod -l app=<label> -n <ns> --for=condition=Ready --timeout=120s #pods#config Снять метрики эндпоинта apiserver Получить сырые метрики Prometheus с apiserver без стека мониторинга kubectl get --raw /metrics | grep apiserver_request_total #kubectl#metrics#observability#performance Проверить здоровье etcd через apiserver Проверить доступность etcd через эндпоинт здоровья apiserver kubectl get --raw '/healthz/etcd?verbose' #kubectl#etcd#troubleshooting#k8s Метрики нод из API metrics.k8s.io Сырое потребление нод из metrics API в обход форматирования kubectl top kubectl get --raw '/apis/metrics.k8s.io/v1beta1/nodes' | jq '.items[] | {name:.metadata.name, cpu:.usage.cpu, mem:.usage.memory}' #kubectl#metrics#monitoring#performance Эфемерная отладочная копия с общими PID Клонировать под с отладочным контейнером в общем PID-namespace; оригинал не трогается kubectl debug <pod> -n <ns> --copy-to=<pod>-dbg --share-processes --image=nicolaka/netshoot -- sleep infinity #kubectl#debug#troubleshooting#k8s Рекурсивно раскрыть спецификацию Deployment Вывести полное дерево вложенных полей спецификации ресурса; удобно искать допустимые поля kubectl explain deploy.spec --recursive | less #kubectl#k8s#troubleshooting Приостановить и возобновить раскатку Накопить несколько правок без отдельных раскаток, затем применить всё разом kubectl rollout pause deploy/<name> -n <ns>; kubectl rollout resume deploy/<name> -n <ns> #kubectl#gitops#k8s Показать последнюю применённую конфигурацию Показать аннотацию last-applied-configuration; сравнить намерение с реальным состоянием kubectl apply view-last-applied deploy/<name> -n <ns> -o yaml #kubectl#gitops#troubleshooting Предупреждающие события по всем неймспейсам Предупреждения по всему кластеру, новые в конце; быстрая сортировка проблемных нагрузок kubectl get events -A --field-selector type=Warning --sort-by=.lastTimestamp #kubectl#troubleshooting#monitoring#debug Найти все упавшие поды по кластеру Список подов в фазе Failed по всем неймспейсам для очистки или разбора kubectl get pods -A --field-selector status.phase=Failed #kubectl#troubleshooting#debug#k8s Ждать по условию jsonpath Блокировать CI до появления внешнего IP у Service; работает по любому полю jsonpath kubectl wait --for=jsonpath='{.status.loadBalancer.ingress[0].ip}' svc/<name> -n <ns> --timeout=120s #kubectl#ci#gitops#k8s Имперсонация пользователя и группы Проверить RBAC от чужого имени без его kubeconfig; нужен verb impersonate kubectl auth can-i list secrets -n <ns> --as=<name> --as-group=system:serviceaccounts #kubectl#security#troubleshooting#k8s Сортировать поды по числу рестартов Вывести наиболее перезапускаемые поды, чтобы быстро поймать crashloop kubectl get pods -A -o jsonpath='{range .items[*]}{.metadata.namespace}{"\t"}{.metadata.name}{"\t"}{.status.containerStatuses[0].restartCount}{"\n"}{end}' | sort -k3 -rn | head #kubectl#troubleshooting#debug#monitoring Сравнить allocatable и capacity нод Показать зарезервированный оверхед по нодам; разница = резервы kube/system kubectl get nodes -o json | jq -r '.items[] | {node:.metadata.name, capCPU:.status.capacity.cpu, allocCPU:.status.allocatable.cpu, capMem:.status.capacity.memory, allocMem:.status.allocatable.memory}' #kubectl#performance#monitoring#k8s ConfigMap из env-file с JSON-патчем Собрать CM из файла KEY=VALUE и JSON-патчем добавить его в envFrom контейнера kubectl create configmap <name> --from-env-file=app.env -n <ns> --dry-run=client -o yaml | kubectl apply -f -; kubectl patch deploy/<name> -n <ns> --type=json -p='[{"op":"add","path":"/spec/template/spec/containers/0/envFrom/-","value":{"configMapRef":{"name":"<name>"}}}]' #kubectl#secrets#gitops#k8s
no commands match