Справочник Kubernetes
Часто используемые команды k8s с параметрами
Вот мой к8s cheat sheet охватывающий кубетенес наиболее важные команды и концепции от установки до запуска контейнеров и очистки:
Установка Kubernetes
Использование Kubeadm
Чтобы установить Kubernetes с помощью kubeadm
, выполните следующие шаги:
-
Подготовьте окружение:
- Убедитесь, что необходимые модули ядра включены:
sudo sysctl net/bridge/bridge-nf-call-ip6tables=1 sudo sysctl net/bridge/bridge-nf-call-iptables=1 sudo sysctl net/bridge/bridge-nf-call-arptables=1
- Перезагрузите систему, чтобы применить изменения.
- Убедитесь, что необходимые модули ядра включены:
-
Установите Docker и другие предварительные требования:
- Установите Docker:
sudo apt-get update sudo apt-get install -y docker.io
- Установите
ebtables
иethtool
:sudo apt-get install ebtables ethtool
- Установите поддержку HTTPS и
curl
, если это необходимо:sudo apt-get update sudo apt-get install -y apt-transport-https curl
- Добавьте репозиторий Kubernetes и установите
kubeadm
,kubelet
иkubectl
:curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - sudo cat <<EOF >/etc/apt/sources.list.d/kubernetes.list deb http://apt.kubernetes.io/ kubernetes-xenial main EOF sudo apt-get update sudo apt-get install -y kubeadm kubelet kubectl
- Установите Docker:
-
Инициализируйте кластер Kubernetes:
- Инициализируйте первый узел управления:
sudo kubeadm init
- Присоедините дополнительные узлы управления и рабочие узлы:
kubeadm join <control-plane-node>:8443 --token <token> --discovery-token-ca-cert-hash <hash>
- Инициализируйте первый узел управления:
Использование Minikube или Kind
Для локального разработки вы можете использовать minikube
или kind
:
-
Minikube:
minikube start
Следуйте официальной [инструкции по началу работы].
-
Kind:
curl -sfL https://get.k3s.io | sh - kind create cluster
Следуйте [быстрому старту Kind].
Часто используемые команды kubectl
Основные команды
-
Получение информации о ресурсах:
kubectl get <resource> # Список ресурсов (например, pods, services, deployments) kubectl get pods --all-namespaces # Список всех pods во всех пространствах имен kubectl get pods -o wide # Список pods с дополнительными деталями kubectl get pod my-pod -o yaml # Получение YAML-конфигурации pod.
-
Описание ресурсов:
kubectl describe <resource> # Подробное описание ресурса (например, nodes, pods) kubectl describe nodes my-node kubectl describe pods my-pod.
-
Создание ресурсов:
kubectl create -f <manifest-file> # Создание ресурсов из файла YAML или JSON kubectl create configmap <configmap-name> --from-literal=<key>=<value> # Создание ConfigMap kubectl create secret generic <secret-name> --from-literal=<key>=<value> # Создание Secret.
-
Удаление ресурсов:
kubectl delete <resource> <name> # Удаление ресурса (например, pod, deployment) kubectl delete pod my-pod kubectl delete deployment my-deployment.
Управление pod
-
Определение команды и аргументов для контейнера:
apiVersion: v1 kind: Pod metadata: name: command-demo spec: containers: - name: command-demo-container image: debian command: ["printenv"] args: ["HOSTNAME", "KUBERNETES_PORT"]
kubectl apply -f <manifest-file> kubectl get pods kubectl logs command-demo.
-
Запуск команды в оболочке:
apiVersion: v1 kind: Pod metadata: name: shell-demo spec: containers: - name: shell-demo-container image: debian command: ["/bin/sh"] args: ["-c", "while true; do echo hello; sleep 10;done"]
kubectl apply -f <manifest-file> kubectl get pods kubectl logs shell-demo.
Управление ConfigMap и Secret
-
Создание ConfigMap:
kubectl create configmap <configmap-name> --from-literal=<key>=<value> kubectl create configmap app-config --from-literal=environment=production --from-literal=log_level=info.
-
Создание Secret:
kubectl create secret generic <secret-name> --from-literal=<key>=<value> kubectl create secret generic db-secret --from-literal=username=admin --from-literal=password=supersecret.
Управление deployment и service
-
Создание deployment:
kubectl create deployment <deployment-name> --image=<image-name> kubectl create deployment my-deployment --image=nginx:latest.
-
Публикация deployment как service:
kubectl expose deployment <deployment-name> --type=NodePort --port=<port> kubectl expose deployment my-deployment --type=NodePort --port=80.
Управление пространствами имен и узлами
-
Список пространств имен:
kubectl get namespaces
-
Создание пространства имен:
kubectl create namespace <namespace-name> kubectl create namespace my-namespace.
-
Список узлов:
kubectl get nodes kubectl get nodes --selector='!node-role.kubernetes.io/control-plane'.
Мониторинг и отладка
-
Просмотр журналов:
kubectl logs <pod-name> kubectl logs -f <pod-name> # Следить за журналами в реальном времени.
-
Описание событий:
kubectl describe events
-
Проверка информации о кластере:
kubectl cluster-info kubectl version # Проверка версии Kubernetes.
Расширенные команды
-
Сортировка ресурсов:
kubectl get pods --sort-by='.status.containerStatuses.restartCount' kubectl get services --sort-by=.metadata.name.
-
Фильтрация ресурсов:
kubectl get pods --field-selector=status.phase=Running kubectl get nodes --selector='!node-role.kubernetes.io/control-plane'.
-
Получение конкретных данных:
kubectl get configmap myconfig -o jsonpath='{.data.ca\.crt}' kubectl get secret my-secret --template='{{index .data "key-name-with-dashes"}}'.