Computer >> Hướng Dẫn Máy Tính >  >> Hệ Thống >> Linux

Kubernetes Pod: Đơn vị triển khai nhỏ nhất, nhóm container chia sẻ network/storage

Kubernetes Pods là đơn vị tính toán có thể triển khai nhỏ nhất (smallest deployable computing units) trong môi trường lập lịch và điều phối container Kubernetes mã nguồn mở.

Một Pod là một nhóm gồm một hoặc nhiều container hoạt động cùng nhau. Pods nằm trên Nodes (Nút); nhiều Pod có thể chia sẻ cùng một Node. Các container bên trong mỗi Pod chia sẻ tài nguyên mạng và lưu trữ chung từ Node host đó, cũng như các đặc tả (specifications) quyết định cách container chạy. Pod là tên gợi hình, vì chúng được thiết kế hoạt động như các pod trong tự nhiên, ví dụ như đậu que (pea pod). Mặc dù một Pod có thể đóng gói nhiều container, thường thì mỗi Pod chỉ chứa một container, hoặc một số nhỏ container tích hợp chặt chẽ (tightly integrated).

Nội dung của một Pod được lập lịch và định vị cùng nhau, mô hình hóa một logical host (máy chủ logic) đặc thù ứng dụng. Người dùng Kubernetes nên host cùng nhau các container ứng dụng tích hợp chặt chẽ trong một Pod; nếu không có container, các ứng dụng hoặc dịch vụ này phải chạy trên cùng máy ảo hoặc vật lý.

Bối cảnh chia sẻ (shared context) của một Pod được thiết lập bởi các khía cạnh cô lập (facets of isolation), như Linux Namespaces hoặc cgroups. Đối với một Pod riêng lẻ, các ứng dụng đơn lẻ có thể được cô lập thêm.

Toán tử (operator) có thể lộ thông tin về Pod, Node và/hoặc container bằng cách sử dụng biến môi trường (environment variables). Biến môi trường Pod cho ứng dụng trong container(s) của Pod biết nơi tìm tài nguyên nó cần, hoặc cách cấu hình một thành phần. Thông tin này được tiêm (injected) vào container tại runtime. Mặc dù Nodes cũng chứa biến môi trường, những thứ này không được lộ ra cho container. Biến môi trường Kubernetes được định nghĩa tĩnh (statically defined) hoặc do người dùng viết.

Quản lý Kubernetes Pod

Kubernetes hỗ trợ Docker container runtime cũng như CoreOS rkt và CRI-O, viết tắt của Kubelet Container Runtime Interface sử dụng runtime tuân thủ Open Container Initiative.

Người dùng có thể tạo Pods, nhưng thường thì Kubernetes Controller tạo Pods và bản sao của chúng cho high availability (sẵn sàng cao) hoặc Horizontal scaling (mở rộng ngang). Khi người dùng yêu cầu, ví dụ, ba instance mới của một Pod, Kubernetes tạo ba Pods như tài nguyên cấp API. Scheduler (bộ lập lịch) tìm Node phù hợp cho mỗi Pod dựa trên chính sách của người dùng Kubernetes, và đặt Pod đó.

Container trong một Pod chia sẻ địa chỉ IP chung và không gian cổng (port space). Chúng có thể khám phá nhau thông qua localhost. Ứng dụng được gán vào cùng Pod truy cập các volume (lưu trữ) chung, được gắn vào Pod.

Pods cũng cho phép container giao tiếp dùng các giao thức chuẩn khác như POSIX shared memory hoặc SystemV semaphores. Container trong một Pod có địa chỉ IP khác với container trong Pod khác, và không thể dùng giao thức IPC. Tuy nhiên, giao tiếp Kubernetes Pod-to-Pod diễn ra dễ dàng qua services (dịch vụ). Ví dụ, nếu front-end của ứng dụng nằm trong Pod trên một Node, back-end có thể nằm trên cùng Node, trên node khác, trong 10 instance phân tán trên nhiều Node, và front-end Pod chỉ cần kết nối đến một service đại diện cho back-end Pod hoặc Pods.

Kubernetes Pod: Đơn vị triển khai nhỏ nhất, nhóm container chia sẻ network/storage