Основы kubectl: управление кластером Kubernetes из командной строки
kubectl — это основной инструмент для управления Kubernetes-кластерами. Он позволяет выполнять все операции по созданию, обновлению и удалению ресурсов кластера прямо из командной строки. Этот гайд поможет вам освоить базовые команды kubectl для эффективной работы с Kubernetes.
Требования / Подготовка
Перед началом работы убедитесь, что:
- У вас установлен kubectl версии 1.24 или выше
- Вы подключены к рабочему Kubernetes-кластеру
- У вас есть права на создание и управление ресурсами кластера
Шаг 1: Проверка установки и версии kubectl
Сначала убедимся, что kubectl установлен и подключен к кластеру:
kubectl version --client
Если kubectl установлен, вы увидите информацию о версии клиента. Чтобы проверить подключение к кластеру:
kubectl cluster-info
Эта команда покажет URL API сервера и состояние подключения к кластеру.
Шаг 2: Просмотр информации о кластере
Получите базовую информацию о кластере и его узлах:
kubectl get nodes
Эта команда отобразит список всех узлов в кластере с их статусами. Чтобы получить более подробную информацию об узле:
kubectl describe node <имя-узла>
Вы также можете просмотреть все пространства имен в кластере:
kubectl get namespaces
Шаг 3: Создание и управление подами
Создайте простой под из YAML-файла:
kubectl apply -f example-pod.yaml
Пример содержимого example-pod.yaml:
apiVersion: v1
kind: Pod
metadata:
name: example-pod
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
Просмотрите созданные поды:
kubectl get pods
Для получения подробной информации о поде:
kubectl describe pod example-pod
Выполните команду внутри пода:
kubectl exec example-pod -- ls /app
Шаг 4: Работа с сервисами и развертываниями
Создайте развертывание:
kubectl create deployment nginx-deployment --image=nginx:latest
Масштабируйте развертывание:
kubectl scale deployment nginx-deployment --replicas=3
Создайте сервис для доступа к развертыванию:
kubectl expose deployment nginx-deployment --port=80 --type=NodePort
Просмотрите созданные сервисы:
kubectl get services
Обновите образ в развертывании:
kubectl set image deployment/nginx-deployment nginx=nginx:1.21
Шаг 5: Просмотр логов и отладка
Получите доступ к логам пода:
kubectl logs example-pod
Для подов с несколькими контейнерами:
kubectl logs example-pod -c nginx
Отследите логи в реальном времени:
kubectl logs -f example-pod
Удалите ресурсы:
kubectl delete pod example-pod
kubectl delete deployment nginx-deployment
kubectl delete service nginx-deployment
Проверка результата
Чтобы убедиться, что все работает корректно:
- Проверьте, что все поды находятся в статусе
Running:kubectl get pods - Убедитесь, что сервисы доступны:
kubectl get services - Проверьте логи на наличие ошибок:
kubectl logs <pod-name>
Возможные проблемы
При работе с kubectl могут возникнуть следующие проблемы:
Ошибка подключения к кластеру:
Если kubectl не может подключиться к кластеру, проверьте файл конфигурации ~/.kube/config и убедитесь, что контекст указан правильно.
Права доступа: Если возникают ошибки доступа, убедитесь, что у вас есть необходимые права RBAC для выполнения операций.
Неверный синтаксис YAML:
При создании ресурсов из YAML-файлов внимательно проверяйте синтаксис. Используйте kubectl apply --dry-run=client -f file.yaml для проверки перед применением.
Недостаточно ресурсов: Если поды не могут запуститься, проверьте доступность ресурсов в кластере и лимиты ресурсов в YAML-файле.
Для получения дополнительной информации используйте команду kubectl explain <ресурс> для просмотра схемы ресурсов Kubernetes.