k8s-关机及启动脚本工具

k8s-关机及启动脚本工具

 

 

节点信息
  • k8s-master:192.168.91.166
  • k8s-node2:192.168.91.167
  • k8s-node3:192.168.91.168
  • 账号:root,密码:root

 

image

 

一、k8s关机

流程顺序:drain 排空 node2 → drain 排空 node3 → drain 排空 master → 查看节点确认调度关闭 → 关闭 node2、node3 → 最后关闭 master

1、安装 sshpass(centos)

yum install -y sshpass

2、k8s_cluster_shutdown.sh关机脚本

#!/bin/bash

# 节点配置
MASTER_IP="192.168.91.166"
NODE2_IP="192.168.91.167"
NODE3_IP="192.168.91.168"
USER="root"
PASS="root"

echo "===== 1. 排空 node2(k8s-node2) ====="
kubectl drain k8s-node2 --ignore-daemonsets --delete-emptydir-data --force

echo "===== 2. 排空 node3(k8s-node3) ====="
kubectl drain k8s-node3 --ignore-daemonsets --delete-emptydir-data --force

echo "===== 3. 排空 master(k8s-master) ====="
kubectl drain k8s-master --ignore-daemonsets --delete-emptydir-data --force

echo "===== 4. 校验节点状态,确认调度关闭 ====="
kubectl get node

echo "===== 5. 下发关机命令 node2、node3 ====="
# nohup后台执行关机,ssh连接断开不会打断本地脚本
sshpass -p "${PASS}" ssh -o StrictHostKeyChecking=no ${USER}@${NODE2_IP} "nohup shutdown -h now >/dev/null 2>&1 &"
sleep 2
sshpass -p "${PASS}" ssh -o StrictHostKeyChecking=no ${USER}@${NODE3_IP} "nohup shutdown -h now >/dev/null 2>&1 &"

echo "等待10秒,worker节点关机中..."
sleep 10

echo "===== 6. 下发master关机命令 ====="
sshpass -p "${PASS}" ssh -o StrictHostKeyChecking=no ${USER}@${MASTER_IP} "nohup shutdown -h now >/dev/null 2>&1 &"

echo "=== 全部节点关机命令已下发完成 ==="
echo "注意:master节点执行关机后本机shell会断开,属于正常现象"

 

3、执行脚本

####授权

chmod +x k8s_cluster_shutdown.sh

####执行脚本

./k8s_cluster_shutdown.sh

 

 

二、k8s_cluster_shutdown.sh启动脚本

流程顺序:机器层面先手动开机 master,等待 3‑5 分钟组件就绪开机成功,再开机 node2/node3;

然后在 master 执行脚本解除节点封锁(解除 k8s‑master 封锁 → 解除 k8s‑node2 封锁 → 解除 k8s‑node3 封锁),校验节点 Ready 状态

 

 1、k8s_cluster_shutdown.sh开机脚本

#!/bin/bash
set -e

echo "====================================="
echo "K8s集群开机恢复:执行uncordon解除节点封锁"
echo "前提:服务器硬件已经全部开机,master等待3‑5分钟组件就绪"
echo "====================================="

echo "1. 解除 k8s‑master 封锁"
kubectl uncordon k8s-master

echo "2. 解除 k8s‑node2 封锁"
kubectl uncordon k8s-node2

echo "3. 解除 k8s‑node3 封锁"
kubectl uncordon k8s-node3

echo ""
echo "4. 检查全部节点状态,确认回到Ready"
kubectl get node

echo ""
echo "如果节点不是Ready,请等待容器组件启动后再次执行 kubectl get node 查看"

 

 

2、执行脚本

####授权

chmod +x k8s_cluster_startup.sh 

在k8s-master节点执行

./k8s_cluster_startup.sh