Các pod tĩnh trong Kuberentes

theanh

Administrator
Nhân viên
Static Pod được quản lý trực tiếp bởi kubelet và máy chủ API không có quyền kiểm soát các pod này. Kubelet có trách nhiệm theo dõi từng Pod tĩnh và khởi động lại nếu nó gặp sự cố. Các staticPod chạy trên một nút có thể nhìn thấy trên máy chủ API nhưng không thể được máy chủ API kiểm soát. Static Pod không có bất kỳ bộ điều khiển sao chép nào được liên kết, bản thân dịch vụ kubelet sẽ theo dõi và khởi động lại khi nó gặp sự cố. Không có kiểm tra tình trạng sức khỏe cho các pod tĩnh. Quá trình kubelet theo dõi thư mục cụ thể được chỉ định cho các Pod tĩnh.

Để biết thêm về các Pod tĩnh, hãy truy cập trang chính thức của Kubernetes tại đây.

Trong bài viết này, chúng ta sẽ xem các bước để tạo một Pod tĩnh từ tệp được lưu tại vị trí mặc định mà kubelet đọc các bản kê khai và chúng ta cũng sẽ thay đổi vị trí mặc định thành một thư mục khác và xem cách tạo pod tĩnh từ đó. Chúng tôi sẽ tạo các pod tĩnh trên nút Worker.

Điều kiện tiên quyết​

  1. Cụm Kubernetes có ít nhất 1 nút worker.
    Nếu bạn muốn tìm hiểu cách tạo Cụm Kubernetes, hãy nhấp vào đây. Hướng dẫn này sẽ giúp bạn tạo cụm Kubernetes có 1 Master và 2 Node trên AWS Ubuntu 18.04 EC2 Instances.

Chúng ta sẽ làm gì?​

  1. Tạo Pod tĩnh

Tạo Pod tĩnh​

Thực hiện các lệnh sau từ nút master để lấy thông tin chi tiết về các node và pod trong cụm.
Mã:
$master kubectl get nodes
Mã:
$masterkubectl get pods

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22236%22%3E%3C/svg%3E


Bạn có thể kiểm tra các container đang chạy như một phần của vỏ
Mã:
$workerdocker ps
Mã:
$workerdocker ps -a

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%2291%22%3E%3C/svg%3E


Bây giờ, hãy đăng nhập vào nút worker và tạo một tệp mới với nội dung sau tại defaultpath của static pod biểu hiện.
Mã:
$worker vim /etc/kubernetes/manifests/static-web.yaml
Mã:
apiVersion: v1
kind: Pod
metadata: name: static-web labels: role: myrole
spec: containers: - name: web image: nginx ports: - name: web containerPort: 80 protocol: TCP

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22272%22%3E%3C/svg%3E




Ngay sau khi bạn tạo định nghĩa pod tại vị trí mặc định của tệp kê khai pod tĩnh, pod sẽ được tạo mà không được máy chủ API kiểm soát.

Bạn có thể kiểm tra pod mới tạo bằng lệnh sau để liệt kê các pod từ tất cả các không gian tên từ máy chủ chính nút.
Mã:
$masterkubectl get pods
Mã:
$masterkubectl get pods --all-namespaces

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22245%22%3E%3C/svg%3E


Để kiểm tra các container được tạo như một phần của Pod, hãy thực hiện lệnh sau trên worker nút
Mã:
$workerdocker ps
Mã:
$workerdocker ps -a

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22138%22%3E%3C/svg%3E


Chúng ta cũng có thể thay đổi vị trí mặc định mà kubelet đọc manifest.

Bây giờ hãy tạo một thư mục mới nơi chúng ta muốn lưu trữ manifest của Static Pod.

Ở đây, chúng ta đang tạo "/etc/kubelet.d/".
Mã:
$workermkdir -p /etc/kubelet.d/
Tạo tệp định nghĩa pod trong thư mục chúng tôi đã tạo.
Mã:
$worker vim/etc/kubelet.d/static-web.yaml
Mã:
apiVersion: v1
kind: Pod
metadata: name: static-web-2 labels: role: myrole
spec: containers: - name: web image: nginx ports: - name: web containerPort: 80 protocol: TCP
Để thay đổi đường dẫn mặc định mà Kubelets đọc manifest của Static Pod, hãy chỉnh sửa tệp/var/lib/kubelet/config.yaml và thay đổi giá trị của "staticPodPath" thành "staticPodPath=/etc/kubelet.d".


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22156%22%3E%3C/svg%3E


Sau khi cấu hình xong, hãy khởi động lại Dịch vụ Kubelet
Mã:
$worker systemctl restart kubelet
Ngay sau khi dịch vụ được khởi động lại, Kubelet sẽ phát hiện vị trí mới và đọc các bản kê khai từ vị trí đó và tạo các pod.

Kiểm tra xem pod đã được tạo hay chưa không.
Mã:
$masterkubectlget pods

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22144%22%3E%3C/svg%3E


Kiểm tra vùng chứa được tạo như một phần của Pod trên nút worker bằng lệnh sau.
Mã:
$workerdocker ps

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22126%22%3E%3C/svg%3E

Kết luận​

Trong bài viết này, chúng ta đã thấy các bước để tạo staticpod và chúng ta cũng thấy sự thay đổi cấu hình cần thiết trong Kubelet để thay đổi thư mục mặc định cho các bản kê khai của Static Pod.
 
Back
Bên trên