Skip to content
Go back

Tìm hiểu về Pod network

Updated:  at  06:35 AM

Table of contents

Open Table of contents

Pod là gì?

Ví dụ có một Nginx container listen port 80 và một container khác trong Pod có thể kết nối đến Nginx container bằng địa chỉ http://localhost:80. Chúng hoạt động như thế nào vậy?

Tìm hiểu về network trong Pod

Trước khi tìm hiểu, chúng ta sẽ xem lại network giữa các Docker container bình thường khi triển khai trên local machine. Network diagram sẽ như sau:

Nhìn vào diagram chúng ta có thể thấy Container 1 và Container 2 có thể kết nối với nhau thông qua địa chỉ IP (vì chúng cùng gắn với docker0 network). Nếu expose listening port của một trong các container ra ngoài máy host, bản chất iptables rule được bổ sung để NAT các packet từ card eth0 tới veth0 (hoặc veth1) trong Docker container.

Tuy nhiên đối với Kubernetes thì làm sao hai container cùng một Pod có thể kết nối với nhau thông qua localhost?

May thay khi triển khai một Docker container thay vì tạo một virtual network interface mới, nó có thể chỉ định một share network interface hiện có. Hình dung lại diagram sẽ như sau: Bây giờ thì Container 2 thay vì gắn với veth1 như ở diagram trước thì giờ được gắn chung với veth0, việc này cho chúng ta một số các thay đổi như sau:

Kubernetes đã implement pattern nói trên bằng cách triển khai một container đặc biệt cho mỗi Pod và có mục đích duy nhất là cung cấp network interface cho các container. Chúng ta có thể kiểm tra bằng cách sử dụng command docker ps trên các Kubernetes node (running Pod):

  docker ps
CONTAINER ID        IMAGE                       COMMAND ...
...
3b45e983c859        k8s.gcr.io/pause:3.2        "/pause" ...

Giao tiếp giữa các Pod trên nhiều Kubernetes node

Dựa vào diagram chúng ta sẽ thấy được như sau:

Mỗi server node là độc lập (với các node khác), card mạng docker0 được tạo ra mặc định và quản lý bởi Docker trên server node đó thôi. Sẽ có thể xảy ra vấn đề trên cả 02 node đều triển khai service Pod gắn với veth0 riêng biệt nhưng lại có cùng 1 địa chỉ là 172.17.0.2. Vậy làm thế nào mà packet được gửi qua lại giữa 02 Pod (trên 02 node khác nhau) khi chúng giao tiếp?


Để giải quyết vấn đề này, Kubernetes đã giải quyết như sau:

Tìm hiểu thêm về K8s Networking

Reference Link

Tổng quan về Pod trong k8s:

Giải thích chi tiết về network hoạt động như thế nào trong Pod resource:


Suggest Changes

Previous Post
Tìm hiểu về Ingress network
Next Post
Tìm hiểu về Service network