Skip to content

快速开始

本文介绍使用容器化方式(推荐)完成易盾私有化平台的完整部署。

前置检查

bash
# 1. 确认操作系统
cat /etc/os-release

# 2. 确认网卡名(重要!后续配置需要)
ip link show
# 或
nmcli device show | grep DEVICE

# 3. 确认磁盘空间
df -h

# 4. 确认节点 IP
ip addr | grep inet

第一步:修改配置文件

bash
cd /path/to/nisp-x86-260525
vim auto-docker.conf

必改项清单:

bash
# ✅ 1. 填写实际网卡名(最重要)
k3s_flannel_iface="eth0"    # 替换为 ip link 看到的实际网卡名

# ✅ 2. 填写 Master 节点 IP
k8s_master_ip=(
192.168.1.10               # 单机:只填一个 IP
# 192.168.1.11             # 高可用:填三个 IP
# 192.168.1.12
)

# ✅ 3. SSH 认证方式(建议用密钥)
ssh_auth_type=key
ssh_private_key_file=/root/.ssh/id_rsa

# ✅ 4. 数据存储路径(选择空间最大的分区)
docker_path="/data"
k3s_path="/data"

# ✅ 5. SQL 初始化路径(留空则仅部署基础设施,不部署业务应用)
sql_path=/data/sql-package.tar.gz

# ⚠️ 6. 检查网段冲突(与现有网络冲突时才需要修改)
k3s_flannel_network_prefix="10.233"
docker_bip="172.18.0.1"

可选项(按实际需要配置):

bash
# Worker 节点(可以留空)
k8s_worker_ip=(
# 192.168.1.13
)

# GPU 节点
nvidia_ip=(
# 192.168.1.14
)

# 手动指定中间件节点(留空则自动选择性能最优节点)
zookeeper_node=()
mysql_node=()
kafka_node=()

第二步:建立 SSH 免密

bash
# 为每个节点生成并分发密钥
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.1.10

# 测试连接
ssh root@192.168.1.10 'hostname'

第三步:准备镜像文件

确认以下目录(或文件)存在于部署机上:

../nisp/
├── image_k3s_amd64_<版本>/     # K3s 组件镜像 tar 包
├── image_infra_amd64_<版本>/   # 中间件镜像 tar 包
└── ops/
    └── ops.tar                  # ops 容器镜像

如果需要下载

在能访问内网的机器上执行:

bash
bash download-all.sh x86

然后将下载的文件传输到部署机。

第四步:一键部署

bash
cd /path/to/nisp-x86-260525
bash deploy.sh

部署过程会显示每个阶段的进度,全程约 30~60 分钟(取决于硬件性能)。

======================================================
  易盾私有化一键部署
  时间: 2025-05-25 10:00:00
  状态目录: /path/.deploy_state
======================================================

>>> [1/8] 检查并安装 Docker
Docker 已安装且运行正常,跳过安装

>>> [2/8] 加载 ops 镜像并启动 ops 容器
容器 yidun-ops 启动成功

>>> [3/8] 部署 nginx + registry
nginx 部署完成
registry 部署完成

>>> [4/8] 导入镜像到 registry
k3s 镜像导入完成,共 XX 个

>>> [5-8/8] 在容器内执行部署脚本
...

验证部署结果

bash
# 进入 ops 容器
docker exec -it yidun-ops bash

# 查看节点状态
kubectl get node -o wide

# 查看所有 Pod 状态
kubectl get pod -A -o wide

# 检查中间件
kubectl get pod -n yidun-infra
kubectl get pod -n tidb

# 检查业务应用
kubectl get pod -n yidun
kubectl get pod -n yidun-text

预期输出(所有 Pod 都应是 RunningCompleted):

NAME                STATUS   ROLES                  AGE
antispam01          Ready    control-plane,master   30m

断点续传

如果部署中途失败,修复问题后直接重新执行:

bash
bash deploy.sh
# 会自动跳过已完成的步骤

强制从某步重新执行:

bash
# 重新执行步骤 6(中间件部署)和步骤 7(数据初始化)
FORCE_STEP=6,7 bash autoinstall-docker.sh

重置所有步骤状态(从头开始):

bash
rm -f .deploy_state/step_*
rm -f .deploy_state/host_step_*

常见问题

K3s 安装后 kubectl 不可用

容器化方式下,kubectl 是通过 wrapper 脚本调用宿主机 k3s 二进制的。k3s 安装完成后自动创建,如果不可用:

bash
# 在 ops 容器内查找 k3s 二进制
ls /host/bin/k3s-v*

# 手动创建 wrapper
K3S_BIN=$(find /host/bin -maxdepth 1 -name "k3s-v*" -type f | head -n 1)
echo "#!/bin/bash
exec $K3S_BIN kubectl \"\$@\"" > /usr/local/bin/kubectl
chmod +x /usr/local/bin/kubectl

节点 NotReady

bash
# 检查节点日志
journalctl -u k3s -n 50

# 检查网络配置
kubectl get node -o yaml | grep flannel

镜像拉取失败

bash
# 检查 registry 状态
curl http://private-registry.yidun.internal/v2/_catalog

# 检查 /etc/hosts
grep "private-registry" /etc/hosts

内部使用文档,请勿外传