एकाधिक स्केड्यूलर्स कॉन्फ़िगर करें
Kubernetes में, आप एक ही क्लस्टर में एकाधिक स्केड्यूलर्स चला सकते हैं। आप एक मुख्य स्केड्यूलर के साथ एक कस्टम स्केड्यूलर चला सकते हैं। पॉड्स को कस्टम स्केड्यूलर द्वारा स्केड्यूल करने के लिए, आप उन पॉड्स के स्पेसिफिकेशन में स्केड्यूलर का नाम निर्दिष्ट करते हैं।
शुरू करने से पहले
आपको कुबरनेट्स क्लस्टर की ज़रूरत पड़ेगी और क्यूब सीटीएल कमांड लाइन साधन को समनुरूप करना होगा ताकि वो आपके क्लस्टर के साथ संवाद कर सकें। हमारी सलाह है की इस टुटोरिअल को क्लस्टर में रन करने के लिए कम से कम दो नोड का इस्तेमाल करे जो कि कंट्रोल प्लेन होस्ट के तरह ना एक्ट करे। अगर आपके पास पहले से क्लस्टर नही है, आप minikube की मदद से वह बना सकते है या आप नीचे दिए हुए इन दो कुबरनेट्स प्लेग्राउंड का इस्तेमाल कर सकते हैं:
स्केड्यूलर कोड को डाउनलोड करें
- स्केड्यूलर कोड को डाउनलोड करें:
git clone https://github.com/kubernetes/kubernetes.git
cd kubernetes
- एक कस्टम स्केड्यूलर बनाएं जो निम्नलिखित कोड से बना हो:
package main
import (
"fmt"
"os"
"k8s.io/kubernetes/cmd/kube-scheduler/app"
)
func main() {
command := app.NewSchedulerCommand(
app.WithPlugin("multipoint", multipoint.New),
)
if err := command.Execute(); err != nil {
fmt.Fprintf(os.Stderr, "%v\n", err)
os.Exit(1)
}
}
- स्केड्यूलर को बिल्ड करें:
go build -o my-scheduler
स्केड्यूलर को डिप्लॉय करें
स्केड्यूलर को क्लस्टर में डिप्लॉय करने के लिए, आप एक Kubernetes डिप्लॉयमेंट का उपयोग कर सकते हैं। यहाँ एक उदाहरण है:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-scheduler
namespace: kube-system
spec:
replicas: 1
selector:
matchLabels:
component: scheduler
tier: control-plane
template:
metadata:
labels:
component: scheduler
tier: control-plane
spec:
serviceAccountName: my-scheduler-sa
containers:
- name: my-scheduler
image: my-scheduler:latest
imagePullPolicy: Never
livenessProbe:
httpGet:
path: /healthz
port: 10251
initialDelaySeconds: 15
readinessProbe:
httpGet:
path: /healthz
port: 10251
initialDelaySeconds: 5
स्केड्यूलर को कॉन्फ़िगर करें
स्केड्यूलर को कॉन्फ़िगर करने के लिए, आप एक कॉन्फ़िगमैप बना सकते हैं:
apiVersion: v1
kind: ConfigMap
metadata:
name: my-scheduler-config
namespace: kube-system
data:
scheduler-config.yaml: |
apiVersion: kubescheduler.config.k8s.io/v1beta1
kind: KubeSchedulerConfiguration
profiles:
- schedulerName: my-scheduler
plugins:
score:
enabled:
- name: NodeResourcesBalancedAllocation
weight: 1
- name: NodeResourcesLeastAllocated
weight: 1
स्केड्यूलर का उपयोग करें
पॉड्स को कस्टम स्केड्यूलर द्वारा स्केड्यूल करने के लिए, आप उन पॉड्स के स्पेसिफिकेशन में schedulerName
फ़ील्ड निर्दिष्ट करते हैं:
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
schedulerName: my-scheduler
containers:
- name: nginx
image: nginx
आगे क्या है
- स्केड्यूलर प्रोफ़ाइल्स के बारे में जानें
- स्केड्यूलर प्लगइन्स के बारे में जानें
- स्केड्यूलर कॉन्फ़िगरेशन के बारे में जानें