COOKBOOK-Kubernetes二进制高可用部署-Kube-Controller-Manager和kube-Scheduler高可用

所有虚拟机移动可执行文件

1
2
3
4
5
6
7
# 移动可执行文件到bin目录
mv /usr/local/src/kubernetes/server/bin/kube-controller-manager /usr/local/bin/
mv /usr/local/src/kubernetes/server/bin/kube-scheduler /usr/local/bin/

# 配置可执行文件的属性
chmod 755 /usr/local/bin/kube-controller-manager
chmod 755 /usr/local/bin/kube-scheduler

所有虚拟机创建 kubeconfig 文件

供 kube-controller-manager、kube-scheduler、kubelet、kube-proxy 服务连接 kube-apiserver 使用。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
cat << EOF > /etc/kubernetes/admin.kubeconfig
apiVersion: v1
kind: Config
clusters:
- name: default
cluster:
server: https://192.168.56.109:6443
certificate-authority: /etc/kubernetes/pki/ca.crt
users:
- name: admin
user:
client-certificate: /etc/kubernetes/pki/apiserver_client.crt
client-key: /etc/kubernetes/pki/apiserver_client.key
contexts:
- name: default
context:
cluster: default
user: admin
current-context: default
EOF

所有虚拟机创建 kube-controller-manager systemd 服务

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 创建 kube-controller-manager systemd 服务文件
cat << EOF > /etc/kubernetes/kube-controller-manager.service
[Unit]
Description=Kubernetes Controller Manager
Documentation=https://github.com/kubernetes/kubernetes
After=network.target etcd.service kube-apiserver.service

[Service]
EnvironmentFile=/etc/kubernetes/kube-controller-manager.arg
ExecStart=/usr/local/bin/kube-controller-manager \$KUBE_CONTROLLER_MANAGER_ARGS
Restart=always

[Install]
WantedBy=multi-user.target
EOF

# 软链到系统服务目录
ln -s /etc/kubernetes/kube-controller-manager.service /usr/lib/systemd/system/kube-controller-manager.service

创建 kube-controller-manager 启动参数配置文件

其中 –cluster-cidr 为 Pod 的IP 范围,需要和 kubelet、calico(或flannel)配置一致

1
2
3
4
5
6
7
8
9
10
11
12
# 192.168.56.109执行
cat << EOF > /etc/kubernetes/kube-controller-manager.arg
KUBE_CONTROLLER_MANAGER_ARGS="--kubeconfig=/etc/kubernetes/admin.kubeconfig \
--leader-elect=true \
--bind-address=192.168.56.109 \
--secure-port=10257 \
--service-cluster-ip-range=169.169.0.0/16 \
--allocate-node-cidrs=true \
--cluster-cidr=20.20.0.0/16 \
--root-ca-file=/etc/kubernetes/pki/ca.crt \
--service-account-private-key-file=/etc/kubernetes/pki/apiserver_server.key"
EOF
1
2
3
4
5
6
7
8
9
10
11
12
# 192.168.56.110执行
cat << EOF > /etc/kubernetes/kube-controller-manager.arg
KUBE_CONTROLLER_MANAGER_ARGS="--kubeconfig=/etc/kubernetes/admin.kubeconfig \
--leader-elect=true \
--bind-address=192.168.56.110 \
--secure-port=10257 \
--service-cluster-ip-range=169.169.0.0/16 \
--allocate-node-cidrs=true \
--cluster-cidr=20.20.0.0/16 \
--root-ca-file=/etc/kubernetes/pki/ca.crt \
--service-account-private-key-file=/etc/kubernetes/pki/apiserver_server.key"
EOF
1
2
3
4
5
6
7
8
9
10
11
12
# 192.168.56.111执行
cat << EOF > /etc/kubernetes/kube-controller-manager.arg
KUBE_CONTROLLER_MANAGER_ARGS="--kubeconfig=/etc/kubernetes/admin.kubeconfig \
--leader-elect=true \
--bind-address=192.168.56.111 \
--secure-port=10257 \
--service-cluster-ip-range=169.169.0.0/16 \
--allocate-node-cidrs=true \
--cluster-cidr=20.20.0.0/16 \
--root-ca-file=/etc/kubernetes/pki/ca.crt \
--service-account-private-key-file=/etc/kubernetes/pki/apiserver_server.key"
EOF

所有虚拟机启动 kube-controller-manager 服务

1
systemctl start kube-controller-manager && systemctl enable kube-controller-manager

所有虚拟机创建 kube-scheduler systemd 服务

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 创建 kube-scheduler systemd 服务文件
cat << EOF > /etc/kubernetes/kube-scheduler.service
[Unit]
Description=Kubernetes Scheduler
Documentation=https://github.com/kubernetes/kubernetes
After=network.target etcd.service kube-apiserver.service

[Service]
EnvironmentFile=/etc/kubernetes/kube-scheduler.arg
ExecStart=/usr/local/bin/kube-scheduler \$KUBE_SCHEDULER_ARGS
Restart=always

[Install]
WantedBy=multi-user.target
EOF

# 软链到系统服务目录
ln -s /etc/kubernetes/kube-scheduler.service /usr/lib/systemd/system/kube-scheduler.service

创建 kube-scheduler 启动参数配置文件

1
2
3
4
5
6
7
# 192.168.56.109执行
cat << EOF > /etc/kubernetes/kube-scheduler.arg
KUBE_SCHEDULER_ARGS="--kubeconfig=/etc/kubernetes/admin.kubeconfig \
--leader-elect=true \
--bind-address=192.168.56.109 \
--secure-port=10259"
EOF
1
2
3
4
5
6
7
# 192.168.56.110执行
cat << EOF > /etc/kubernetes/kube-scheduler.arg
KUBE_SCHEDULER_ARGS="--kubeconfig=/etc/kubernetes/admin.kubeconfig \
--leader-elect=true \
--bind-address=192.168.56.110 \
--secure-port=10259"
EOF
1
2
3
4
5
6
7
# 192.168.56.111执行
cat << EOF > /etc/kubernetes/kube-scheduler.arg
KUBE_SCHEDULER_ARGS="--kubeconfig=/etc/kubernetes/admin.kubeconfig \
--leader-elect=true \
--bind-address=192.168.56.111 \
--secure-port=10259"
EOF

所有虚拟机启动 kube-scheduler 服务

1
systemctl start kube-scheduler && systemctl enable kube-scheduler

(•̀ᴗ•́)و ̑̑

Share