kubernetes pod’и ~

Переклад всіх моїх нотаток і команд по 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)