!!!接着之前两篇的部署!!!
目录
一.在所有node节点上部署coreDNS
1.在所有 node 节点上操作
2.在 master01 节点上操作
二.完成master02节点的初始化操作
三.在master01节点基础上,完成master02节点部署
1.在master01 节点操作
2.在master02 节点操作
四.部署nginx做负载均衡器
1.在01 节点上操作
2.在02 节点上操作
五.部署keepalived服务做k8s集群负载均衡器高可用
1.在01 节点上操作
2.在02 节点上操作
3.在01 节点上操作
4.在02 节点上操作
5.在01 节点上操作
六.修改node节点上的配置引导文件中的server对应的ip为VIP
1.node01 和node02 相同操作
2.去01 节点查看
七.所有的master节点的集群引导配置文件都指向本机apiserver的ip和端口
一.在所有node节点上部署coreDNS
1.在所有 node 节点上操作
#上传 coredns.tar 到 /opt 目录中
cd /opt
docker load -i coredns.tar
2.在 master01 节点上操作
#上传 coredns.yaml 文件到 /opt/k8s 目录中,部署 CoreDNS
cd /opt/k8s
kubectl apply -f coredns.yamlkubectl get pods -n kube-system
二.完成master02节点的初始化操作
参考文章【Kubernetes】二进制部署k8s集群(上)之搭建单机matser和etcd集群-CSDN博客
顺便回顾一下组件部署
升级一下组件部署
master节点 | ||
master01 | 192.168.80.101 | kube-apiserver kube-controller-manager kube-scheduler etcd |
master02 | 192.168.80.106 | |
node节点 | ||
node01 | 192.168.80.102 | kubelet kube-proxy docker (容器引擎) |
node02 | 192.168.80.103 | kubelet kube-proxy docker (容器引擎) |
etcd cluster集群 | ||
etcd节点1 | 192.168.80.101(mater01) | etcd |
etcd节点2 | 192.168.80.102 (node01) | etcd |
etcd节点3 | 192.168.80.103 (node02) | etcd |
负载均衡节点 | ||
nginx+keepalive01 | 192.168.80.104 (01) | master |
nginx+keepalive02 | 192.168.80.105 (02) | backup |
三.在master01节点基础上,完成master02节点部署
1.在master01 节点操作
//从 master01 节点上拷贝证书文件、各master组件的配置文件和服务管理文件到 master02 节点
scp -r etcd/ kubernetes/ master02:/optcd scp -r .kube/ master02:/rootcd /usr/lib/systemd/systemscp kube-* master02:`pwd`cd /usr/local/bin/scp kubectl master02:/usr/local/bin/
2.在master02 节点操作
修改IP
vim kube-apiserver
设置服务开机自启
systemctl enable --now kube-apiserver.service kube-controller-manager.service kube-scheduler.service
验证一下
systemctl status --now kube-apiserver.service kube-controller-manager.service kube-scheduler.service
查看node节点状态
ln -s /opt/kubernetes/bin/* /usr/local/bin/
kubectl get nodes
kubectl get nodes -o wide #-o=wide:输出额外信息;对于Pod,将输出Pod所在的Node名
//此时在master02节点查到的node节点状态仅是从etcd查询到的信息,而此时node节点实际上并未与master02节点建立通信连接,因此需要使用一个VIP把node节点与master节点都关联起来
四.部署nginx做负载均衡器
记得关闭防火墙
1.在01 节点上操作
192.168.80.104
//配置nginx的官方在线yum源,配置本地nginx的yum源
cat > /etc/yum.repos.d/nginx.repo << 'EOF'
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
EOFyum install nginx -y
修改nginx配置文件,配置四层反向代理负载均衡,指定k8s群集2台master的节点ip和6443端口
vim /etc/nginx/nginx.conf
events {use epollworker_connections 1024;
}#添加
stream {upstream k8s-apiserver {server 192.168.80.101:6443;server 192.168.80.106:6443;}server {listen 6443;proxy_pass k8s-apiserver;}
}
//检查配置文件语法
nginx -t //启动nginx服务,查看已监听6443端口
systemctl start nginx
systemctl enable nginx
netstat -natp | grep nginx
复制过去
scp nginx.conf 192.168.80.105:`pwd`
2.在02 节点上操作
192.168.80.105
其他同上
五.部署keepalived服务做k8s集群负载均衡器高可用
1.在01 节点上操作
yum install -y keepalived
创建nginx状态检查脚本
touch nginx_check.sh
chmod +x nginx_check.sh
#!/bin/bashif ! killall -0 nginx &> /dev/nullthensystemctl stop keepalived
fi
相关测试
修改keepalived配置文件vim keepalived.conf
复制到02主机上
scp keepalived.conf nginx_check.sh 192.168.80.105:`pwd`
2.在02 节点上操作
vim /etc/keepalived/keepalived.conf
3.在01 节点上操作
systemctl enable --now keepalived.serviceip a
关闭nginx服务
systemctl stop nginx
4.在02 节点上操作
systemctl enable --now keepalived.service
ip a
5.在01 节点上操作
systemctl start nginx keepalived.service
六.修改node节点上的配置引导文件中的server对应的ip为VIP
1.node01 和node02 相同操作
cd /opt/kubernetes/cfg/
[root@node01 cfg]# vim kubelet.kubeconfig
[root@node01 cfg]# vim kube-proxy.kubeconfig
[root@node01 cfg]# vim bootstrap.kubeconfig
systemctl restart kubelet.service kube-proxy.service
剩下两个也是一样修改成
192.168.80.100(vip地址)
2.去01 节点查看
netstat -natp | grep nginx
七.所有的master节点的集群引导配置文件都指向本机apiserver的ip和端口
在两个master节点修改
将原来的ip修改成vip地址
192.168.80.100
检察一下
kubectl get nodeskubectl get svckubectl get cs
[root@master02 ~]# systemctl restart kube-apiserver.service
[root@master02 ~]# systemctl restart kube-controller-manager.service
[root@master02 ~]# systemctl restart kube-scheduler.service
到此k8s集群已经部署完毕了
终于可以使用了!!!