Static Pods Kubernetes là gì? Hướng dẫn cấu hình và tạo Static Pod Kubernetes chi tiết

Đã kiểm duyệt nội dung
Đánh giá
Đối với mình, Static Pods Kubernetes không phải là khái niệm lý thuyết khó hiểu mà là thứ mình đã trực tiếp dùng khi cần đảm bảo các thành phần quan trọng luôn chạy ổn định trên node. Trong quá trình triển khai thực tế, mình nhận ra Static Pod đặc biệt hữu ích khi kubelet có thể tự quản lý pod mà không phụ thuộc vào API Server. Bài viết dưới đây sẽ giúp bạn hiểu rõ cách cấu hình và tạo Static Pod Kubernetes một cách chi tiết, dễ áp dụng ngay vào hệ thống.
Những điểm chính
Đối với mình, Static Pod không chỉ là một cách triển khai pod đặc biệt mà còn là công cụ cực kỳ quan trọng trong việc vận hành các thành phần cốt lõi của Kubernetes như control plane. Nếu bạn đang tìm cách hiểu rõ bản chất, cách sử dụng và khi nào nên áp dụng Static Pod, nội dung dưới đây sẽ giúp bạn nắm nhanh toàn bộ bức tranh:
- Khái niệm: Hiểu rõ Static Pod là Pod được kubelet quản lý trực tiếp từ file manifest trên node, giúp nhận biết vai trò của nó trong việc khởi chạy các thành phần hệ thống quan trọng.
- Đặc điểm chính: Nắm được các đặc điểm cốt lõi như không phụ thuộc control plane, tự phục hồi ở mức node và có mirror pod, giúp hiểu rõ cách Static Pod hoạt động và khác biệt so với Pod thông thường.
- Trường hợp sử dụng: Nhận biết các kịch bản nên dùng Static Pod, giúp áp dụng đúng công cụ để khởi chạy control plane hoặc các dịch vụ hạ tầng quan trọng.
- Cách sử dụng: Nắm vững các bước từ cấu hình kubelet, tạo manifest YAML đến quan sát và quản lý, giúp tự tin triển khai và vận hành Static Pod trong môi trường thực tế.
- So sánh với DaemonSet: Phân biệt rõ sự khác biệt giữa Static Pod và DaemonSet, giúp lựa chọn đúng công cụ khi cần triển khai dịch vụ trên từng node.
- Biết thêm Vietnix là nhà cung cấp dịch vụ hosting, VPS và cloud tốc độ cao dành cho doanh nghiệp.
- Câu hỏi thường gặp: Giải đáp các thắc mắc liên quan đến Static Pod trong Kubernetes.

Static Pod trong Kubernetes là gì?
Static Pod trong Kubernetes là Pod được định nghĩa bằng file manifest (YAML/JSON) đặt trong một thư mục cấu hình trên filesystem của node, kubelet sẽ tự đọc và triển khai Pod từ đó. Pod này gắn chặt với node chứa file manifest, không được scheduler phân phối nên không phải là đối tượng được quản lý tập trung bởi control plane như Pod thông thường.

Static Pod giúp bạn đảm bảo các thành phần quan trọng luôn chạy ổn định trên từng node, nhưng để cả cụm Kubernetes và ứng dụng doanh nghiệp vận hành bền vững, bạn vẫn cần một nền tảng hạ tầng cloud tổng thể, linh hoạt và dễ mở rộng. Với dịch vụ enterprise cloud của Vietnix, doanh nghiệp có thể triển khai Kubernetes, microservices và nhiều môi trường Dev/Prod trên hạ tầng Cloud Server hiệu năng cao, độ sẵn sàng lớn, dễ scale tài nguyên và được đội ngũ kỹ thuật hỗ trợ 24/7.
Đặc điểm chính của Static Pod
Đặc điểm chính của Static Pod tập trung vào việc được quản lý cục bộ bởi kubelet trên từng node, không phụ thuộc vào control plane như Pod thông thường. Các đặc điểm chính của Static Pod bao gồm:
- Không do control plane quản lý vòng đời: Static Pod không được scheduler lên node, không chịu sự điều phối hay replica management từ các controller, toàn bộ vòng đời được quyết định bởi kubelet trên node.
- Gắn chặt với từng node: Mỗi Static Pod chỉ tồn tại trên node nơi đặt file manifest; nếu node gặp sự cố hoặc bị xóa, Pod không được tự động dời sang node khác như Deployment hay DaemonSet.
- Tự phục hồi ở mức node: Khi container trong Static Pod gặp lỗi và dừng, kubelet sẽ phát hiện trạng thái này và khởi động lại Pod dựa trên manifest cục bộ, đảm bảo dịch vụ luôn được duy trì trên node đó.
- Có mirror Pod trên API server: Kubelet tạo ra một “mirror pod” tương ứng trên API server để bạn có thể quan sát bằng lệnh kubectl, nhưng mirror Pod chỉ là bản phản chiếu, không chứa container thực thi và không thể bị điều khiển trực tiếp (ví dụ không thể xóa Static Pod thật bằng kubectl delete).

