在 KubeKey k8s 上部署 cube-studio

k8s 已就绪,要在主节点上跑部署脚本把 CubeStudio 装上去(含 NodePort 端口范围、containerd 适配、ipvs 入口、Prometheus 切换)时读这篇

02-部署安装 / 部署方式
CubeStudio部署start.shstart-with-kubesphere.shservice-node-port-rangenodeportnerdctlcontainerdipvsistio-ingressgatewayexternalIPsNodePortkubeconfigCONTAINER_CLIK8S_NETWORK_MODEPROMETHEUSkubesphere

在 KubeKey k8s 上部署 cube-studio

k8s 就绪后,在主节点上按以下步骤部署 CubeStudio。

1. 放大 NodePort 可用端口范围

服务 NodePort 可用端口范围要放大到 1~65535:

vim /etc/kubernetes/manifests/kube-apiserver.yaml

# 修改添加 apiserver 配置
spec:
  containers:
  - command:
    - kube-apiserver
    - --service-node-port-range=1-65535      # 添加这一行
    - --advertise-address=172.16.0.17

# 修改后通过 reboot 命令重启机器

2. containerd 运行时适配(nerdctl)

如果使用 containerd 运行时,需要把拉取脚本里的 docker 命令替换为 nerdctl

# 安装 containerd 下的 cli
export TARGETARCH=amd64
curl -L https://github.com/containerd/nerdctl/releases/download/v1.7.2/nerdctl-1.7.2-linux-${TARGETARCH}.tar.gz | tar xzv -C /usr/local/bin nerdctl

# 替换拉取脚本中的拉取命令
cd install/kubernetes/
sed -i 's/^docker/nerdctl/g' pull_images_mini.sh

说明:仓库提供的镜像拉取脚本是 pull_images_mini.sh(昇腾版为 pull_images_mini_ascend.sh),见 install/kubernetes/pull_images_mini.sh;并不存在历史文档里提到的 pull_images.sh

3. ipvs 模式的 istio 入口配置

对于 KubeKey 部署的 ipvs 模式 k8s:

  1. externalIP 改 NodePort 这步只对 start-with-kubesphere.sh 适用——只有它末尾才有这两行 kubectl patchinstall/kubernetes/start-with-kubesphere.sh:125 是 externalIPs 行,:129 是被注释的 NodePort 行)。改用 NodePort 方式时:

    • 注释掉 kubectl patch svc istio-ingressgateway -n istio-system -p '{"spec":{"externalIPs":["'"$1"'"]}}'
    • 取消注释 kubectl patch svc istio-ingressgateway -n istio-system -p '{"spec":{"type":"NodePort"}}'

    纯 k8s(用 start.sh)没有这两行 patch——它通过 gateway.yaml/virtual.yaml + config.pySERVICE_EXTERNAL_IP 暴露入口(见 install/kubernetes/start.sh:123-124,162),入口相关改 config.py 即可。

  2. 将配置文件 install/kubernetes/cube/overlays/config/config.py 中:

    • CONTAINER_CLI 的值改为 nerdctl(默认 docker,见 install/kubernetes/cube/overlays/config/config.py:1110
    • K8S_NETWORK_MODE 的值改为 ipvs(默认 iptables,见 install/kubernetes/cube/overlays/config/config.py:820

4. 复制 kubeconfig 并执行部署脚本

将 k8s 集群的 kubeconfig 文件(默认位置 ~/.kube/config)复制到 install/kubernetes/config 文件中,然后执行部署命令,其中 xx.xx.xx.xx 为机器内网 IP(不是外网 IP):

# 在 k8s worker 机器上执行

# 如果只部署了 k8s,没有部署 kubesphere:
sh start.sh xx.xx.xx.xx

# 如果部署了 k8s 同时部署了 kubesphere:
sh start-with-kubesphere.sh xx.xx.xx.xx

5. 部署后排查

参考《部署验证》《常见问题 FAQ》中的部署后排查环节。

6. 将 Prometheus 切换为 KubeSphere 的(可选)

如果用了 KubeSphere 自带的 Prometheus,可做如下切换:

  • Grafana 中数据源地址替换为 http://prometheus-k8s.kubesphere-monitoring-system.svc:9090
  • 配置文件 config.py 中,PROMETHEUS 修改为 prometheus-k8s.kubesphere-monitoring-system:9090

PROMETHEUS 默认值为 prometheus-k8s.monitoring:9090(见 install/kubernetes/cube/overlays/config/config.py:808),即指向平台自带 monitoring 命名空间下的 Prometheus。仅当改用 KubeSphere 监控时才需要切换。监控相关详见《监控部署与看板》


后续的节点扩缩容、升级、高可用与卸载见《节点扩缩容与高可用》

最后更新 2026-07-04完整文档以官方仓库为准:GitHub Wiki