Trong bài viết này, hãy cùng mình tìm hiểu về multiple schedulers trong kubernetes, cho phép bạn tùy chỉnh quá trình phân bổ pod cho các node.
Xem thêm:
1. Vì sao cần sử dụng multilphe schedulers
Scheduler trong kubernetes giúp điều phối các Pod tới các Worker Node dựa theo các điều kiện khác nhau. Nhưng điều gì sẽ xảy ra nếu không có scheduler nào thỏa mãn yêu cầu của bạn? Có các nào để tùy chỉnh cách phân bố thủ công hay không? Câu trả lời là cóa.
Khi bạn cần thêm điều kiện hoặc kiểm tra tùy chỉnh cho việc phân bổ pod, bạn có thể tạo scheduler riêng của mình.
2. Cách tạo một scheduler riêng
Bạn có thể viết scheduler của riêng mình và đóng gói dưới dạng scheduler mặc định hoặc scheduler bổ sung.
Ví dụ:
--- apiVersion: v1 kind: Pod metadata: labels: run: my-scheduler name: my-scheduler namespace: kube-system spec: serviceAccountName: my-scheduler containers: - command: - /usr/local/bin/kube-scheduler - --config=/etc/kubernetes/my-scheduler/my-scheduler-config.yaml image: registry.k8s.io/kube-scheduler:v1.29.0 # changed livenessProbe: httpGet: path: /healthz port: 10259 scheme: HTTPS initialDelaySeconds: 15 name: kube-second-scheduler readinessProbe: httpGet: path: /healthz port: 10259 scheme: HTTPS resources: requests: cpu: '0.1' securityContext: privileged: false volumeMounts: - name: config-volume mountPath: /etc/kubernetes/my-scheduler hostNetwork: false hostPID: false volumes: - name: config-volume configMap: name: my-scheduler-config
3. Triển khai scheduler
Triển khai như một service
- Sử dụng binary kube-scheduler và file cấu hình riêng.
- Cung cấp tùy chọn kubeconfig để kết nối với API server.
Triển khai như một pod
- Tạo file định nghĩa pod với các thuộc tính như kubeconfig, config và leaderElect.
- leaderElect được sử dụng để lựa chọn scheduler chính trong trường hợp có nhiều scheduler đang chạy.
Triển khai như một deployment
- Tạo file định nghĩa deployment với các thuộc tính tương tự như pod, bao gồm image, config file, binary, service account, cluster role bindings.
- Sử dụng ConfigMap để lưu trữ file cấu hình scheduler và gắn vào deployment k8s.
Kiểm tra
- Sử dụng lệnh kubectl get pods để kiểm tra xem scheduler đã được triển khai thành công.
- Sử dụng lệnh kubectl get events -o wide để xem scheduler nào đã phân bổ pod.
- Sử dụng lệnh kubectl logs để xem log của scheduler.
4. Cấu hình scheduler cho pod
Thêm thuộc tính schedulerName vào file định nghĩa pod và chỉ định tên của scheduler. Sử dụng lệnh kubectl create để tạo pod.
Triển khai nhiều scheduler trong Kubernetes cho phép bạn tùy chỉnh quá trình phân bổ pod theo nhu cầu của mình. Bạn có thể tạo scheduler riêng để đáp ứng các yêu cầu cụ thể của ứng dụng.
--- apiVersion: v1 kind: Pod metadata: name: nginx spec: schedulerName: my-scheduler containers: - image: nginx name: nginx
Cảm ơn bạn đã tham khảo kubernetes cơ bản trên ttnguyen.net.
Bài viết liên quan:
Taints và Tolerations trong Kuberbetes