Kubernetes-----多master节点操作
文章目录
前言
一、多节点群集介绍
二、搭建master2节点
三、部署负载均衡
四、Pod创建
五、dashboard创建
前言
上次我们已经介绍了如何部署Kubernetes单节点的二进制部署,今天我们就来看看如何再增加一个master节点操作
一、多节点群集介绍
- 架构图,上次已经架构了单master节点,现在只需要在增加一个master节点即可,然后配置nginx
-
介绍
- 区别于单master的二进制集群,多master集群对master做了一个高可用,如果master1宕机,Load Balance就会将VIP转移到master2,这样就保证了master的可靠性。
- 多节点的核心点就是需要指向一个核心的地址,我们之前在做单节点的时候已经将vip地址定义过写入k8s-cert.sh脚本文件中(192.168.100.100),vip开启apiserver,多master开启端口接受node节点的apiserver请求,此时若有新的节点加入,不是直接找moster节点,而是直接找到vip进行spiserver的请求,然后vip再进行调度,分发到某一个master中进行执行,此时master收到请求之后就会给改node节点颁发证书
- 建立负载均衡缓解了nodes对master的请求压力,减轻了master资源使用
-
实验环境
节点 | IP地址 | 节点组件 |
---|---|---|
master1 | 192.168.100.10 | kube-apiserver、kube-controller-manager、kube-scheduler、etcd |
master2 | 192.168.100.40 | kube-apiserver、kube-controller-manager、kube-scheduler |
node1 | 192.168.100.20 | kubelet、kube-proxy、docker、flannel、etcd |
node2 | 192.168.100.30 | kubelet、kube-proxy、docker、flannel、etcd |
nginx1 | 192.168.100.50 | nginx、keepalived |
nginx2 | 192.168.100.60 | nginx、keepalived |
- 利用之前的单master环境
- 利用nginx做负载均衡,用KeepAlived做高可用。
注:1.9版本之后nginx具有了四层转发的功能(负载均衡),多了stream模块
- 利用keepalived给master提供的虚拟IP地址,给node访问连接apiserver。
二、搭建master2节点
- master1上面操作。复制kubernetes目录到master2目录下
[root@master ~]# scp -r /opt/kubernetes/ root@192.168.100.40:/opt
root@192.168.100.40's password:
- 复制master中的三个组件启动脚本到master2
[root@master ~]# scp /usr/lib/systemd/system/{kube-apiserver,kube-controller-manager,kube-scheduler}.service root@192.168.100.40:/usr/lib/systemd/system/
root@192.168.100.40's password:
- 修改启动文件配置ip,在master2中操作
[root@master2 ~]# cd /opt/kubernetes/cfg/
[root@master2 cfg]# vim kube-apiserver
KUBE_APISERVER_OPTS="--logtostderr=true \
--v=4 \
--etcd-servers=https://192.168.100.10:2379,https://192.168.100.20:2379,https://192.168.100.30:2379 \
--bind-address=192.168.100.40 \ ####修改成master2的地址
--secure-port=6443 \
--advertise-address=192.168.100.40 \ ####修改成master2的地址
--allow-privileged=true \
--service-cluster-ip-range=10.0.0.0/24 \
--enable-admission-plugins=NamespaceLifecycle,LimitRanger,ServiceAccount,ResourceQuota,NodeRestriction \
--authorization-mode=RBAC,Node \
--kubelet-https=true \
--enable-bootstrap-token-auth \
--token-auth-file=/opt/kubernetes/cfg/token.csv \
--service-node-port-range=30000-50000 \
--tls-cert-file=/opt/kubernetes/ssl/server.pem \
--tls-private-key-file=/opt/kubernetes/ssl/server-key.pem \
--client-ca-file=/opt/kubernetes/ssl/ca.pem \
--service-account-key-file=/opt/kubernetes/ssl/ca-key.pem \
--etcd-cafile=/opt/etcd/ssl/ca.pem \
--etcd-certfile=/opt/etcd/ssl/server.pem \
--etcd-keyfile=/opt/etcd/ssl/server-key.pem
- 将master1节点上的证书复制到master中
[root@master ~]# scp -r /opt/etcd/ root@192.168.100.40:/opt/
root@192.168.100.40's password:
- 启动master02中的三个组件服务
[root@master2 cfg]# systemctl start kube-apiserver.service
[root@master2 cfg]# systemctl start kube-controller-manager.service
[root@master2 cfg]# systemctl start kube-scheduler.service
- 增加环境变量,查看节点情况
[root@master2 cfg]# vim /etc/profile
####最后一行增加
export PATH=$PATH:/opt/kubernetes/bin/
[root@master2 cfg]# source /etc/profile ####刷新服务
[root@master2 cfg]