环境
k8s-master1 | 10.0.19.127 | kube-apiserver,kube-controller-manager,kube-scheduler,etcd |
---|---|---|
k8s-node1 | 10.0.19.129 | kube-proxy,kubelet,docker,etcd |
k8s-node2 | 10.0.19.130 | kube-proxy,kubelet,docker,etcd |
k8s-node3(扩容) | 10.0.19.128 | kube-proxy,kubelet,docker |
前置条件做好初始化,例如系统参数优化,时间同步,host主机解析,安装docker这四步,这里不详细说了
docker安装文档:https://blog.csdn.net/a13568hki/article/details/107068006
一、安装node3
为了简单,我们先去从node1上复制配置好的k8s组件(包含证书,配置,启动文件)到node3上
[root@k8s-node1 ~]# scp -r /opt/kubernetes root@k8s-node3:/opt/
[root@k8s-node1 system]# scp kube-proxy.service kubelet.service root@k8s-node3:/usr/lib/systemd/system
2、去node3上操作,修改配置文件ip或主机名 ,我配置里用的都是主机名,找到配置文件把主机名上改成第三个node,也就是本身的主机名
[root@k8s-node3 cfg]# cd /opt/kubernetes/cfg/
[root@k8s-node3 cfg]# grep 129 * #这里查看不到IP,因为我用的是主机名
[root@k8s-node3 cfg]# grep k8s-node1 *
kubelet.conf:--hostname-override=k8s-node1 \
kube-proxy-config.yml:hostnameOverride: k8s-node1
[root@k8s-node3 cfg]# sed -i 's/k8s-node1/k8s-node3/g' *
[root@k8s-node3 cfg]# grep k8s-node1 *
[root@k8s-node3 cfg]# grep k8s-node3 *
kubelet.conf:--hostname-override=k8s-node3 \
kube-proxy-config.yml:hostnameOverride: k8s-node3
二、生成node3的证书
去node3上操作,把拷贝过去的文件的证书删除,这是node1的证书,我们需要重新生成
查看证书
[root@k8s-node3 ~]# ls /opt/kubernetes/ssl/
ca.pem kubelet-client-2022-04-06-18-03-13.pem kubelet-client-current.pem kubelet.crt kubelet.key kube-proxy-key.pem kube-proxy.pem
删除kubelet的证书
kube-proxy组件所需的证书不需要删除,因为生成的时候里面没用到IP地址只是简单的公密钥,每个节点都一样,删除kubelet使用基于bootstrap自动颁发证书,因为每个kubelet用到的证书都是独一无二的,因为它要绑定各自的IP地址,于是需要给每个kubelet单独制作证书,如果业务量很大的情况下,node节点会很多,这样一来kubelet的数量也随之增加,而且还会经常变动(增减Node)kubelet的证书制作就成为一件很麻烦的事情。使用TLS bootstrapping就可以省事儿很多。
[root@k8s-node3 ~]# rm -rf /opt/kubernetes/ssl/kubelet*
生成证书
重启kubelet;
[root@k8s-node3 cfg]# systemctl daemon-reload
[root@k8s-node3 cfg]# systemctl restart kubelet
[root@k8s-node3 cfg]# systemctl restart kube-proxy
此时在master节点执行:kubectl get csr 可以看到node01节点重新申请加入集群;
[root@k8s-master1 k8s]# kubectl get csr
NAME AGE REQUESTOR CONDITION
node-csr-TmUHds0Fv-qzUM1qXFgAYGMdsXAnrjdfDgBOkCm5I34 2m46s kubelet-bootstrap Pending
[root@k8s-master1 k8s]# kubectl certificate approve node-csr-TmUHds0Fv-qzUM1qXFgAYGMdsXAnrjdfDgBOkCm5I34
三、安装网络插件
1、直接拷贝node1的CNI的软件包
[root@k8s-node1 opt]# scp -r /opt/cni k8s-node3:/opt/
3)在master上执行yaml脚本,实现在worker节点安装启动网络插件功能
网络插件所需的镜像地址链接(无网络可用,镜像每台worker都要有,或者做出镜像仓库,编写yaml文件直接下载):
https://pan.baidu.com/s/1S4ux43CrHVcln5yFZ9ewEQ
提取码:vq7b
yaml文件地址链接:https://pan.baidu.com/s/1aU_Cra-8Ycwcy9OgatexNw
提取码:sy8e
[root@k8s-master1 YAML]# kubectl apply -f kube-flannel.yaml
注意:
这个操作受限于网络,可能会需要5~10分钟才能执行成功
如果网上太慢,会导致超时
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/75680.html