Kubernetes и etcd (шпаргалка)

Полезные команды для работы с 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>     # Проброс порта

Прокрутить вверх