Kubernetes Scheduler is a rich strategy, topology awareness, workload specific functions, scheduler significantly affect the availability, performance and capacity. The scheduler resource requirements need to be considered individually and collectively, quality of service requirements, hardware / software / policy constraints, affinity and anti-affinity specifications, data locality, between the load disturbance, deadlines and so on. Will be exposed through the API workloads specific requirements necessary.
kube-scheduler is one of Kube-Master 3-related services (ApiServer, Controller Manager, Scheduler), there is a state service, modify the status of the cluster.
If the relevant services on multiple master nodes at the same time to take effect, there will be synchronized with consistency, so much master node kube-scheduler service can only be a relation of master and slave, kukubernetes using lock lease (lease-lock) realization leader elections, specific to kube-scheduler, set the startup parameters "--leader-elect = true".
Cluster Programming
CPU name | Character | IP addresses |
---|---|---|
mfyxw30.mfyxw.com | kube-scheduler | 192.168.80.30 |
mfyxw40.mfyxw.com | kube-scheduler | 192.168.80.40 |
1. Create a startup script kube-scheduler
Creating kube-scheduler startup script on the host mfyxw30.mfyxw.com
[root@mfyxw30 ~]# cat > /opt/kubernetes/server/bin/kube-scheduler.sh << EOF
#!/bin/sh
./kube-scheduler \\
--leader-elect \\
--log-dir /data/logs/kubernetes/kube-scheduler \\
--master http://127.0.0.1:8080 \\
--v 2
EOF
Creating kube-scheduler startup script on the host mfyxw40.mfyxw.com
[root@mfyxw40 ~]# cat > /opt/kubernetes/server/bin/kube-scheduler.sh << EOF
#!/bin/sh
./kube-scheduler \\
--leader-elect \\
--log-dir /data/logs/kubernetes/kube-scheduler \\
--master http://127.0.0.1:8080 \\
--v 2
EOF
2. Adjust the file permissions, create a directory
Kube-scheduler.sh adjust file permissions on mfyxw30.mfyxw.com host, create the directory / data / logs / kubernetes / kube-scheduler
[root@mfyxw30 ~]# chmod +x /opt/kubernetes/server/bin/kube-scheduler.sh
[root@mfyxw30 ~]# mkdir -p /data/logs/kubernetes/kube-scheduler
Kube-scheduler.sh adjust file permissions on mfyxw40.mfyxw.com host, create the directory / data / logs / kubernetes / kube-scheduler
[root@mfyxw40 ~]# chmod +x /opt/kubernetes/server/bin/kube-scheduler.sh
[root@mfyxw40 ~]# mkdir -p /data/logs/kubernetes/kube-scheduler
3. Create a supervisor profile for kube-scheduler
On mfyxw30.mfyxw.com host, create a profile for supervisor kube-scheduler
[root@mfyxw30 ~]# cat > /etc/supervisord.d/kube-scheduler.ini << EOF
[program:kube-scheduler-80-30]
command=/opt/kubernetes/server/bin/kube-scheduler.sh ; the program (relative uses PATH, can take args)
numprocs=1 ; number of processes copies to start (def 1)
directory=/opt/kubernetes/server/bin ; directory to cwd to before exec (def no cwd)
autostart=true ; start at supervisord start (default: true)
autorestart=true ; retstart at unexpected quit (default: true)
startsecs=22 ; number of secs prog must stay running (def. 1)
startretries=3 ; max # of serial start failures (default 3)
exitcodes=0,2 ; 'expected' exit codes for process (default 0,2)
stopsignal=QUIT ; signal used to kill process (default TERM)
stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10)
user=root ; setuid to this UNIX account to run the program
redirect_stderr=false ; redirect proc stderr to stdout (default false)
stdout_logfile=/data/logs/kubernetes/kube-scheduler/scheduler.stdout.log ; stdout log path, NONE for none; default AUTO
stdout_logfile_maxbytes=64MB ; max # logfile bytes b4 rotation (default 50MB)
stdout_logfile_backups=4 ; # of stdout logfile backups (default 10)
stdout_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0)
stdout_events_enabled=false ; emit events on stdout writes (default false)
stderr_logfile=/data/logs/kubernetes/kube-scheduler/scheduler.stderr.log ; stderr log path, NONE for none; default AUTO
stderr_logfile_maxbytes=64MB ; max # logfile bytes b4 rotation (default 50MB)
stderr_logfile_backups=4 ; # of stderr logfile backups (default 10)
stderr_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0)
stderr_events_enabled=false ; emit events on stderr writes (default false)
EOF
On mfyxw40.mfyxw.com host, create a profile for supervisor kube-scheduler
[root@mfyxw40 ~]# cat > /etc/supervisord.d/kube-scheduler.ini << EOF
[program:kube-scheduler-80-40]
command=/opt/kubernetes/server/bin/kube-scheduler.sh ; the program (relative uses PATH, can take args)
numprocs=1 ; number of processes copies to start (def 1)
directory=/opt/kubernetes/server/bin ; directory to cwd to before exec (def no cwd)
autostart=true ; start at supervisord start (default: true)
autorestart=true ; retstart at unexpected quit (default: true)
startsecs=22 ; number of secs prog must stay running (def. 1)
startretries=3 ; max # of serial start failures (default 3)
exitcodes=0,2 ; 'expected' exit codes for process (default 0,2)
stopsignal=QUIT ; signal used to kill process (default TERM)
stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10)
user=root ; setuid to this UNIX account to run the program
redirect_stderr=false ; redirect proc stderr to stdout (default false)
stdout_logfile=/data/logs/kubernetes/kube-scheduler/scheduler.stdout.log ; stdout log path, NONE for none; default AUTO
stdout_logfile_maxbytes=64MB ; max # logfile bytes b4 rotation (default 50MB)
stdout_logfile_backups=4 ; # of stdout logfile backups (default 10)
stdout_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0)
stdout_events_enabled=false ; emit events on stdout writes (default false)
stderr_logfile=/data/logs/kubernetes/kube-scheduler/scheduler.stderr.log ; stderr log path, NONE for none; default AUTO
stderr_logfile_maxbytes=64MB ; max # logfile bytes b4 rotation (default 50MB)
stderr_logfile_backups=4 ; # of stderr logfile backups (default 10)
stderr_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0)
stderr_events_enabled=false ; emit events on stderr writes (default false)
EOF
4. Start and inspection services
Start kube-scheduler service on the host and check mfyxw30.mfyxw.com
[root@mfyxw30 ~]# supervisorctl update
[root@mfyxw30 ~]# supervisorctl status
Start kube-scheduler service on the host and check mfyxw40.mfyxw.com
[root@mfyxw40 ~]# supervisorctl update
[root@mfyxw40 ~]# supervisorctl status
5. Create a link for kubectl and view cluster health
Create a link for kubectl on mfyxw30.mfyxw.com host and view cluster health
[root@mfyxw30 ~]# ln -s /opt/kubernetes/server/bin/kubectl /usr/bin/kubectl
[root@mfyxw30 ~]# kubectl get cs
Create a link for kubectl on mfyxw40.mfyxw.com host and view cluster health
[root@mfyxw40 ~]# ln -s /opt/kubernetes/server/bin/kubectl /usr/bin/kubectl
[root@mfyxw40 ~]# kubectl get cs