Trường hợp sử dụng Static Pod
Trường hợp sử dụng Static Pod chủ yếu gắn với lớp hạ tầng và control plane, thay vì phục vụ workload ứng dụng thông thường trên cụm Kubernetes. . Cụ thể như sau:
- Dùng để bootstrap cụm: Các thành phần control plane cốt lõi như kube-apiserver, etcd, kube-controller-manager, scheduler thường được khởi chạy lần đầu dưới dạng Static Pod thông qua các file manifest đặt tại thư mục mặc định trên node (ví dụ /etc/kubernetes/manifests).
- Triển khai thành phần hệ thống trên từng node: Static Pod phù hợp với các dịch vụ hạ tầng cần đảm bảo luôn chạy ở mọi node như agent thu thập log, tác vụ giám sát, hoặc job dọn dẹp tài nguyên cục bộ.
- Môi trường lab hoặc cluster nhỏ: Trong các bài lab, demo hoặc cụm tự dựng đơn giản, Static Pod có thể được dùng để nhanh chóng chạy một số dịch vụ hệ thống mà không phải cấu hình đầy đủ controller và scheduler.
- Tránh phụ thuộc sớm vào control plane: Khi control plane chưa sẵn sàng hoặc đang được khởi tạo, Static Pod cho phép các thành phần cần thiết vẫn hoạt động vì chúng được kubelet quản lý trực tiếp trên node.

