Переклад всіх моїх нотаток і команд по Kubernetes Pod'ам, сподіваюсь, це буде корисно 🙂
У попередній статті я писав про архітектуру Kubernetes, якщо хочете почитати 🙂 https://medium.com/@ibrahimyldz11/kubernetes-architecture-1600ed370e80
Найменша одиниця, яка може бути створена в Kubernetes, називається Pod. Pod може містити один або кілька контейнерів, і кожен pod має свою унікальну IP-адресу. Контейнери всередині pod'у взаємодіють через localhost. Однак, для забезпечення ізоляції, кожен pod має свою власну IP-адресу.
Створення і управління Pod'ами
Створення pod'ів може бути здійснено двома різними підходами:
1. Імперативний метод (командний)
У цьому методі pod'и створюються і керуються вручну за допомогою команд. Ось приклади команд і їх пояснень:
- Створення pod'а: Створює pod з використанням вказаного образу.
kubectl run ibrahim --image=nginx --restart=Never
Перегляд опису pod'а: Показує, яку версію API і які властивості використовує pod.
kubectl explain pods ibrahim
Список pod'ів: Показує всі доступні pod'и.
kubectl get pods
Розширений вивід: Показує додаткові деталі pod'ів (IP, вузол і т.д.)
kubectl get pods -o wide
Виведення у форматі JSON: Показує інформацію про pod'и в форматі JSON.
kubectl get pods -o json
Перегляд деталей pod'а: Показує детальну інформацію про вказаний pod.
kubectl describe pods ibrahim
Перегляд логів pod'а: Показує логи pod'а.
Перегляд логів pod'а: Показує логи pod'а.
kubectl logs ibrahim
Реальний час: Стежить за логами pod'а в реальному часі.
kubectl logs -f ibrahim
Запуск команди в pod'і: Виконує команду в вказаному pod'і.
kubectl exec firstpod --hostname
kubectl exec firstpod -- ls
Відкриття інтерактивного bash: Запускає bash термінал всередині pod'а.
kubectl exec -it ibrahim bash
Видалення pod'а: Видаляє вказаний pod.
kubectl delete pods ibrahim
2. Декларативний метод (YAML-базований)
У цьому методі pod описується за допомогою YAML файлу, і Kubernetes виконує необхідні дії, ґрунтуючись на цьому описі. Приклад YAML файлу:
apiVersion: v1
kind: Pod
metadata:
name: ibrahim
labels:
app: frontend
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
Інформація в YAML
apiVersion: v1 # Вказує на версію API, тут використовується API v1 Kubernetes.
kind: Pod # Вказує тип ресурсу; в даному випадку створюється Pod.
metadata: # Містить метаінформацію про pod.
name: ibrahim # Назва pod'а, за якою він буде управлятися і запитуватись.
labels: # Теги для pod'а, використовуються для класифікації чи групування.
app: frontend # Цей тег вказує на те, що pod належить до фронтенд додатку.
spec: # Тут визначаються специфікації (детальна конфігурація) pod'а.
containers: # Список контейнерів, які працюють у pod'і.
- name: nginx # Назва контейнера, можна використовувати для інших операцій.
image: nginx:latest # Образ контейнера і його версія. Тут використовується остання версія образу `nginx`.
ports: # Визначає порти, які будуть відкриті в контейнері.
- containerPort: 80 # Порт контейнера, через який буде здійснюватися обслуговування (стандартний HTTP порт 80).
Створення pod'а: Створює pod за допомогою YAML файлу.
kubectl apply -f ibrahim.yaml
Редагування pod'а: Дозволяє редагувати YAML файл pod'а.
kubectl edit pods ibrahim
Перекладено з: [kubernetes pods ~](https://ibrahimyldz11.medium.com/kubernetes-pods-65cd783e0096)