1. 信创合规要求与麒麟 V10 SP1 选型依据
根据《金融科技发展规划(2022-2025 年)》和《信息技术应用创新标准体系建设指南》,涉及重要信息系统的基础设施必须采用经过信创认证的硬件与软件组合。银河麒麟 V10 SP1 是目前国内信创生态中兼容性最广泛的服务器操作系统,支持鲲鹏(ARM64)、海光(x86_64,AMD 兼容)、兆芯和海思四大芯片架构,并通过了公安部安全等级保护三级认证与国密算法支持认证。
本次落地的方案在 3 台物理服务器上构建信创 K3s 集群,节点配置为:华为 TaiShan 200 服务器(鲲鹏 920,96 核 ARM64,256GB DDR4 内存)。所有软件栈均采用开源原生方案,避免被单一厂商绑定,同时满足信创目录对「自主可控」的要求。
2. 基础环境配置:银河麒麟安装与网络优化
基础环境配置是信创部署中最容易出问题的环节。银河麒麟 V10 SP1 的默认网络栈、防火墙规则和内核参数与标准 Ubuntu/CentOS 存在显著差异,需要针对 K3s 运行环境进行专门调优。以下命令展示了完整的操作系统基础配置:
# 1. 基础网络配置(/etc/sysconfig/network-scripts/ifcfg-eth0)
# 麒麟 V10 使用传统 network-scripts 方式管理网络
cat > /etc/sysconfig/network-scripts/ifcfg-eth0 << 'EOF'
DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
IPADDR=172.16.1.10
NETMASK=255.255.255.0
GATEWAY=172.16.1.1
DNS1=114.114.114.114
DNS2=223.5.5.5
EOF
# 2. 内核参数优化(/etc/sysctl.d/99-k3s.conf)
cat > /etc/sysctl.d/99-k3s.conf << 'EOF'
# 开启 IP 转发(Kubernetes 容器网络所需)
net.ipv4.ip_forward = 1
net.ipv4.conf.all.forwarding = 1
net.ipv6.conf.all.forwarding = 1
# 关闭 swap(Kubernetes 强制要求)
vm.swappiness = 0
# conntrack 调优(防止大量连接触发 iptables 性能问题)
net.netfilter.nf_conntrack_max = 1048576
net.netfilter.nf_conntrack_tcp_timeout_established = 7200
net.core.somaxconn = 32768
# 关闭 IPv6(如生产环境不需要可直接关闭,避免干扰)
net.ipv6.conf.all.disable_ipv6 = 1
EOF
sysctl --system # 立即生效
# 3. 禁用 swap(信创环境通常内存充足,不依赖 swap)
swapoff -a
sed -i '/ swap / s/^/#/' /etc/fstab
# 4. 配置国内 YUM 镜像源(麒麟默认源较慢)
# 备份原源
cp /etc/yum.repos.d/kylin.repo /etc/yum.repos.d/kylin.repo.bak
# 5. 安装基础依赖
yum install -y curl wget vim git jq psmisc conntrack socat ipset iptables nfs-utils
# 6. 关闭 firewalld(生产环境建议改用 iptables 规则管理)
systemctl stop firewalld
systemctl disable firewalld
# 验证调整
sysctl net.ipv4.ip_forward # 应返回 1
free -h | grep Swap # 应为空(swap 已禁用)
/etc/sysconfig/network 中的 NETWORKING=yes 是否设置正确。另外,鲲鹏 ARM64 芯片需要安装专属的 kylin-utils-kp 包才能正常检测硬件信息。3. K3s 轻量 Kubernetes 集群搭建
在信创环境下,我们选择 K3s 而非完整版 Kubernetes,主要基于以下原因:K3s 是 CNCF Sandbox 项目,由 Rancher Labs 维护,体积小(< 100MB)、依赖少(仅需一个静态二进制文件),降低了信创环境的集成难度;K3s 内置 containerd 作为容器运行时,避开了 Docker 在 ARM64 上的兼容性问题;K3s 支持 etcd 嵌入模式或外部 MySQL 存储,方便对接国产数据库。
# 7. 安装 K3s 服务端(在 172.16.1.10 上执行)
curl -sfL https://get.k3s.io | INSTALL_K3S_SKIP_ENABLE=true sh -s - \
--write-kubeconfig-mode 644 \
--tls-san 172.16.1.10 \
--advertise-address 172.16.1.10 \
--node-ip 172.16.1.10 \
--cluster-cidr 10.244.0.0/16 \
--service-cidr 10.96.0.0/12 \
--cluster-dns 10.96.0.10 \
--flannel-backend host-gw \
--disable traefik \
--disable servicelb
# 8. 获取节点 Token(用于 Worker 节点加入)
cat /var/lib/rancher/k3s/server/node-token
# 9. 在 Worker 节点加入集群(在 172.16.1.11 和 172.16.1.12 上执行)
curl -sfL https://get.k3s.io | K3S_URL=https://172.16.1.10:6443 \
K3S_TOKEN="<上面获取的 token>" \
INSTALL_K3S_SKIP_ENABLE=true sh -s -
# 10. 验证集群状态(在 Master 节点)
export KUBECONFIG=/etc/rancher/k3s/k3s.yaml
kubectl get nodes -o wide
# 预期输出:3 个节点,状态均为 Ready,arch 为 arm64
# 11. 安装 Helm(Kubernetes 包管理器)
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
helm version --short # 应显示 v3.x.x
ImagePullBackOff 状态。4. 多架构镜像构建与私有镜像仓库
信创环境的镜像管理是核心难点。国产芯片(鲲鹏 ARM64、海光 x86_64)与 x86_64 的容器镜像格式不同,一个镜像无法跨架构运行。我们选择 Harbor 作为私有镜像仓库,并配置了镜像扫描和国密推送支持:
# 12. 部署 Harbor(使用 Chart 方式,避免 Docker Compose 在 ARM64 上的兼容性问题)
helm repo add harbor https://helm.goharbor.io
helm repo update
kubectl create namespace harbor-system
# 安装 Harbor(expose 类型为 NodePort,适合信创内网环境)
helm install harbor harbor/harbor \
-n harbor-system \
--set expose.type=nodePort \
--set expose.nodePort.ports.http=30002 \
--set expose.nodePort.ports.https=32443 \
--set expose.tls.enabled=false \
--set externalURL=http://harbor.kube-system:30002 \
--set persistence.enabled=true \
--set persistence.persistentVolumeSize=100Gi \
--set trivy.enabled=true \
--set trivy.ignoreUnfixed=true \
--set notary.enabled=false \
--set chartmuseum.enabled=false \
--timeout 10m
# 13. 等待 Harbor 启动
kubectl -n harbor-system rollout status deploy/harbor-core
kubectl -n harbor-system rollout status statefulset/harbor-trivy-adapter
# 14. 登录 Harbor(获取初始 admin 密码)
kubectl -n harbor-system get secret harbor-core-env -o jsonpath='{.data.HARBOR_ADMIN_PASSWORD}' | base64 -d
# 默认密码:Harbor12345(首次登录后请立即修改)
对于需要在信创环境下运行的 AI 模型推理服务(例如 DeepSeek V3 或 Qwen2 的本地部署版),镜像必须同时支持 amd64 和 arm64。以下命令展示了使用 buildx 构建多架构镜像的完整流程:
# 15. 安装 Docker Buildx(用于多架构构建)
docker run --privileged --rm tonistiigi/binfmt --install all
docker buildx create --name xbuild --use
# 16. 构建并推送支持双架构的 AI 推理镜像
cat > Dockerfile.ai-worker << 'EOF'
FROM python:3.11-slim-bookworm
RUN pip install --no-cache-dir vllm==0.6.3 fastapi uvicorn[standard] \
--extra-index-url https://download.pytorch.org/whl/cpu
WORKDIR /app
COPY inference_worker.py /app/
EXPOSE 8000
CMD ["python", "inference_worker.py"]
EOF
docker buildx build \
--platform linux/amd64,linux/arm64 \
-t harbor.kube-system:30002/ai/inference-worker:v1.0 \
--push \
-f Dockerfile.ai-worker .
5. 安全加固:镜像扫描、RBAC 与审计日志
信创环境对安全合规的要求高于普通互联网环境。我们采用「纵深防御」策略,结合 Harbor Trivy 镜像扫描、Kubernetes RBAC 权限控制和操作审计日志三层防御机制,确保工作负载的安全合规性。
# 17. Trivy 镜像扫描(推送前必须通过 0 高危漏洞)
trivy image --severity HIGH,CRITICAL \
--exit-code 1 \
harbor.kube-system:30002/ai/inference-worker:v1.0
# exit-code 0 = 通过,exit-code 1 = 存在高危漏洞,禁止上线
# 18. K3s RBAC 最小权限配置(AI 工作负载示例)
cat > rbac-ai-worker.yml << 'EOF'
apiVersion: v1
kind: ServiceAccount
metadata:
name: ai-worker-sa
namespace: ai
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: ai
name: ai-worker-role
rules:
- apiGroups: [""]
resources: ["configmaps"]
verbs: ["get", "list"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: ai-worker-binding
namespace: ai
subjects:
- kind: ServiceAccount
name: ai-worker-sa
namespace: ai
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: ai-worker-role
EOF
kubectl apply -f rbac-ai-worker.yml
# 19. 开启 K3s 审计日志(写入 Loki)
mkdir -p /var/lib/rancher/k3s/server/logs/audit
cat > /etc/rancher/k3s/config.d/audit.yaml << 'EOF'
audit-policy-file: /etc/rancher/k3s/audit-policy.yaml
audit-log-path: /var/lib/rancher/k3s/server/logs/audit/k8s-audit.log
audit-log-maxage: 30
audit-log-maxbackup: 10
audit-log-maxsize: 100
EOF
systemctl restart k3s
6. AI 工作负载落地:大模型推理服务部署
在完成信创 K3s 集群和安全加固后,我们将 DeepSeek V3 的推理服务部署到信创环境中。以下是完整的 Deployment 和 Service 配置:
# 20. 创建 AI 推理服务 Deployment
cat > ai-inference-deployment.yml << 'EOF'
apiVersion: apps/v1
kind: Deployment
metadata:
name: deepseek-v3-inference
namespace: ai
spec:
replicas: 1
selector:
matchLabels:
app: deepseek-v3
tier: inference
template:
metadata:
labels:
app: deepseek-v3
tier: inference
annotations:
prometheus.io/scrape: "true"
prometheus.io/port: "8000"
prometheus.io/path: "/metrics"
spec:
serviceAccountName: ai-worker-sa
nodeSelector:
kubernetes.io/arch: arm64
kubernetes.io/hostname: kunpeng-node-01
containers:
- name: vllm-worker
image: harbor.kube-system:30002/ai/inference-worker:v1.0
ports:
- containerPort: 8000
name: http-inference
- containerPort: 9090
name: http-metrics
resources:
requests:
cpu: "4"
memory: "32Gi"
nvidia.com/gpu: "8" # 替换为麒麟兼容的 GPU 资源名
limits:
cpu: "8"
memory: "64Gi"
nvidia.com/gpu: "8"
env:
- name: VLLM_ATTENTION_BACKEND
value: "FLASHINFER"
- name: MODEL_PATH
value: "/models/deepseek-v3-awq"
livenessProbe:
httpGet:
path: /health
port: 8000
initialDelaySeconds: 120
periodSeconds: 30
readinessProbe:
httpGet:
path: /ready
port: 8000
initialDelaySeconds: 60
periodSeconds: 10
volumeMounts:
- name: model-storage
mountPath: /models
readOnly: true
volumes:
- name: model-storage
persistentVolumeClaim:
claimName: deepseek-model-pvc
EOF
kubectl apply -f ai-inference-deployment.yml
# 21. 暴露服务(NodePort,适合信创内网环境)
kubectl expose deployment deepseek-v3-inference \
-n ai \
--type=NodePort \
--port=8000 \
--target-port=8000 \
--name=deepseek-v3-svc
# 22. 验证部署
kubectl -n ai get pods -l app=deepseek-v3
kubectl -n ai get svc deepseek-v3-svc
# 输出 Endpoints 后验证:
# curl http://:/v1/models
通过以上六个步骤,我们完成了从银河麒麟 V10 SP1 操作系统的基础环境优化,到 K3s 集群搭建、Harbor 私有镜像管理、安全加固,再到最终 AI 工作负载上线的完整信创云原生架构落地。这套方案完全基于开源原生组件,既满足信创合规要求,又避免了被传统商业软件锁定,是目前信创 AI 基础设施部署的最佳实践路径之一。