遇一山,过一山,处处有风景;只要勇敢向前,一路尽是繁花盛开。 | (点击查看→)【测试干货】python/java自动化、持续集成、性能、测开、简历、笔试面试等

k8s节点简介、移除节点、新增节点;删除k8s

简介

Node是Pod真正运行的主机,可以是物理机也可以是虚拟机。

Node本质上不是Kubernetes来创建的, Kubernetes只是管理Node上的资源。

为了管理Pod,每个Node节点上至少需要运行container runtime(Docker)、kubelet和kube-proxy服务。

node基本操作:kubectl get nodes,查询所有node

 

从k8s移除node节点

获取节点列表:kubectl get node

 

确认需要移除的节点上面没有部署我们所需要的资源:kubectl get pod -A -owide |grep "k8s-node02"

 

设置不可调度(不分配新的资源到该节点上),也就是下线:kubectl cordon k8s-node02

(另外,上线<取消节点不可调度>:kubectl uncordon k8s-node02)

检查节点状态,kubectl get nodes

被标记为不可调度节点,节点状态变成:Ready,SchedulingDisabled

 

驱逐节点上的Pod(先驱赶掉上面的pod,daemonset不会被排出节点,其它的pod自动转移到其它节点;drain意为排出,此时卸载节点,但是没有删除;drain命令会自动把node设置为不可调度,所以可以省略上面执行的cordon命令)

驱逐前,在k8s-node02上

 

kubectl drain k8s-node02 --delete-local-data --force --ignore-daemonsets

 

 

驱逐后,自动转移到k8s-node01上了

 

节点上pod都被驱逐后,可以直接移除节点:kubectl delete node k8s-node02

这样就平滑移除了一个 k8s 节点

 

在被删除的node节点中清空集群数据信息【被删除节点执行】:

清空前:

 

kubeadm reset -f

 

清空后:

 

k8s新增node节点

新的node需要安装docker和k8s基础组件,参考:https://www.cnblogs.com/uncleyong/p/15499732.html

在master节点查看集群的token值,其中TTL值默认token的有效期为24小时,当过期之后,该token就不可用了。

kubeadm token list

 

上面结果为空,说明过期了,可以master上重新生产token并获取hash值:kubeadm token create --print-join-command

kubeadm join 192.168.117.171:6443 --token e3teen.vkisycda6z20glxw --discovery-token-ca-cert-hash sha256:196a26bd21bb2e277fae1cebd247723af113207fb5b11eab25b51d4041714249

 

生成永久Token:kubeadm token create --ttl 0 --print-join-command

 

kubeadm token list

 

获取Token:kubeadm token list | awk -F" " '{print $1}' |tail -n 1

 

将node节点重新添加到k8s集群中【被添加节点执行】

kubeadm join 192.168.117.171:6443 --token e3teen.vkisycda6z20glxw --discovery-token-ca-cert-hash sha256:196a26bd21bb2e277fae1cebd247723af113207fb5b11eab25b51d4041714249

 

master查看新节点的是否加入,如果新加节点是NotReady状态,重启kubelet后就变成Ready了(systemctl restart kubelet)

kubectl get nodes【master执行】

 

kubectl get pods -n kube-system -owide【master执行】

 

验证:调度到指定节点,nodeName: k8s-node02

 

curl 172.27.14.193

 

【单】reset后重新创建k8s集群

1、每个节点执行:kubeadm reset -f

 

如果遇到如下问题,需要做修复操作,参考:https://www.cnblogs.com/uncleyong/p/15766921.html

日志信息:journalctl -xeu kubelet

 

说明:下面的步骤可以参考https://www.cnblogs.com/uncleyong/p/15499732.html

2、master01节点拉取镜像:kubeadm config images pull --config /root/kubeadm-config.yaml

 

3、master01节点初始化集群:kubeadm init --config /root/kubeadm-config.yaml  --upload-certs

 

4、node节点执行上面红框中的命令

 

5、然后master节点可以查看集群节点:kubectl get node

 

6、安装calico

kubectl apply -f calico.yaml

 

7、安装metrics server:这样就可以使用kubectl top命令

 

8、去掉master污点

 

9、kube-proxy改为性能更好的ipvs

 

10、如果是自动化企业级持续集成,还需要完成:

更新k8s凭证并测试jenkins和k8s集群是否通,因为admin.conf的内容变了:https://www.cnblogs.com/uncleyong/p/16555667.html,bak版本(还包含master01打标签)

添加maven的cm:https://www.cnblogs.com/uncleyong/p/16717272.html#_label4

 

彻底删除k8s

卸载服务(清理控制节点,master主机上执行)

kubeadm reset -f ; ipvsadm --clear ; rm -rf ~/.kube
 
 
删除rpm包
下面两个查询一样,如果有正则,需要引号
rpm -qa |grep 'kube*'
rpm -qa |grep kube
rpm -qa|grep kube | xargs rpm --nodeps -e
 
 
删除容器及镜像
docker images -qa | xargs docker rmi -f
 
 
 
删除节点
在删除节点之前,请重置 kubeadm 安装的状态:kubeadm reset -f
删除节点:kubectl delete node <node name>
 
posted @ 2022-01-11 18:22  全栈测试笔记  阅读(3511)  评论(0编辑  收藏  举报
浏览器标题切换
浏览器标题切换end