Cách sử dụng Static Pod
- Cấu hình kubelet để bật Static Pod
- Tạo Static Pod bằng manifest YAML trên node
- Quan sát và kiểm tra Static Pod
- Chỉnh sửa, cập nhật và xóa Static Pod
- Tạo Static Pod cho control plane hoặc dịch vụ hệ thống
1. Cấu hình kubelet để bật Static Pod
Để có thể dùng Static Pod, trước tiên bạn cần chỉ ra cho kubelet biết thư mục chứa manifest tĩnh trên từng node. Đầu tiên, bạn mở file cấu hình kubelet (ví dụ /var/lib/kubelet/config.yaml) và khai báo trường staticPodPath trỏ tới thư mục chứa manifest, thường là /etc/kubernetes/manifests. Ví dụ cấu hình tối giản:
kind: KubeletConfiguration
apiVersion: kubelet.config.k8s.io/v1beta1
staticPodPath: /etc/kubernetes/manifestsSau khi chỉnh sửa, bạn cần reload và restart dịch vụ kubelet (ví dụ systemctl restart kubelet trên các distro dùng systemd) để cấu hình có hiệu lực. Bạn có thể thiết lập bằng tham số dòng lệnh bằng cách khởi động kubelet với tham số –pod-manifest-path=/etc/kubernetes/manifests/ để chỉ định thư mục chứa manifest Static Pod.
Cách này chủ yếu dùng trong môi trường lab hoặc cụm tự dựng cũ. Với bản Kubernetes mới, bạn nên chuyển sang cấu hình qua file KubeletConfiguration cho linh hoạt và dễ quản lý.
2. Tạo Static Pod bằng manifest YAML trên node
Sau khi cấu hình staticPodPath, việc tạo Static Pod được thực hiện hoàn toàn bằng thao tác với file YAML trên filesystem của node. Bạn cần xác định thư mục Static Pod tại thư mục phổ biến là /etc/kubernetes/manifests, được kubelet scan định kỳ để phát hiện file mới, sửa, xóa. Bạn cần di chuyển vào thư mục này trên node nơi kubelet đang chạy:
cd /etc/kubernetes/manifestsBạn cũng có thể viết file manifest Pod bằng cách tạo file static-web.yaml với nội dung Pod chuẩn, không cần field đặc biệt nào cho static:
apiVersion: v1
kind: Pod
metadata:
name: static-web
labels:
app: static-web
spec:
containers:
- name: nginx-container
image: nginx:latest
ports:
- name: http
containerPort: 80
protocol: TCPNgay khi file được lưu đúng trong thư mục staticPodPath, kubelet sẽ tự động phát hiện và khởi chạy Pod tương ứng mà không cần chạy kubectl apply hay bất kỳ lệnh tạo Pod nào. Ví dụ manifest Static Pod httpd:
apiVersion: v1
kind: Pod
metadata:
name: httpd-static-pod
spec:
containers:
- name: httpd
image: httpd:latestBạn chỉ cần copy file này vào thư mục static pod (ví dụ /etc/kubernetes/manifests), kubelet sẽ tự khởi động Pod với container httpd.
3. Quan sát và kiểm tra Static Pod
Dù Static Pod do kubelet quản lý, bạn vẫn có thể kiểm tra trạng thái và log của chúng qua cả node lẫn API server. Để kiểm tra trên node qua container runtime thì bạn cần dùng crictl (hoặc công cụ tương đương) để liệt kê container đang chạy:
# Chạy trên node nơi kubelet đang hoạt động
crictl psLệnh này giúp xác nhận container của Static Pod đã được khởi chạy đúng theo manifest. Bạn cũng có thể quan sát Static Pod dưới dạng mirror Pod trên API server:
- Kubelet tự động tạo một mirror pod có tên được thêm hậu tố hostname node, ví dụ static-web-node01, để hiển thị trong API server.
- Có thể xem bằng kubectl: kubectl get pods -A
- Khi xem danh sách, các Static Pod sẽ xuất hiện với tên đã được thêm -, đây chỉ là bản phản chiếu, API server không điều khiển trực tiếp được vòng đời Static Pod từ đối tượng này.
4 Chỉnh sửa, cập nhật và xóa Static Pod
Với Static Pod, thao tác quản lý không dựa vào kubectl create/delete, mà dựa vào chính file manifest được kubelet theo dõi:
– Cập nhật Static Pod:
Đầu tiên, bạn cần mở file YAML trong thư mục static Pod (ví dụ static-web.yaml) và chỉnh sửa cấu hình container, image, port, resource,… như với Pod bình thường. Sau khi lưu, kubelet phát hiện file thay đổi và tự recreate Pod theo cấu hình mới (thường là xóa Pod cũ rồi tạo lại với spec mới).
– Xóa Static Pod:
Bạn không dùng kubectl delete Pod để xóa Static Pod gốc, vì thao tác này chỉ xóa mirror Pod trên API server hoặc bị kubelet tạo lại ngay. Cách đúng là xóa hoặc di chuyển file manifest ra khỏi thư mục staticPodPath, ví dụ:
mv /etc/kubernetes/manifests/static-web.yaml /tmp/Khi file không còn trong thư mục, kubelet sẽ dừng Static Pod tương ứng và nó biến mất khỏi cả node lẫn danh sách mirror Pod trên API server.
5. Tạo Static Pod cho control plane hoặc dịch vụ hệ thống
Các cụm tạo bằng kubeadm lưu manifest của kube-apiserver, kube-controller-manager, kube-scheduler,… dưới dạng Static Pod trong /etc/kubernetes/manifests trên node control plane. Mỗi khi cần nâng cấp hoặc thay đổi cấu hình, kubeadm hoặc admin chỉnh sửa các file này; kubelet sẽ tự cập nhật các Static Pod tương ứng, giúp cụm khởi động và vận hành control plane ổn định mà không cần đối tượng Deployment riêng cho các thành phần này.
Bạn có thể triển khai các tác vụ như agent thu thập log, tool giám sát, hoặc job dọn dẹp cục bộ dưới dạng Static Pod để đảm bảo chúng luôn tồn tại trên node, bất kể control plane tạm thời không khả dụng. Cách triển khai vẫn là viết một manifest Pod thông thường (chọn image, volume, env, securityContext,…) rồi đặt vào thư mục static Pod trên từng node cần chạy.

