上传文件至「/」

This commit is contained in:
2026-04-24 09:16:21 +00:00
commit 6002ec89e9
2 changed files with 392 additions and 0 deletions

40
bushu.conf Normal file
View File

@@ -0,0 +1,40 @@
# bushu.conf - 用户自定义配置
# -------------------
# cloud 网桥配置
# -------------------
CLOUD_IP="192.168.49.62/24"
CLOUD_SECOND_IP="10.250.0.5/24"
CLOUD_GATEWAY="192.168.49.254"
CLOUD_DNS="192.168.46.44"
CLOUD_IFACE="eth11"
CLOUD_MAC="02:42:c0:a8:31:57"
# MONITOR_VLAN_ID=4090
# -------------------
# yewu 网桥配置
# -------------------
YEWU_IP="192.168.35.52/24"
YEWU_GATEWAY="192.168.49.254"
YEWU_DNS="192.168.46.44"
YEWU_IFACE="yewu-peer"
YEWU_MAC="02:aa:bb:cc:dd:01"
# -------------------
# k3s 配置
# -------------------
MASTER_IP="10.250.0.1"
K3S_TOKEN="K10dd543834a13fa75e84dfa6ef4c8de13a947e70ec64e23f7bc109988c0c756ac2::server:515939179ba7c919527e6d2973f00832"
NODE_NAME="rk3588"
NODE_IP="10.250.0.5"
NODE_EXT_IP="10.250.0.5"
# -------------------
# 域名解析列表 (每行一个条目)
# 格式: "IP hostname1 hostname2 ..."
# -------------------
HOSTS_ENTRIES=(
"10.250.0.1 master1.example.com master1"
"10.250.0.2 master2.example.com master2"
"10.250.0.3 master3.example.com master3"
)

352
bushujb.sh Normal file
View File

