在 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:
externalIP 改 NodePort 这步只对
start-with-kubesphere.sh适用——只有它末尾才有这两行kubectl patch(install/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.py的SERVICE_EXTERNAL_IP暴露入口(见install/kubernetes/start.sh:123-124,162),入口相关改config.py即可。- 注释掉
将配置文件
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 监控时才需要切换。监控相关详见《监控部署与看板》。
后续的节点扩缩容、升级、高可用与卸载见《节点扩缩容与高可用》。