Điểm khác biệt giữa Static Pod và DaemonSet
| Tiêu chí | Static Pod | DaemonSet |
| Cách được tạo ra | Được kubelet đọc trực tiếp từ file manifest trên node, không đi qua API server | Được khai báo như một resource DaemonSet và tạo pod thông qua API server, có controller quản lý |
| Mức độ phụ thuộc API server | Vẫn chạy được khi API server ngừng hoạt động, vì kubelet chỉ cần đọc file cục bộ trên node | Phụ thuộc control plane, nếu API server hoặc controller gặp sự cố, DaemonSet không thể tạo hay quản lý Pod mới |
| Mục đích sử dụng chính | Thường dùng cho thành phần control plane hoặc dịch vụ hạ tầng gắn chặt với node, cần tồn tại ngay cả khi control plane chưa sẵn sàng | Phổ biến cho các agent như log collector, monitoring, security agent cần chạy đồng nhất trên mọi node và được quản lý tập trung |
| Cách cập nhật cấu hình | Chỉnh sửa trực tiếp YAML trong thư mục staticPodPath trên node, kubelet tự phát hiện thay đổi và recreate Pod | Thay đổi spec bằng kubectl apply/helm,… trên đối tượng DaemonSet, controller sẽ rollout bản cấu hình mới đến các Pod |
| Cơ chế scheduling | Không đi qua kube-scheduler, node chạy Pod chỉ vì kubelet đọc được manifest nằm trên filesystem của node đó | Cũng không cần kube-scheduler cho từng Pod, nhưng việc đặt Pod lên node được điều khiển bởi DaemonSet controller dựa trên danh sách node trong cluster |
Mặc dù cả hai đều giúp duy trì Pod trên node nhưng bạn chỉ nên dùng Static Pod cho các thành phần bắt buộc phải chạy trước khi Kubernetes Cluster hoạt động (như etcd, apiserver). Đối với các tác vụ bổ trợ như thu thập log hay giám sát ứng dụng, mình khuyên dùng DaemonSet để tận dụng khả năng quản lý tập trung và cập nhật linh hoạt từ API Server. Việc lạm dụng Static Pod cho các workload thông thường sẽ gây khó khăn trong việc bảo trì và giám sát hệ thống ở quy mô lớn.
Vietnix – Nhà cung cấp dịch vụ hosting, VPS và cloud tốc độ cao dành cho doanh nghiệp
Vietnix là nhà cung cấp dịch vụ premium hosting, dịch vụ máy chủ ảo và cloud hướng đến hiệu năng cao và tính ổn định cho hệ thống doanh nghiệp. Hạ tầng được xây dựng nhằm đáp ứng nhu cầu triển khai từ website cơ bản đến các ứng dụng phức tạp, với khả năng mở rộng linh hoạt và tối ưu tài nguyên. Bên cạnh đó, dịch vụ hỗ trợ kỹ thuật liên tục cùng các giải pháp bảo mật và vận hành giúp đảm bảo hệ thống hoạt động ổn định, phù hợp với nhiều mô hình kinh doanh khác nhau. Liên hệ ngay!
Thông tin liên hệ:
- Website: https://vietnix.vn/
- Hotline: 1800 1093
- Email: sales@vietnix.com.vn
- Địa chỉ: 265 Hồng Lạc, Phường Bảy Hiền, Thành Phố Hồ Chí Minh
Câu hỏi thường gặp
etcd có phải là một pod tĩnh không?
Có, nhưng không phải lúc nào cũng vậy.
– Với kubeadm: etcd chạy dưới dạng Static Pod.
– Với managed Kubernetes hoặc setup custom: etcd có thể không phải Static Pod (do hệ thống quản lý riêng).
Làm sao để biết một pod có tĩnh hay không?
Bạn có thể nhận biết Static Pod qua 3 dấu hiệu chính:
– Không có controller quản lý: Pod không thuộc Deployment, ReplicaSet hoặc DaemonSet.
– Nguồn tạo từ file trên node: Được kubelet đọc trực tiếp từ thư mục manifest (thường là /etc/kubernetes/manifests).
– Có annotation đặc trưng: Hiển thị nguồn là file.
Sự khác biệt giữ pod tĩnh và pod được tạo bằng DaemonSet là gì?
Sự khác biệt nằm ở cách quản lý và cơ chế triển khai:
– Quản lý: Static Pod do kubelet trên từng node quản lý trực tiếp, không thông qua API Server; trong khi Pod của DaemonSet được quản lý bởi controller trong Kubernetes.
– Triển khai: Static Pod phải tạo thủ công bằng file trên từng node; còn DaemonSet tự động triển khai Pod lên các node theo cấu hình.
– Khả năng mở rộng: Static Pod không tự scale; DaemonSet tự đảm bảo mỗi node (hoặc node phù hợp) đều có một Pod.
– Cập nhật: Static Pod cần chỉnh sửa file thủ công; DaemonSet có thể update tập trung và rollout tự động.
Static Pods Kubernetes là nền tảng quan trọng giúp giữ cho các thành phần control plane và dịch vụ hạ tầng luôn chạy ổn định ngay trên node, không phụ thuộc hoàn toàn vào API server. Khi nắm vững cách tạo, quản lý và phân biệt Static Pod với Pod thông thường hoặc DaemonSet, bạn sẽ dễ dàng xây dựng cụm Kubernetes linh hoạt, an toàn và phù hợp cho nhiều kịch bản triển khai khác nhau. Cảm ơn bạn đã theo dõi bài viết!
THEO DÕI VÀ CẬP NHẬT CHỦ ĐỀ BẠN QUAN TÂM
Đăng ký ngay để nhận những thông tin mới nhất từ blog của chúng tôi. Đừng bỏ lỡ cơ hội truy cập kiến thức và tin tức hàng ngày












