Add k3s cluster expansion documentation and scripts

- Complete expansion guide for 2/4/6 node scenarios
- Quick join scripts for worker and master nodes
- Health check and diagnostic scripts
- Quick reference card for common operations
This commit is contained in:
K3s Admin
2026-01-21 09:02:47 +00:00
parent b29c7aa904
commit a725f0f933
20 changed files with 2056 additions and 2 deletions

116
scripts/join-worker.sh Executable file
View File

@@ -0,0 +1,116 @@
#!/bin/bash
#
# K3s Worker 节点快速加入脚本
# 使用方法: sudo bash join-worker.sh
#
set -e
# 颜色输出
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
echo -e "${GREEN}================================${NC}"
echo -e "${GREEN}K3s Worker 节点加入脚本${NC}"
echo -e "${GREEN}================================${NC}"
echo ""
# 检查是否为 root
if [ "$EUID" -ne 0 ]; then
echo -e "${RED}错误: 请使用 sudo 运行此脚本${NC}"
exit 1
fi
# 配置信息
MASTER_IP="134.195.210.237"
NODE_TOKEN="K109d35a131f48b4d40b162398a828b766d60735f29dd7b4a37b030c1d1c0e26b23::server:72e04c3a9e3e762cbdefffc96f348a2d"
echo -e "${YELLOW}Master 节点 IP: ${MASTER_IP}${NC}"
echo ""
# 1. 检查网络连通性
echo -e "${YELLOW}[1/6] 检查网络连通性...${NC}"
if ping -c 2 ${MASTER_IP} > /dev/null 2>&1; then
echo -e "${GREEN}✓ 网络连通正常${NC}"
else
echo -e "${RED}✗ 无法连接到 Master 节点 ${MASTER_IP}${NC}"
exit 1
fi
# 2. 检查端口
echo -e "${YELLOW}[2/6] 检查 Master 节点端口 6443...${NC}"
if timeout 5 bash -c "cat < /dev/null > /dev/tcp/${MASTER_IP}/6443" 2>/dev/null; then
echo -e "${GREEN}✓ 端口 6443 可访问${NC}"
else
echo -e "${RED}✗ 端口 6443 无法访问,请检查防火墙${NC}"
exit 1
fi
# 3. 系统准备
echo -e "${YELLOW}[3/6] 准备系统环境...${NC}"
# 禁用 swap
swapoff -a
sed -i '/ swap / s/^/#/' /etc/fstab
echo -e "${GREEN}✓ 已禁用 swap${NC}"
# 安装依赖
apt-get update -qq
apt-get install -y curl open-iscsi nfs-common > /dev/null 2>&1
systemctl enable --now iscsid > /dev/null 2>&1
echo -e "${GREEN}✓ 已安装必要依赖${NC}"
# 4. 设置主机名
echo -e "${YELLOW}[4/6] 配置主机名...${NC}"
read -p "请输入此节点的主机名 (例如: worker-1): " HOSTNAME
if [ -n "$HOSTNAME" ]; then
hostnamectl set-hostname $HOSTNAME
echo -e "${GREEN}✓ 主机名已设置为: $HOSTNAME${NC}"
else
echo -e "${YELLOW}⚠ 跳过主机名设置${NC}"
fi
# 5. 安装 k3s agent
echo -e "${YELLOW}[5/6] 安装 k3s agent...${NC}"
echo -e "${YELLOW}这可能需要几分钟时间...${NC}"
curl -sfL https://get.k3s.io | K3S_URL=https://${MASTER_IP}:6443 \
K3S_TOKEN=${NODE_TOKEN} \
sh - > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo -e "${GREEN}✓ k3s agent 安装成功${NC}"
else
echo -e "${RED}✗ k3s agent 安装失败${NC}"
exit 1
fi
# 6. 验证安装
echo -e "${YELLOW}[6/6] 验证安装...${NC}"
sleep 10
if systemctl is-active --quiet k3s-agent; then
echo -e "${GREEN}✓ k3s-agent 服务运行正常${NC}"
else
echo -e "${RED}✗ k3s-agent 服务未运行${NC}"
echo -e "${YELLOW}查看日志: sudo journalctl -u k3s-agent -f${NC}"
exit 1
fi
echo ""
echo -e "${GREEN}================================${NC}"
echo -e "${GREEN}✓ Worker 节点加入成功!${NC}"
echo -e "${GREEN}================================${NC}"
echo ""
echo -e "${YELLOW}下一步操作:${NC}"
echo -e "1. 在 Master 节点执行以下命令查看节点状态:"
echo -e " ${GREEN}kubectl get nodes${NC}"
echo ""
echo -e "2. 为节点添加标签 (在 Master 节点执行):"
echo -e " ${GREEN}kubectl label nodes $HOSTNAME node-role.kubernetes.io/worker=worker${NC}"
echo ""
echo -e "3. 查看节点详细信息:"
echo -e " ${GREEN}kubectl describe node $HOSTNAME${NC}"
echo ""