Kubernetes Pod

Pod là thành phần đặc trưng nhất của Kubernetes, Pod là container cho docker bao gồm cả tài nguyên lưu trữ, địa chỉ IP và các quy tắc (rule) về cách (các) container sẽ thực thi và hoạt động.

kubernetes pod.jpg

Thông thường, mỗi Pod sẽ triển khai 1 ứng dụng đơn lẻ (container docker), tuy nhiên, Pod hoàn toàn có thể triển khai nhiều container tùy theo mục đích triển khai.

Vì Pod được hiểu là một đơn vị nguyên tử (atomic unit) trong Kubernetes, nên mỗi Pod thực sự phải chạy một phiên bản duy nhất của một ứng dụng nhất định. Vì vậy, nếu bạn cần chạy nhiều bản sao của một container, thì mỗi container phải chạy trong Pod duy nhất của riêng nó thay vì để tất cả các container đó nằm trong một Pod duy nhất. Tuy nhiên, đôi khi một Pod có thể triển khai nhiều container nếu chúng có liên quan chặt chẽ với nhau (ví dụ phổ biến là một số thành phần ghi log). Một điều quan trọng cần lưu ý là tất cả các container trong Pod sẽ chia sẻ cùng một môi trường: bộ nhớ, ổ đĩa, ngăn xếp mạng và quan trọng nhất là địa chỉ IP.

Trong quá trình triển khai thông thường, Pod không được lập trình viên trực tiếp tạo ra. Thay vào đó, các bộ điều khiển (controller) sẽ lên lịch cho Pod chạy trên Node. Một số điều quan trọng cần biết về Pod:

1. Tạo Pod từ command

Để tạo 1 từ container image quay.io/openshiftlabs/simpleservice:0.5.0 và publish 1 HTTP API trên port 9876, thực hiện:

kubectl run sise --image=quay.io/openshiftlabs/simpleservice:0.5.0 --port=9876

Kiểm tra pod đang chạy:

kubectl get pods -A

Kêt quả:

NAME READY STATUS RESTARTS AGE
sise 1/1 Running 0 1m

Xóa Pod vừa tạo:

kubectl delete pod sise
2. Tạo Pod từ file kịch bản (Manifest file)

Chúng ta có thể tạo Pod từ các file kịch bản, sử dụng lệnh kubectl apply:

kubectl apply -f https://raw.githubusercontent.com/openshift-evangelists/kbe/main/specs/pods/pod.yaml

hoặc, có thể tạo file trên local với nội dung sau và thực thi lệnh kubectl apply:

apiVersion: v1
kind: Pod
metadata:
  name: twocontainers
spec:
  containers:
  - name: sise
    image: quay.io/openshiftlabs/simpleservice:0.5.0
    ports:
    - containerPort: 9876
  - name: shell
    image: centos:7
    command:
      - "bin/bash"
      - "-c"
      - "sleep 10000"

Kiểm tra Pod vừa tạo:

kubectl get pods

Kết quả:

NAME                        READY   STATUS    RESTARTS   AGE
twocontainers               2/2     Running   0          36s

Xóa Pod vừa tạo:

kubectl delete pod twocontainers

Revision #2
Created 1 January 2022 14:11:52 by Laptrinh.vn
Updated 21 February 2022 15:00:43 by Laptrinh.vn