一,分发kube-scheduler二进制文件
source /root/env.sh
for master_ip in ${MASTER_IPS[@]}
do
echo -e "\033[31m>>> ${master_ip} \033[0m"
scp /opt/kubernetes/package/kubernetes/server/bin/kube-scheduler root@${master_ip}:/opt/kubernetes/bin
done
#验证是否分发成功
source /root/env.sh
for master_ip in ${MASTER_IPS[@]}
do
echo -e "\033[31m>>> ${master_ip} \033[0m"
ssh root@${master_ip} "ls -ld /opt/kubernetes/bin/kube-scheduler"
done
二,生成kube-scheduler.service文件
cat > /usr/lib/systemd/system/kube-scheduler.service << EOF
[Unit]
Description=Kubernetes Scheduler
Documentation=https://github.com/GoogleCloudPlatform/kubernetes
[Service]
ExecStart=/opt/kubernetes/bin/kube-scheduler \\
--address=127.0.0.1 \\
--master=http://127.0.0.1:8080 \\
--leader-elect=true \\
--v=2 \\
--logtostderr=false \\
--log-dir=/opt/kubernetes/log
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
三,分发kube-scheduler.service服务的配置文件
source /root/env.sh
for master_ip in ${MASTER_IPS[@]}
do
echo -e "\033[31m>>> ${master_ip} \033[0m"
scp /usr/lib/systemd/system/kube-scheduler.service root@${master_ip}:/usr/lib/systemd/system
done
#验证是否分发成功
source /root/env.sh
for master_ip in ${MASTER_IPS[@]}
do
echo -e "\033[31m>>> ${master_ip} \033[0m"
ssh root@${master_ip} "ls -ld /usr/lib/systemd/system/kube-scheduler.service"
done
四,启动kube-scheduler服务
source /root/env.sh
for master_ip in ${MASTER_IPS[@]}
do
echo -e "\033[31m>>> ${master_ip} \033[0m"
ssh root@${master_ip} "systemctl daemon-reload && systemctl restart kube-scheduler && systemctl enable kube-scheduler"
done
五,验证kube-scheduler服务是否启动成功
source /root/env.sh
for master_ip in ${MASTER_IPS[@]}
do
echo -e "\033[31m>>> ${master_ip} \033[0m"
ssh root@${master_ip} "systemctl status kube-scheduler | grep Active"
done
确保状态为 active (running)
,否则查看日志,确认原因
journalctl -u kube-scheduler
六,验证集群状态
kubectl get cs
输出:
NAME STATUS MESSAGE ERROR
controller-manager Healthy ok
scheduler Healthy ok
etcd-2 Healthy {"health":"true"}
etcd-1 Healthy {"health":"true"}
etcd-0 Healthy {"health":"true"}
#查看当前的 leader
kubectl get endpoints kube-scheduler --namespace=kube-system -o yaml
#输出:
apiVersion: v1
kind: Endpoints
metadata:
annotations:
control-plane.alpha.kubernetes.io/leader: '{"holderIdentity":"k8s-master02_8c2953bd-8147-11e9-aaee-fa163ec2e868","leaseDurationSeconds":15,"acquireTime":"2019-05-28T12:53:11Z","renewTime":"2019-05-28T12:56:52Z","leaderTransitions":0
}' creationTimestamp: "2019-05-28T12:53:11Z"
name: kube-scheduler
namespace: kube-system
resourceVersion: "1909"
selfLink: /api/v1/namespaces/kube-system/endpoints/kube-scheduler
uid: 8cc2c98b-8147-11e9-bbf4-fa163ec2e868
#可见,当前的 leader 为k8s-master02节点
#测试 kube-scheduler 集群的高可用(可选)
#随便找一个或两个 master 节点,停掉 kube-scheduler 服务,看其它节点是否获取了 leader 权限