1. 将master节点node组件配置拷贝到其他节点(21/22)
#拷贝kubernetes目录
scp -r /opt/kubernetes root@192.168.1.21:/opt/
scp -r /opt/kubernetes root@192.168.1.22:/opt/
#拷贝服务文件
scp -r /usr/lib/systemd/system/{kubelet,kube-proxy}.service root@192.168.1.21:/usr/lib/systemd/system
scp -r /usr/lib/systemd/system/{kubelet,kube-proxy}.service root@192.168.1.22:/usr/lib/systemd/system
#拷贝网络文件
scp -r /opt/cni/ root@192.168.1.21:/opt/
scp -r /opt/cni/ root@192.168.1.22:/opt/
2. node节点操作
#删除 kubelet 证书和 kubeconfig 文件
#这几个文件是证书申请审批后自动生成的,每个 Node 不同,必须删除重新生成。
rm -f /opt/kubernetes/cfg/kubelet.kubeconfig
rm -f /opt/kubernetes/ssl/kubelet*
#修改配置
#192.168.1.21
vi /opt/kubernetes/cfg/kubelet.conf
--hostname-override=192.168.1.21 #修改为当前主机ip
#192.168.1.22
vi /opt/kubernetes/cfg/kube-proxy-config.yml
hostnameOverride: 192.168.1.22 #修改为当前主机ip
#启动服务
systemctl daemon-reload
systemctl start kubelet
systemctl enable kubelet
systemctl start kube-proxy
systemctl enable kube-proxy
3. 在 Master 上批准新 Node kubelet 证书申请
1. 查看证书申请
kubectl get csr
返回
NAME AGE SIGNERNAME REQUESTOR CONDITION
node-csr--se0AYTJbjp9QamNmKGTG0wo3WhLEpQEh4H2H0VFZnA 38m kubernetes.io/kube-apiserver-client-kubelet kubelet-bootstrap Approved,Issued
#可以看到下面俩后面是pending的
node-csr-26oUoIGDYFzO2zwxbTiZzyh4dyP__0gIJJ76_-oDz4o 51s kubernetes.io/kube-apiserver-client-kubelet kubelet-bootstrap Pending
node-csr-FaleuFdqLTkMUx67iB_apwasENwjmTilU8UPkOKX4p4 54s kubernetes.io/kube-apiserver-client-kubelet kubelet-bootstrap Pending
2. 申请证书
kubectl certificate approve node-csr-26oUoIGDYFzO2zwxbTiZzyh4dyP__0gIJJ76_-oDz4o
kubectl certificate approve node-csr-FaleuFdqLTkMUx67iB_apwasENwjmTilU8UPkOKX4p4
4. 查看集群网络插件
[root@k8s-master01 k8s]# kubectl get pod -n kube-system
NAME READY STATUS RESTARTS AGE
kube-flannel-ds-fwr8p 1/1 Running 0 70s
kube-flannel-ds-n82ch 1/1 Running 0 71s
kube-flannel-ds-pb9wm 1/1 Running 0 17m
5. 查看集群节点
[root@k8s-master01 ~]# kubectl get node
NAME STATUS ROLES AGE VERSION
192.168.1.20 Ready <none> 6d2h v1.18.3
192.168.1.21 Ready <none> 6d1h v1.18.3
192.168.1.22 Ready <none> 6d1h v1.18.3
#参数说明
NAME #节点的名称,不如说是kubelet指定的名称,并非是node的ip地址
#对应节点上--(/opt/kubernetes/cfg/kubelet.conf)文件中 --hostname-override=192.168.1.20 参数
#可以设置为主机名,不过不方便识别
STATUS #节点的状态 主要有Ready(完成)/notReday(未完成)两种(其他的没见过)
#在部署网络插件后为ready状态
#如果没有部署网络插件则为notReday,(可以查看到node污点上有not-reday的污点表示集群未准备好)
#如果部署网络插件完成后ready,随后又notready,就检查node节点上的kubelet组件和docker是否正常
这里显示的是所有安装了kubelet、kube-proxy组件的节点 (node节点)
如果master节点不安装上面2个组件,同样也不会显示的
在有一些环境下,为了保证master节点的组件保证高性能的使用,是不作为工作节点存在的。
6. 查看组件状态
[root@k8s-master01 ~]# kubectl get cs
NAME STATUS MESSAGE ERROR
controller-manager Healthy ok
scheduler Healthy ok
etcd-0 Healthy {"health":"true"}
etcd-1 Healthy {"health":"true"}
etcd-2 Healthy {"health":"true"}