87 lines
2.8 KiB
Bash
Executable File
87 lines
2.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
||
set -euo pipefail
|
||
|
||
########################################
|
||
# Config (可用环境变量覆盖)
|
||
########################################
|
||
# 优先使用显式传入的 MASTER_IP,其次尝试 NodeIP,再自动探测本机 IP
|
||
MASTER_IP="${MASTER_IP:-${NodeIP:-$(hostname -I | awk '{print $1}')}}"
|
||
MASTER_USER="${MASTER_USER:-root}"
|
||
MASTER_SSH_KEY="${MASTER_SSH_KEY:-/root/.ssh/id_rsa}"
|
||
|
||
K8S_VERSION="${K8S_VERSION:-v1.29.9}" # 也可改成 v1.30.x
|
||
HELM_APP_VERSION="${HELM_APP_VERSION:-v3.16.2}"
|
||
CILIUM_CHART_VERSION="${CILIUM_CHART_VERSION:-1.18.1}"
|
||
CILIUM_VALUES_FILE="${CILIUM_VALUES_FILE:-cilium-values.yaml}"
|
||
|
||
IMAGES_TAR="${IMAGES_TAR:-images/sealos-images.tar}"
|
||
|
||
########################################
|
||
# 可选:安装 sealos 二进制(离线包)
|
||
########################################
|
||
# 自动探测架构并解压对应的 sealos 离线包
|
||
ARCH="$(uname -m)"
|
||
case "$ARCH" in
|
||
x86_64|amd64)
|
||
ARCH=amd64
|
||
;;
|
||
aarch64|arm64)
|
||
ARCH=arm64
|
||
;;
|
||
*)
|
||
echo "Unsupported architecture: $ARCH" >&2
|
||
exit 1
|
||
;;
|
||
esac
|
||
|
||
SEALOS_TARBALL="${SEALOS_TARBALL:-sealos_${SEALOS_VERSION:-5.0.1}_linux_${ARCH}.tar.gz}"
|
||
if [[ -f "$SEALOS_TARBALL" ]]; then
|
||
tar -xpvf "$SEALOS_TARBALL"
|
||
install -m 0755 sealos /usr/local/bin/sealos
|
||
install -m 0755 sealctl /usr/local/bin/ || true
|
||
install -m 0755 image-cri-shim /usr/local/bin/ || true
|
||
[[ -f nerdctl ]] && install -m 0755 nerdctl /usr/local/bin/ || true
|
||
fi
|
||
|
||
########################################
|
||
# 预加载镜像(可选)
|
||
########################################
|
||
if [[ -f "$IMAGES_TAR" ]]; then
|
||
if command -v sealos >/dev/null 2>&1; then
|
||
sealos load -i "$IMAGES_TAR" || true
|
||
elif command -v docker >/dev/null 2>&1; then
|
||
docker load -i "$IMAGES_TAR" || true
|
||
fi
|
||
fi
|
||
|
||
########################################
|
||
# 用 sealos 起集群(跳过 kube-proxy)
|
||
# 注意:不再引入 labring/cilium,避免版本混装
|
||
########################################
|
||
sealos run "labring/kubernetes:${K8S_VERSION}" \
|
||
"labring/helm:${HELM_APP_VERSION}" \
|
||
--masters "${MASTER_IP}" \
|
||
--user "${MASTER_USER}" \
|
||
--pk "${MASTER_SSH_KEY}" \
|
||
--env '{}' \
|
||
--cmd 'kubeadm init --skip-phases=addon/kube-proxy'
|
||
|
||
########################################
|
||
# 安装 / 升级 Cilium(Helm 统一到 1.18.x)
|
||
########################################
|
||
helm repo add cilium https://helm.cilium.io || true
|
||
helm repo update
|
||
helm upgrade --install cilium cilium/cilium \
|
||
-n kube-system \
|
||
--version "${CILIUM_CHART_VERSION}" \
|
||
-f "${CILIUM_VALUES_FILE}"
|
||
|
||
# 等待就绪(超时放宽以适配慢环境)
|
||
kubectl -n kube-system rollout status ds/cilium --timeout=10m || true
|
||
kubectl -n kube-system rollout status deploy/cilium-operator --timeout=5m || true
|
||
|
||
# 快速查看
|
||
cilium status || true
|
||
kubectl -n kube-system get pods -o wide
|
||
helm list -n kube-system
|