pcapi/script/export_images.sh
2025-07-16 14:46:24 +08:00

53 lines
1.8 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash/
# 设置 Kubernetes 版本和镜像仓库地址
K8S_VERSION="v1.28.2"
ALIYUN_REGISTRY="registry.aliyuncs.com/google_containers" # 阿里云 Kubernetes 镜像源
FLANNEL_REPO="ghcr.io/flannel-io" # Flannel 镜像仓库
NETWORK_PLUGIN="flannel"
NETWORK_PLUGIN_VERSION="v0.26.4"
NETWORK_PLUGIN_CNI="flannel-cni-plugin"
NETWORK_PLUGIN_CNI_VERSION="v1.6.2-flannel1"
# Kubernetes 控制平面镜像列表(阿里云镜像源)
KUBERNETES_IMAGES=(
"${ALIYUN_REGISTRY}/kube-apiserver:${K8S_VERSION}"
"${ALIYUN_REGISTRY}/kube-controller-manager:${K8S_VERSION}"
"${ALIYUN_REGISTRY}/kube-scheduler:${K8S_VERSION}"
"${ALIYUN_REGISTRY}/kube-proxy:${K8S_VERSION}"
"${ALIYUN_REGISTRY}/pause:3.9"
"${ALIYUN_REGISTRY}/etcd:3.5.9-0"
"${ALIYUN_REGISTRY}/coredns:v1.10.1"
)
# 网络插件镜像Flannel
NETWORK_IMAGES=(
"${FLANNEL_REPO}/${NETWORK_PLUGIN}:${NETWORK_PLUGIN_VERSION}"
)
NETWORK_CNI_IMAGES=(
"${FLANNEL_REPO}/${NETWORK_PLUGIN_CNI}:${NETWORK_PLUGIN_CNI_VERSION}"
)
# 合并所有镜像
ALL_IMAGES=("${KUBERNETES_IMAGES[@]}" "${NETWORK_IMAGES[@]}" "${NETWORK_CNI_IMAGES[@]}")
# 导出本地已存在的镜像(在源节点运行)
function export_images() {
echo "==> 正在导出本地已存在的 Kubernetes v${K8S_VERSION} 镜像..."
mkdir -p /opt/k8s-images
cd /opt/k8s-images || exit
for image in "${ALL_IMAGES[@]}"; do
echo "正在检查并导出镜像:${image}"
if ctr -n=k8s.io images list --quiet | grep -q "${image}"; then
output_file="${image//\//_}.tar"
ctr -n=k8s.io images export ${output_file} ${image} --platform=linux/amd64
echo "✅ 成功导出:${output_file}"
else
echo "⚠️ 镜像 ${image} 不存在于本地,跳过!"
fi
done
}
# 根据需要选择执行导出或导入
export_images # 在源节点运行,导出镜像