Полезные команды для работы с Kubernetes и etcd
Проверка состояния кластера
kubectl get nodes # Список нод и их статус
kubectl get pods -A # Все поды во всех неймспейсах
kubectl get svc -A # Все сервисы
kubectl get componentstatuses # Статус основных компонентов
kubectl cluster-info # Информация о кластере
kubectl top nodes # Нагрузка на ноды (CPU, память)
kubectl get nodes --show-labels # Показать все лейблы на нодах
Работа с ресурсами
kubectl api-resources # Список всех доступных ресурсов API
kubectl get crd # Все CRD (CustomResourceDefinition)
kubectl describe <crd_kind> <name> -n <ns> # Детали конкретного CRD-ресурса
kubectl explain <resource> # Документация по ресурсу
События и логи
kubectl get events --sort-by=.metadata.creationTimestamp # Последние события
kubectl logs <pod> -n <namespace> # Логи пода
kubectl describe pod <pod> -n <namespace> # Детали пода
Управление kubeadm-токенами
kubeadm token create --print-join-command # Вывод команды для присоединения worker-ноды
kubeadm token list # Список токенов
Работа с kubeconfig
export KUBECONFIG=/etc/kubernetes/admin.conf # Явно указать kubeconfig
kubectl config view # Проверка текущих настроек
kubectl config get-contexts # Список контекстов
kubectl config use-context <context> # Переключение между контекстами
Сеть в кластере
kubectl get pods -n kube-flannel # Проверка подов Flannel
kubectl exec -it <pod> -- ping <другой_pod_IP> # Проверка сети между подами
Управление нодами
kubectl drain <node> --ignore-daemonsets --delete-local-data # Вывод ноды из работы
kubectl delete node <node> # Удаление ноды
kubectl label node <node> <key>=<value> # Добавить лейбл
Работа с Helm
helm repo update # Обновить репозитории
helm list --all-namespaces # Установленные чарты
helm pull oci://ghcr.io/nginx/charts/nginx-ingress --version 2.2.1 --untar
helm install my-grafana grafana/grafana \
--namespace monitoring \
--create-namespace \
-f values.yaml # Установка Grafana
helm uninstall <release> # Удаление релиза
Работа с etcd
Установка etcdctl
ETCD_VER=v3.5.13 # Актуальная версия на https://github.com/etcd-io/etcd/releases
wget https://github.com/etcd-io/etcd/releases/download/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz
tar xzvf etcd-${ETCD_VER}-linux-amd64.tar.gz
sudo mv etcd-${ETCD_VER}-linux-amd64/etcdctl /usr/local/bin/
etcdctl version
Проверка состояния
#Указываем версию API
export ETCDCTL_API=3
#Список членов кластера:
etcdctl \
--endpoints=https://127.0.0.1:2379 \
--cacert=/etc/kubernetes/pki/etcd/ca.crt \
--cert=/etc/kubernetes/pki/etcd/server.crt \
--key=/etc/kubernetes/pki/etcd/server.key \
member list
#Здоровье кластера:
etcdctl \
--endpoints=https://127.0.0.1:2379 \
--cacert=/etc/kubernetes/pki/etcd/ca.crt \
--cert=/etc/kubernetes/pki/etcd/server.crt \
--key=/etc/kubernetes/pki/etcd/server.key \
endpoint health --cluster
Работа с crictl
crictl ps # Список запущенных контейнеров
crictl ps -a # Все контейнеры (включая остановленные)
crictl logs <id> # Логи контейнера
crictl inspect <id> # Подробная информация о контейнере
crictl images # Список образов
crictl rmi <image> # Удалить образ
crictl ps | grep etcd # Найти контейнер etcd
Часто используемые команды
kubectl get all -n <namespace> # Все ресурсы в namespace
kubectl rollout restart deploy <name> -n <namespace> # Перезапуск Deployment
kubectl port-forward <pod> 8080:80 -n <namespace> # Проброс порта