init/init-k3s.sh
Martin 3db6138e91
All checks were successful
Build Docker Image / Explore-Gitea-Actions (push) Successful in 13s
[+] 更新 bash
2025-04-08 15:27:00 +08:00

107 lines
2.6 KiB
Bash

#!/bin/bash
curl -sSL https://git.martin98.com/MartinFarm/init/raw/branch/main/init-apt.sh | bash
current_ip=$(hostname -I | awk '{print $1}')
# 镜像加速
mkdir /etc/rancher/k3s -p
cat <<EOF > /etc/rancher/k3s/registries.yaml
mirrors:
docker.io:
registry.k8s.io:
endpoint:
- https://docker.martin98.com/v2/docker
https://registry.k8s.io:
https://k8s.gcr.io:
endpoint:
- https://docker.martin98.com/v2/k8s
https://gcr.io:
endpoint:
- https://docker.martin98.com/v2/gcr
https://ghcr.io:
endpoint:
- https://docker.martin98.com/v2/ghcr
https://quay.io:
endpoint:
- https://docker.martin98.com/v2/quay
EOF
# 安装 keepalived
apt install -y keepalived
# 检查是否为 Master-01
if [ "$current_ip" == "$master" ]; then
state=MASTER
priority=100
else
state=BACKUP
priority=100
fi
# 初始化 VIP
mkdir /etc/keepalived
cat <<EOF | sudo tee /etc/keepalived/keepalived.conf
vrrp_instance VI_1 {
state $state
interface eth0
virtual_router_id 51
priority $priority
advert_int 1
virtual_ipaddress {
$vip
}
}
EOF
sudo systemctl restart keepalived
systemctl status keepalived &
# 检查是否为 Master-01
if [ "$current_ip" == "$master" ]; then
# 开始部署
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -s - server \
--cluster-init \
--cluster-cidr $pod_subnet \
--service-cidr $service_subnet \
--node-external-ip=$vip_ip \
--tls-san=$vip_ip
TOKEN=$(cat /var/lib/rancher/k3s/server/node-token)
cat <<EOF
------------------------------------------------------------------------------------
初始化 master VIP[$state] $current_ip 成功
export pod_subnet=$pod_subnet
export service_subnet=$service_subnet
export vip_ip=$vip_ip
export vip=$vip_ip/16
export master=$master
curl -sSL https://git.martin98.com/MartinFarm/init/raw/branch/main/init-k3s.sh | bash
------------------------------------------------------------------------------------
EOF
else
cat <<EOF
------------------------------------------------------------------------------------
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | K3S_TOKEN=$TOKEN sh -s - server \\
--server https://$vip_ip:6443 \\
--tls-san=$vip_ip
------------------------------------------------------------------------------------
EOF
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | K3S_TOKEN=$TOKEN sh -s - server \
--server https://$vip_ip:6443 \
--tls-san=$vip_ip
fi
kubectl get nodes