生产环境二进制k8s集群扩容node节点的实践
发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,K8s二进制生产环境扩容node节点由于项目微服务也是部署在k8s集群中去维护的,所以扩容node节点也是必要的联系,扩容node节点一定要保证你整个集群的容器环境的网络都是互通的,这也是很重要的一步
千家信息网最后更新 2024年09月22日生产环境二进制k8s集群扩容node节点的实践
K8s二进制生产环境扩容node节点
由于项目微服务也是部署在k8s集群中去维护的,所以扩容node节点也是必要的联系,扩容node节点一定要保证你整个集群的容器环境的网络都是互通的,这也是很重要的一步,这里我根据自己的经验去扩容,仅供参考首先我这里是安装的二进制方式去部署的k8s集群,进行扩容node的时候,也是非常方便的
扩容node节点分为两步,第一步先将我们旧的node节点上的配置先去拷贝到我们新的节点上,第二点就是将我们的容器网络环境打通这里我是直接扩容两个node节点。
第一步:
- 我们先去将我们的master节点上将我们的kubelet,kube-proxy的的bin下的目录文件拷贝到我们的新的节点上,以便于我们去扩容的时候去方便的将我们的服务使用systemd去启动管理起来。
创建文件目标所需node的节点的目录文件
[root@k8s-node3 ~]# mkdir -p /opt/kubernetes/{bin,ssl,cfg}[root@k8s-node4 ~]# mkdir -p /opt/kubernetes/{bin,ssl,cfg}[root@k8s-master1 ~]# scp /data/k8s/soft/kubernetes/server/bin/{kubelet,kube-proxy} root@192.168.30.25:/opt/kubernetes/bin/[root@k8s-master1 ~]# scp /data/k8s/soft/kubernetes/server/bin/{kubelet,kube-proxy} root@192.168.30.26:/opt/kubernetes/bin/
- 将我们的最初node1节点上的/opt/kubernetes下的组件进行拷贝到新的节点上
[root@k8s-node1 ~]# scp -r /opt/kubernetes/ root@192.168.30.25:/opt[root@k8s-node1 ~]# scp -r /opt/kubernetes/ root@192.168.30.26:/opt[root@k8s-node1 ~]# scp /usr/lib/systemd/system/{kubelet,kube-proxy}.service root@192.168.30.25:/usr/lib/systemd/system[root@k8s-node1 ~]# scp /usr/lib/systemd/system/{kubelet,kube-proxy}.service root@192.168.30.26:/usr/lib/systemd/system
去node3上操作
把拷贝过去的文件的证书删除,这是node1的证书,我们需要重新生成
[root@k8s-node3 ~]# cd /opt/kubernetes/ssl/[root@k8s-node3 ssl]# lskubelet-client-2019-11-07-14-37-36.pem kubelet-client-current.pem kubelet.crt kubelet.key[root@k8s-node3 ssl]# rm -rf *Node4上的也是一样删除[root@k8s-node4 ~]# cd /opt/kubernetes/ssl/[root@k8s-node4 ssl]# lskubelet-client-2019-11-07-14-37-36.pem kubelet-client-current.pem kubelet.crt kubelet.key[root@k8s-node4 ssl]# rm -rf *
修改ip ,找到配置文件把ip上改成第三个node,也就是本身的node
[root@k8s-node3 cfg]# grep 23 *kubelet:--hostname-override=192.168.30.23 \kubelet.config:address: 192.168.30.23kube-proxy:--hostname-override=192.168.30.23 \
这个和扩容第4个node节点都是一样的
扩容的时候记得这里是需要docker环境的,需要安装一下docker-ce
[root@k8s-node3 ~]# systemctl restart docker [root@k8s-node3 ~]# docker -vDocker version 19.03.4, build 9013bf583a[root@k8s-node4 ~]# systemctl restart docker [root@k8s-node4 ~]# docker -vDocker version 19.03.4, build 9013bf583a
另外就是需要etcd的启动文件。也拷贝过来,然后重启
[root@k8s-node1 ~]# scp -r /opt/etcd/ root@192.168.30.25:/opt [root@k8s-node1 ~]# scp -r /opt/etcd/ root@192.168.30.25:/opt
把这些都修改为25主机的IP之后启动
[root@k8s-node3cfg]# systemctl restart kubelet[root@k8s-node3 cfg]# systemctl restart kube-proxy.service[root@k8s-node3 cfg]# ps -ef |grep kuberoot 62846 1 0 16:49 ? 00:00:07 root 86738 1 6 21:27 ? 00:00:00 /opt/kubernetes/bin/kubelet --logtostderr=false --log-dir=/opt/kubernetes/log --v=4 --hostname-override=192.168.30.25 --kubeconfig=/opt/kubernetes/cfg/kubelet.kubeconfig --bootstrap-kubeconfig=/opt/kubernetes/cfg/bootstrap.kubeconfig --config=/opt/kubernetes/cfg/kubelet.config --cert-dir=/opt/kubernetes/ssl --pod-infra-container-image=registry.cn-hangzhou.aliyuncs.com/google-containers/pause-amd64:3.0root 86780 1 35 21:28 ? 00:00:02 /opt/kubernetes/bin/kube-proxy --logtostderr=true --v=4 --hostname-override=192.168.30.25 --cluster-cidr=10.0.0.0/24 --proxy-mode=ipvs --kubeconfig=/opt/kubernetes/cfg/kube-proxy.kubeconfigroot 86923 66523 0 21:28 pts/1 00:00:00 grep --color=auto kube
查看到master节点又有新的节点加入
[root@k8s-master1 ~]# kubectl get csrNAME AGE REQUESTOR CONDITIONnode-csr-eH_jPNUBXJF6sIii9SvNz9fW71543MLjPvOYWeDteqo 90s kubelet-bootstrap Pendingnode-csr-xLNLbvb3cibW-fyr_5Qyd3YuUYAX9DJgDwViu3AyXMk 31m kubelet-bootstrap Approved,Issued
颁发证书
[root@k8s-master1 ~]# kubectl certificate approve node-csr-eH_jPNUBXJF6sIii9SvNz9fW71543MLjPvOYWeDteqocertificatesigningrequest.certificates.k8s.io/node-csr-eH_jPNUBXJF6sIii9SvNz9fW71543MLjPvOYWeDteqo approved[root@k8s-master1 ~]# kubectl get csrNAME AGE REQUESTOR CONDITIONnode-csr-eH_jPNUBXJF6sIii9SvNz9fW71543MLjPvOYWeDteqo 3m18s kubelet-bootstrap Approved,Issuednode-csr-xLNLbvb3cibW-fyr_5Qyd3YuUYAX9DJgDwViu3AyXMk 33m kubelet-bootstrap Approved,Issued
查看node节点状态
[root@k8s-master1 ~]# kubectl get nodeNAME STATUS ROLES AGE VERSION192.168.30.23 Ready 25m v1.15.1192.168.30.24 Ready 51s v1.15.1192.168.30.25 Ready 25m v1.15.1192.168.30.26 Ready 51s v1.15.1
第二步:
打通容器之间的网络通信环境,这里我使用的是flannel进行管理
准备docker环境,这里我们之前是准备好的,但是我们还是需要给他们去分配一个子网,flanneld和docker分配要一个子网里面
给新加入的节点部署flannel,将部署的文件拷贝过去
[root@k8s-node1 ~]# scp /usr/lib/systemd/system/{flanneld,docker}.service root@192.168.30.25:/usr/lib/systemd/system [root@k8s-node1 ~]# scp /usr/lib/systemd/system/{flanneld,docker}.service root@192.168.30.26:/usr/lib/systemd/system
去node1上指定一个我们的node[root@k8s-node1 ~]# ./flannel.sh https://192.168.30.21:2379,https://192.168.30.22:2379,https://192.168.30.23:2379,https://192.168.30.24:2379,https://192.168.30.25:2379,https://192.168.30.26:2379
然后将我们的指定好的flanneld文件拷贝到新的节点上
[root@k8s-node1 ~]# cd /opt/kubernetes/cfg/[root@k8s-node1 cfg]# lsbootstrap.kubeconfig flanneld kubelet kubelet.config kubelet.kubeconfig kube-proxy kube-proxy.kubeconfig[root@k8s-node1 cfg]# scp flanneld root@192.168.30.25:/opt/kubernetes/cfg/ [root@k8s-node1 cfg]# scp flanneld root@192.168.30.26:/opt/kubernetes/cfg/
重启新的节点
查看网络是否与docker同一网段
[root@k8s-node3 ~]# ip a5: docker0: mtu 1500 qdisc noqueue state DOWN group default link/ether 02:42:97:f5:6c:cd brd ff:ff:ff:ff:ff:ff inet 172.17.25.1/24 brd 172.17.25.255 scope global docker0 valid_lft forever preferred_lft forever6: flannel.1: mtu 1450 qdisc noqueue state UNKNOWN group default link/ether b2:1a:97:5c:61:1f brd ff:ff:ff:ff:ff:ff inet 172.17.25.0/32 scope global flannel.1 valid_lft forever preferred_lft forever[root@k8s-node4 ~]# systemctl start flanneld[root@k8s-node4 ~]# systemctl restart docker[root@k8s-node4 ~]# ip a5: docker0: mtu 1500 qdisc noqueue state DOWN group default link/ether 02:42:3f:3c:a8:62 brd ff:ff:ff:ff:ff:ff inet 172.17.77.1/24 brd 172.17.77.255 scope global docker0 valid_lft forever preferred_lft forever6: flannel.1: mtu 1450 qdisc noqueue state UNKNOWN group default link/ether 96:1c:bc:ec:05:d6 brd ff:ff:ff:ff:ff:ff inet 172.17.77.0/32 scope global flannel.1
并测试与其他节点的容器是否都能共享各个节点的网络环境
[root@k8s-master1 ~]# kubectl exec -it nginx-deployment-7b8677db56-wkbzb /bin/shping 172.17.79.2 PING 172.17.79.2 (172.17.79.2): 56 data bytes64 bytes from 172.17.79.2: icmp_seq=0 ttl=62 time=0.703 ms64 bytes from 172.17.79.2: icmp_seq=1 ttl=62 time=0.459 ms^C--- 172.17.79.2 ping statistics ---2 packets transmitted, 2 packets received, 0% packet lossround-trip min/avg/max/stddev = 0.459/0.581/0.703/0.122 msping 172.17.40.3PING 172.17.40.3 (172.17.40.3): 56 data bytes64 bytes from 172.17.40.3: icmp_seq=0 ttl=62 time=0.543 ms64 bytes from 172.17.40.3: icmp_seq=1 ttl=62 time=0.404 ms^C--- 172.17.40.3 ping statistics ---2 packets transmitted, 2 packets received, 0% packet lossround-trip min/avg/max/stddev = 0.404/0.474/0.543/0.070 msping 172.17.6.3PING 172.17.6.3 (172.17.6.3): 56 data bytes64 bytes from 172.17.6.3: icmp_seq=0 ttl=62 time=0.385 ms64 bytes from 172.17.6.3: icmp_seq=1 ttl=62 time=0.323 ms^C--- 172.17.6.3 ping statistics ---2 packets transmitted, 2 packets received, 0% packet lossround-trip min/avg/max/stddev = 0.323/0.354/0.385/0.031 ms
测试成功都能连通
节点
文件
环境
拷贝
网络
容器
集群
时候
证书
二进制
就是
目录
子网
准备
分配
服务
测试
管理
配置
生产
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
莫格莱尼服务器登不上去
服务器安全防火墙
卡淘服务器维护
中国互联网科技学校
网络安全方面投入多少
连接池连不上数据库
收费站系统的网络安全包括
网络安全工作 简报
mysql关联数据库
游戏属于网络技术吗
恒生互联网科技指数百度百科
软件开发公司贴牌
全球软件开发大会票
如何取消网络安全管理
创业网络安全插画
一个服务器可以绑定几个域名
4台服务器
上海闪态网络技术有限公司客服
NBA2k22怎么选服务器
涉及危害网络安全的案例
南部战区网络安全
支持asp的web服务器
连接池连不上数据库
兰州网络安全就业方向
可以导出数据库的公众号表单
上海现代化软件开发怎么样
镇江多功能软件开发行业
壹飞网络技术有限公司
铁路部门国家网络安全演练
软件开发包括什么内容