Manual Scheduling trong K8S

Trong bài viết này, hãy cùng mình tìm hiểu cách thực hiện Manual Scheduling trong K8s.

1. Cách Scheduling hoạt động

Trường Node Name: Mỗi pod trong k8s có một trường Node Name. Scheduler sẽ điền vào trường này khi nó gán một pod cho một node.

Quá trình lập lịch: Scheduler kiểm tra các pods chưa có Node Name và áp dụng các thuật toán lập lịch để chọn node phù hợp nhất. Sau đó, nó tạo một đối tượng Binding để liên kết pod với node đã chọn.

Manual Scheduling

2. Vai trò của scheduling

Thông thường, Kubernetes sử dụng scheduling để tự động gán pods cho các nodes dựa trên nhiều yếu tố như sẵn có tài nguyên và các ràng buộc khác.

Architecture K8S

3. Manual Scheduling Pod

3.1 Không có Scheduler

Nếu không có scheduler, pods sẽ ở trạng thái “Pending” bởi vì chúng không thể được gán cho các node tự động.

– File POD nginx.yaml

apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  containers:
  -  image: nginx
     name: nginx

– Trạng thái của POD:

NAME    READY   STATUS    RESTARTS   AGE
nginx   0/1     Pending   0          44s

3.2 Manual Scheduling Pod

Bạn có thể manunal scheduling pod bằng cách trực tiếp chỉ định “Node Name” trong tệp định nghĩa pod khi tạo pod. Điều này buộc Kubernetes phải gán pod cho node đã chỉ định.

– Manunal Scheduling Pod cho node01:

apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  nodeName: node01
  containers:
  -  image: nginx
     name: nginx
NAME    READY   STATUS    RESTARTS   AGE
nginx   1/1     Running   0          23s

Hạn chế: Phương pháp này chỉ hoạt động trong quá trình tạo pod. Bạn không thể sửa đổi “Node Name” của một pod đã được tạo.

4. Scheduling Pod already exits

Đối tượng Binding: Để gán một node cho một pod đã tồn tại, bạn cần tạo một đối tượng “Binding” và gửi một yêu cầu POST đến API binding của pod.

Nội dung của Đối tượng Binding: Đối tượng binding chỉ định “Target Node” với tên node mong muốn.

Định dạng JSON: Yêu cầu POST yêu cầu gửi đối tượng binding ở định dạng JSON.

Hy vọng rằng qua bài viết này, bạn đã hiểu rõ hơn về vai trò và cách hoạt động của Manual Scheduling trong K8s. Cảm ơn bạn đã tham khảo kubernetes cơ bản trên ttnguyen.net.

Nguyễn Tiến Trường

Mình viết về những điều nhỏ nhặt trong cuộc sống, Viết về câu chuyện những ngày không có em