@@ -0,0 +1,352 @@
#!/bin/bash
# ===================================================
# 脚本功能:
# 1. 配置 systemd-networkd 网络桥接与 VLAN
# 2. 配置 k3s agent 节点并启动服务
# 3. 可通过配置文件 bushu.conf 管理所有参数
# ===================================================
set -euo pipefail
# -----------------------
# 检查 root 权限
# -----------------------
if [[ $EUID -ne 0 ]]; then
echo "请使用 root 用户运行此脚本"
exit 1
fi
# -----------------------
# 引入配置文件
# -----------------------
CONFIG_FILE="./bushu.conf"
if [[ -f "$CONFIG_FILE" ]]; then
source "$CONFIG_FILE"
else
echo "配置文件 $CONFIG_FILE 不存在,请先创建!"
exit 1
fi
# -----------------------
# 网络配置部分
# -----------------------
echo "=== 开始 cloud 网桥配置 ==="
# 备份现有网络配置
mkdir -p /etc/systemd/network/backup
cp /etc/systemd/network/*.network /etc/systemd/network/backup/ 2>/dev/null || true
cp /etc/systemd/network/*.netdev /etc/systemd/network/backup/ 2>/dev/null || true
echo "网络配置备份已完成"
# 创建 cloud bridge
cat > /etc/systemd/network/00-cloud.netdev << EOF
[NetDev]
Name=cloud
Kind=bridge
MACAddress=$CLOUD_MAC
[Bridge]
VLANFiltering=yes
EOF
# 配置 cloud 网络
cat > /etc/systemd/network/00-cloud.network << EOF
[Match]
Name=cloud
[Network]
Address=$CLOUD_IP
Address=$CLOUD_SECOND_IP
Gateway=$CLOUD_GATEWAY
DNS=$CLOUD_DNS
ConfigureWithoutCarrier=yes
[Link]
RequiredForOnline=no-carrier
EOF
# cloud VLAN 子接口
# cat > /etc/systemd/network/10-monitor.netdev << EOF
# [NetDev]
# Name=cloud-monitor
# Kind=vlan
# [VLAN]
# Id=$MONITOR_VLAN_ID
# EOF
cat > /etc/systemd/network/00-$CLOUD_IFACE.network << EOF
[Match]
Name=$CLOUD_IFACE
[Network]
Bridge=cloud
DHCP=no
# VLAN=cloud-monitor
[BridgeVLAN]
VLAN=1-4094
[BridgeVLAN]
VLAN=1
PVID=1
EgressUntagged=1
EOF
# cat > /etc/systemd/network/10-monitor.network << EOF
# # monitor
# [Match]
# Name=cloud-monitor
# [Network]
# ConfigureWithoutCarrier=yes
# [Link]
# RequiredForOnline=no-carrier
# EOF
echo "cloud 网桥配置已完成"
# -----------------------
echo "=== 开始 yewu 网桥配置 ==="
# 创建 yewu bridge
cat > /etc/systemd/network/00-yewu.netdev << EOF
[NetDev]
Name=yewu
Kind=bridge
MACAddress=$YEWU_MAC
[Bridge]
VLANFiltering=yes
EOF
# 配置 yewu 网络
cat > /etc/systemd/network/00-yewu.network << EOF
[Match]
Name=yewu
[Network]
Address=$YEWU_IP
Gateway=$YEWU_GATEWAY
DNS=$YEWU_DNS
ConfigureWithoutCarrier=yes
[Link]
RequiredForOnline=no-carrier
EOF
# 用户网卡接入 yewu bridge
cat > /etc/systemd/network/00-$YEWU_IFACE.network << EOF
[Match]
Name=$YEWU_IFACE
[Network]
Bridge=yewu
DHCP=no
[BridgeVLAN]
VLAN=1-4094
[BridgeVLAN]
VLAN=1
PVID=1
EgressUntagged=1
EOF
echo "yewu 网桥配置已完成"
# 使用 networkctl reload 应用配置
echo "正在重新加载网络配置..."
networkctl reload
echo "网络配置已生效"
# -----------------------
# k3s 配置部分
# -----------------------
echo "=== k3s 安装配置 ==="
echo "=== 下载 K3s 二进制到 /usr/bin/ ==="
curl -L -o /usr/bin/k3s "https://file.piicloud.com/f/4108d2f3b3c047be85a8/?dl=1"
chmod +x /usr/bin/k3s
ls -lh /usr/bin/k3s
echo "=== 检查/创建 K3s agent 镜像目录 ==="
if [ ! -d "/var/lib/rancher/agent/images" ]; then
mkdir -p /var/lib/rancher/agent/images
echo "目录已创建"
else
echo "目录已存在,跳过创建"
fi
# 下载镜像
[ -f "/var/lib/rancher/agent/images/base.tar" ] || \
curl -L -o /var/lib/rancher/agent/images/base.tar "https://file.piicloud.com/f/11cce6158b9e4f59ba2c/?dl=1"
[ -f "/var/lib/rancher/agent/images/expend.tar" ] || \
curl -L -o /var/lib/rancher/agent/images/expend.tar "https://file.piicloud.com/f/414c2646352945b282c0/?dl=1"
chown root:root /var/lib/rancher/agent/images/*.tar
chmod 644 /var/lib/rancher/agent/images/*.tar
ls -lh /var/lib/rancher/agent/images/
# 创建 systemd 服务文件
cat > /etc/systemd/system/k3s.service << EOF
[Unit]
Description=Lightweight Kubernetes
Documentation=https://k3s.io
Wants=network-online.target
After=network-online.target
[Install]
WantedBy=multi-user.target
[Service]
Type=notify
EnvironmentFile=-/etc/default/%N
EnvironmentFile=-/etc/sysconfig/%N
EnvironmentFile=-/etc/systemd/system/k3s.service.env
KillMode=process
Delegate=yes
User=root
LimitNOFILE=1048576
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
TimeoutStartSec=0
Restart=always
RestartSec=5s
ExecStartPre=-/sbin/modprobe br_netfilter
ExecStartPre=-/sbin/modprobe overlay
ExecStart=/usr/bin/k3s server
EOF
# 创建 override 配置
mkdir -p /etc/systemd/system/k3s.service.d
cat > /etc/systemd/system/k3s.service.d/override.conf << EOF
[Service]
ExecStart=
ExecStart=/usr/bin/k3s agent \
--server https://$MASTER_IP:6443 \
--token $K3S_TOKEN \
--node-name $NODE_NAME \
--node-ip $NODE_IP \
--node-external-ip $NODE_EXT_IP \
--kubelet-arg max-pods=120
EOF
# 创建 registries.yaml
mkdir -p /etc/rancher/k3s/
cat > /etc/rancher/k3s/registries.yaml << EOF
configs:
harbor.tdology.com:
auth:
password: Y_TSq6qDJBZC}538
username: admin
mirrors:
docker.io:
endpoint:
- http://localhost:30500
- https://harbor.tdology.com
EOF
# -----------------------
# NVMe 初始化
# -----------------------
# -----------------------
# NVMe 挂载与绑定挂载
# -----------------------
# 确保主挂载点存在
mkdir -p /mnt/nvme
# 挂载 /mnt/nvme
if ! mountpoint -q /mnt/nvme; then
echo "挂载 /dev/nvme0n1p1 到 /mnt/nvme ..."
mount /dev/nvme0n1p1 /mnt/nvme
else
echo "/mnt/nvme 已经挂载,跳过挂载"
fi
# 确保绑定挂载目标目录存在
mkdir -p /var/lib/rancher
mkdir -p /var/lib/longhorn
# 挂载 /var/lib/rancher
if ! mountpoint -q /var/lib/rancher; then
echo "绑定挂载 /mnt/nvme/rancher 到 /var/lib/rancher ..."
mount --bind /mnt/nvme/rancher /var/lib/rancher
else
echo "/var/lib/rancher 已经挂载,跳过绑定挂载"
fi
# 挂载 /var/lib/longhorn
if ! mountpoint -q /var/lib/longhorn; then
echo "绑定挂载 /mnt/nvme/longhorn 到 /var/lib/longhorn ..."
mount --bind /mnt/nvme/longhorn /var/lib/longhorn
else
echo "/var/lib/longhorn 已经挂载,跳过绑定挂载"
fi
# 更新 /etc/fstab保证开机自动挂载
NVME_UUID=$(blkid -s UUID -o value /dev/nvme0n1p1)
grep -qE "[[:space:]]/mnt/nvme[[:space:]]" /etc/fstab || \
echo "UUID=${NVME_UUID} /mnt/nvme ext4 defaults,nofail 0 2" >> /etc/fstab
grep -qE "^/mnt/nvme/rancher[[:space:]]+/var/lib/rancher[[:space:]]+none[[:space:]]+bind" /etc/fstab || \
echo "/mnt/nvme/rancher /var/lib/rancher none bind 0 0" >> /etc/fstab
grep -qE "^/mnt/nvme/longhorn[[:space:]]+/var/lib/longhorn[[:space:]]+none[[:space:]]+bind" /etc/fstab || \
echo "/mnt/nvme/longhorn /var/lib/longhorn none bind 0 0" >> /etc/fstab
# 显示挂载状态
findmnt /mnt/nvme
findmnt /var/lib/rancher
findmnt /var/lib/longhorn
# -----------------------
# 时间同步
# -----------------------
echo "=== 安装并配置 chrony ==="
apt update
apt install -y chrony linuxptp
cp /etc/chrony/chrony.conf /etc/chrony/chrony.conf.bak 2>/dev/null
cat > /etc/chrony/chrony.conf << EOF
server 10.250.0.1 iburst prefer
server 10.250.0.2 iburst
server 10.250.0.3 iburst
driftfile /var/lib/chrony/chrony.drift
makestep 1.0 3
rtcsync
logdir /var/log/chrony
EOF
systemctl enable chrony
systemctl restart chrony
chronyc sources
chronyc tracking
echo "=== 启动 PTP 同步 ==="
ptp4l -i $CLOUD_IFACE -m &
phc2sys -s $CLOUD_IFACE -c CLOCK_REALTIME -m &
# -----------------------
# 域名解析
# -----------------------
echo "=== 配置 /etc/hosts ==="
for entry in "${HOSTS_ENTRIES[@]}"; do
grep -qF "$entry" /etc/hosts || echo "$entry" >> /etc/hosts
done
# -----------------------
# 启动 k3s 服务
# -----------------------
systemctl daemon-reload
systemctl enable k3s
systemctl start k3s
echo "k3s 配置完成"