上传文件至「/」
This commit is contained in:
40
bushu.conf
Normal file
40
bushu.conf
Normal 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
352
bushujb.sh
Normal 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 配置完成"
|
||||||
Reference in New Issue
Block a user