资讯动态

SkyPilot API Server 管理员部署指南:基于 Helm 的 Kubernetes 生产级部署实践

发布时间:2026/9/15 18:05:38 来源:尧图企业网站定制
SkyPilot API Server 管理员部署指南基于 Helm 的 Kubernetes 生产级部署实践【免费下载链接】skypilotThe AI Compute Platform for frontier teams. SkyPilot turns fragmented AI compute into one AI supercomputer, so frontier AI teams build custom intelligence faster.项目地址: https://gitcode.com/GitHub_Trending/sk/skypilotSkyPilot API Server 是 SkyPilot 的集中式控制平面让团队通过单一端点统一运行和管理所有 AI 工作负载与 GPU。本指南以 api-server-admin-deploy.rst 为骨架完整覆盖从 Helm Chart 部署、接入 URL 获取、多云凭据配置到高可用、监控与升级的运维全流程并结合 charts/skypilot/values.yaml 与 sky/server/server.py 等源码给出底层实现依据。读完本文你将能够独立完成一次生产级 SkyPilot API Server 的部署、加固与日常运维。一、部署方式选型为什么首选 HelmSkyPilot API Server 被打包为 Helm Chart一次部署即会同时拉起一个 ingress-nginx 控制器和 API Server 本体。官方推荐在 Kubernetes 集群上通过 Helm 部署因为这种方式提供最佳可靠性并解锁 OAuth2 认证、Metrics 监控等高阶能力。除 Helm 外官方还提供两种用于特殊场景的替代方案云 VM 部署适用于没有 Kubernetes 集群且不需要高阶功能的场景见本文备选方案章节单机 Docker 多用户共享适用于不希望暴露到公网、只想在单台机器上多用户共享 API Server 的场景如共享跳板机见 api-server-in-docker.rst。前置条件依赖说明Kubernetes 集群需要支持 LoadBalancer 或 NodePort 类型的 ServiceHelm用于安装和管理 Chart参见 Helm 官方安装文档kubectl用于操作集群与验证部署状态如果还没有 Kubernetes 集群可参考仓库中的 Kubernetes 部署指南charts/skypilot/README.md、charts/skypilot/developer.md自行搭建。二、Step 1部署 API Server Helm Chart2.1 安装命令与变量约定# 添加并更新 helm 仓库 helm repo add skypilot https://helm.skypilot.co helm repo update # 以下变量贯穿整个指南 # NAMESPACE 是 API Server 的部署命名空间 NAMESPACEskypilot # RELEASE_NAME 是 helm release 的名称在命名空间内必须唯一 RELEASE_NAMEskypilot # 配置基础的 HTTP 用户名/密码认证也可改用 OAuth2 proxy WEB_USERNAMEskypilot WEB_PASSWORDyourpassword AUTH_STRING$(htpasswd -nb $WEB_USERNAME $WEB_PASSWORD) # 部署 API Server helm upgrade --install $RELEASE_NAME skypilot/skypilot-nightly --devel \ --namespace $NAMESPACE \ --create-namespace \ --set ingress.authCredentials$AUTH_STRING2.2 关键参数拆解参数含义upgrade --install若 API Server 已存在则升级不存在则安装--devel使用最新开发版 Helm Chart如需固定版本追加--version如--version 0.1.0--namespace $NAMESPACE指定部署命名空间--create-namespace命名空间不存在时自动创建--set ingress.authCredentials$AUTH_STRING为 API Server 配置基础认证凭据注意上述命令默认会安装 ingress-nginx 控制器这可能与其他安装产生冲突。多套 API Server 部署请参见复用 ingress 控制器章节使用其他 ingress 控制器请参见使用自定义 ingress 控制器章节。默认部署的 API Server 会使用宿主 Kubernetes 集群来启动任务kubernetesCredentials.useApiServerClustertrue相关云与集群凭据的配置见下文可选配置云账号。2.3 验证部署状态kubectl get pods --namespace $NAMESPACE -l app${RELEASE_NAME}-api --watch正常情况下 pod 会从初始化逐步变为Running且READY为1/1。若异常可参考 api-server-troubleshooting.rst 排查例如用kubectl describe pod查看FailedScheduling原因。提示上述方式使用的是 Nginx 提供的基础认证。如需高级 OAuth2 认证见可选配置 OAuth。从源码看/api/health探针在 sky/server/server.py 的BasicAuthMiddleware中被放行允许未认证请求这保证了探活与健康检查不会因认证而误报探针配置liveness/readiness路径/api/health、端口 46580定义于 charts/skypilot/templates/api-deployment.yaml。三、Step 2获取 API Server URLChart 默认使用 nginx ingress 暴露 API Server并通过 LoadBalancer Service 接入公网。不支持 LoadBalancer 的集群可使用 NodePort 方案。3.1 LoadBalancer 方式默认$ HOST$(kubectl get svc ${RELEASE_NAME}-ingress-nginx-controller --namespace $NAMESPACE -o jsonpath{.status.loadBalancer.ingress[0].ip}) $ ENDPOINThttp://${WEB_USERNAME}:${WEB_PASSWORD}${HOST} $ echo $ENDPOINT http://skypilot:yourpassword1.1.1.1如果输出中 IP 为空说明集群不支持 LoadBalancer请改用 NodePort 方案。对于 LoadBalancer Service 的精细化控制可参考 ingress-nginx 的 helm values所有值需加ingress-nginx.前缀因为 ingress-nginx 以子 chart 形式安装。默认的 LoadBalancer 注解在 charts/skypilot/values.yaml 中可见AWS 使用 NLB、GKE 启用 L4 RBS、Azure 使用 TCP 健康检查协议。3.2 NodePort 方式在节点上选择两个未占用且放行入站流量的端口示例使用 30050 和 30051helm upgrade --namespace $NAMESPACE $RELEASE_NAME skypilot/skypilot-nightly --devel \ --reuse-values \ --set ingress-nginx.controller.service.typeNodePort \ --set ingress-nginx.controller.service.nodePorts.http30050 \ --set ingress-nginx.controller.service.nodePorts.https30051获取控制器 URL$ NODE_PORT$(kubectl get svc ${RELEASE_NAME}-ingress-controller-np --namespace $NAMESPACE -o jsonpath{.spec.ports[?(.namehttp)].nodePort}) $ NODE_IP$(kubectl get nodes -o jsonpath{ $.items[0].status.addresses[?(.typeExternalIP)].address }) $ HOST${NODE_IP}:${NODE_PORT} $ ENDPOINThttp://${WEB_USERNAME}:${WEB_PASSWORD}${HOST} $ echo $ENDPOINT http://skypilot:yourpassword1.1.1.1:30050可省略nodePorts.http/https以使用 NodePort 范围内的随机端口默认 30000-32767但需确保这些端口在节点上开放。为避免云厂商频繁更换节点 IP可为节点绑定静态 IP并将该 IP 用作上述NODE_IP。四、Step 3测试 API Server$ curl ${ENDPOINT}/api/health {status:healthy,api_version:1,commit:ba7542c6dcd08484d83145d3e63ec9966d5909f3-dirty,version:1.0.0-dev0}返回healthy即部署成功接下来可用sky api login连接 API Server 并开始使用。健康检查端点的实现在 sky/server/server.py 中返回内容包含状态、API 版本、commit 与 SkyPilot 版本号。五、可选配置云账号API Server 的所有云凭据都存储在 Kubernetes Secrets 中。若在部署完成后再配置凭据会自动触发 API Server 重启以应用新凭据相关停机影响与缓解见 api-server-upgrade.rst。各云账号对应的 Helm values 在 charts/skypilot/values.yaml 中统一管理awsCredentials、gcpCredentials、runpodCredentials、lambdaCredentials、vastCredentials、nebiusCredentials、digitaloceanCredentials、r2Credentials、coreweaveCredentials、slurmCredentials等。5.1 Kubernetes 凭据API Server 默认被授予使用宿主 Kubernetes 集群的权限任务会在 API Server 同一命名空间启动禁用宿主集群设置kubernetesCredentials.useApiServerClusterfalse使用其他命名空间设置kubernetesCredentials.inclusterNamespacenamespace为其他集群配置认证时先用 kubeconfig 创建 Secretkubectl create secret generic kube-credentials \ --namespace $NAMESPACE \ --from-fileconfig$HOME/.kube/config再启用helm upgrade --install $RELEASE_NAME skypilot/skypilot-nightly --devel \ --namespace $NAMESPACE \ --reuse-values \ --set kubernetesCredentials.useKubeconfigtrue \ --set kubernetesCredentials.kubeconfigSecretNamekube-credentialsexec 型 kubeconfig 转换若 kubeconfig 使用 exec 认证如 GKE 的gke-gcloud-auth-plugin、Nebius Managed Kubernetes、OCI 等需先生成静态认证的 kubeconfig。仓库已提供脚本 sky/utils/kubernetes/generate_kubeconfig.shexport KUBECONFIG$HOME/.kube/config ./generate_kubeconfig.sh然后用生成的./kubeconfig创建 Secret。使用多个 Kubernetes 集群时需要在 SkyPilot config 的allowed_contexts中声明各 contextkubernetes: allowed_contexts: - in-cluster # 宿主集群若 useApiServerClusterfalse 则不可设置 - context1 # kubeconfig 中的其他 context - context25.2 AWS 凭据方案一单 profile默认kubectl create secret generic aws-credentials \ --namespace $NAMESPACE \ --from-literalaws_access_key_idYOUR_ACCESS_KEY_ID \ --from-literalaws_secret_access_keyYOUR_SECRET_ACCESS_KEY helm upgrade --install $RELEASE_NAME skypilot/skypilot-nightly --devel \ --namespace $NAMESPACE \ --reuse-values \ --set awsCredentials.enabledtrue方案二多 profile多 workspacekubectl create secret generic aws-credentials \ --namespace $NAMESPACE \ --from-filecredentials$HOME/.aws helm upgrade --install $RELEASE_NAME skypilot/skypilot-nightly --devel \ --namespace $NAMESPACE \ --reuse-values \ --set awsCredentials.enabledtrue \ --set awsCredentials.useCredentialsFiletrue注意凭据文件中被引用的非默认 profile 必须在 config 文件中一并声明。也可以复用已有 Secret通过awsCredentials.awsSecretName、awsCredentials.accessKeyIdKeyName、awsCredentials.secretAccessKeyKeyName指定键名或使用新名字的 Secret 后重新指向。更新后可用kubectl exec进 pod 执行cat /root/.aws/credentials验证。5.3 GCP 凭据GCP 使用服务账号认证。将 JSON key 存入 Secret 后启用kubectl create secret generic gcp-credentials \ --namespace $NAMESPACE \ --from-filegcp-cred.jsonYOUR_SERVICE_ACCOUNT_JSON_KEY.json helm upgrade --install $RELEASE_NAME skypilot/skypilot-nightly --devel \ --namespace $NAMESPACE \ --reuse-values \ --set gcpCredentials.enabledtrue \ --set gcpCredentials.projectIdYOUR_PROJECT_ID验证kubectl exec $API_SERVER_POD_NAME -n $NAMESPACE -- ls -lart /root/.config/gcloud。5.4 API Key 型云RunPod / Lambda / Vast / DigitalOcean这几家均使用 API Key 认证模式完全一致kubectl create secret generic runpod-credentials \ --namespace $NAMESPACE \ --from-literal api_keyYOUR_API_KEY helm upgrade --install $RELEASE_NAME skypilot/skypilot-nightly --devel \ --namespace $NAMESPACE \ --reuse-values \ --set runpodCredentials.enabledtrueLambda、Vast、DigitalOcean 分别对应lambdaCredentials、vastCredentials、digitaloceanCredentialsSecret 创建方式相同均支持通过*SecretName复用已有 Secret。5.5 Nebius 凭据Nebius 使用服务账号支持单个或多个凭据文件kubectl create secret generic nebius-credentials \ --namespace $NAMESPACE \ --from-filecredentials.json$HOME/.nebius/credentials.json \ --from-fileserviceaccount-1-credentials.json$HOME/.nebius/serviceaccount-1-credentials.json helm upgrade --install $RELEASE_NAME skypilot/skypilot-nightly --devel \ --namespace $NAMESPACE \ --reuse-values \ --set nebiusCredentials.enabledtrue \ --set nebiusCredentials.tenantIdYOUR_TENANT_ID多凭据文件可与 workspaces 配合为不同团队绑定不同的凭据与租户workspaces: team-a: nebius: credentials_file_path: ~/.nebius/serviceaccount-1-credentials.json tenant_id: tenant-rrww0kh3nnfo7v0dgw team-b: nebius: credentials_file_path: ~/.nebius/serviceaccount-2-credentials.json tenant_id: tenant-52czfp5clbtq0er1ol5.6 SSH Node Pools若需将既有机器接入为 SSH Node Pool先创建 配置 文件ssh_node_pools.yaml再通过--set-file注入helm upgrade --install $RELEASE_NAME skypilot/skypilot-nightly --devel \ --namespace $NAMESPACE \ --reuse-values \ --set-file apiService.sshNodePools/your/path/to/ssh_node_pools.yaml若配置涉及 SSH 密钥将密钥放入 Secret 并设置apiService.sshKeySecretSECRET_NAMEapiserver-ssh-key kubectl create secret generic $SECRET_NAME \ --namespace $NAMESPACE \ --from-fileid_rsa/path/to/id_rsa \ --from-fileother_id_rsa/path/to/other_id_rsa helm upgrade --install $RELEASE_NAME skypilot/skypilot-nightly --devel \ --namespace $NAMESPACE \ --reuse-values \ --set apiService.sshKeySecret$SECRET_NAME密钥会挂载到容器~/.ssh/。更新sshNodePools不会重启 API Server但会在数十秒内生效用kubectl exec ... cat /root/.sky/ssh_node_pools.yaml验证。部署后使用sky ssh up完成 Node Pool 初始化。注意本机上的 SSH 配置对 API Server 不可见Helm 部署时应把 SSH 密钥与口令写进ssh_node_pools.yaml。5.7 Slurm 凭据API Server 通过 SSH 连接 Slurm 集群的登录节点需要 SSH 密钥和 Slurm SSH 配置文件~/.slurm/config。Step 1创建 SSH 密钥 Secretkubectl create secret generic slurm-ssh-key \ --namespace $NAMESPACE \ --from-fileid_rsa/path/to/your/ssh/id_rsa多个集群的多个密钥可放入同一 Secret。Step 2创建 Slurm SSH 配置cat /tmp/slurm-config EOF Host mycluster1 HostName login.mycluster1.myorg.com User myusername IdentityFile ~/.ssh/id_rsa Host mycluster2 HostName login.mycluster2.myorg.com User myusername IdentityFile ~/.ssh/cluster2_key EOFHostName与User必填IdentityFile可选缺省时使用 ssh-agent 或默认密钥位置~/.ssh/id_rsa、~/.ssh/id_ed25519。Step 3部署helm upgrade --install $RELEASE_NAME skypilot/skypilot-nightly --devel \ --namespace $NAMESPACE \ --reuse-values \ --set apiService.sshKeySecretslurm-ssh-key \ --set-file slurmCredentials.config/tmp/slurm-config也可用 values.yaml 方式。配置完成后从客户端运行sky check验证 Slurm 集群是否被识别。5.8 对象存储凭据Cloudflare R2 / CoreWeave CAIOS / VastDataR2 使用与本地安装相同的凭据格式kubectl create secret generic r2-credentials \ --namespace $NAMESPACE \ --from-filer2.credentials$HOME/.cloudflare/r2.credentials \ --from-fileaccountid$HOME/.cloudflare/accountid helm upgrade --install $RELEASE_NAME skypilot/skypilot-nightly --devel \ --namespace $NAMESPACE \ --reuse-values \ --set r2Credentials.enabledtrue \ --set r2Credentials.r2SecretNamer2-credentialsCoreWeave 与 VastData 的模式相同Secret 内分别放置cw.config/cw.credentials与vastdata.config/vastdata.credentials分别通过coreweaveCredentials.enabled和vastdataCredentials.enabled启用。5.9 其他云可通过kubectl exec进入 API Server pod执行相关的安装命令手动配置。注意手动配置的凭据在 API Server 重启后不会保留通过 Secret 支持更多云正在规划中。六、可选配置 OAuth、高可用与 SkyPilot ConfigOAuth2 认证在基础 HTTP 认证之上SkyPilot 支持通过 OAuth2 安全认证用户支持 Okta、Google Workspace 等常见提供商。可在 ingress 层使用 OAuth2 Proxyingress.oauth2-proxy或使用auth.oauthOIDC 配置项见 charts/skypilot/values.yaml包含oidc-issuer-url、client-id、client-secret、email-domain、session store 等。高可用生产环境可用外部 PostgreSQL 数据库支撑 API Server实现无状态化详见 api-server-upgrade.rst。SkyPilot Config 管理部署完成后通过 Dashboard 修改全局配置http://api-server-url/dashboard/config界面见下图。首次部署时也可通过--set-file apiService.configpath/to/your/config.yaml注入初始配置挂载为容器内~/.sky/config.yamlcat EOF config.yaml admin_policy: admin_policy_examples.AddLabelsPolicy jobs: controller: resources: cpus: 2 allowed_clouds: - aws - kubernetes kubernetes: allowed_contexts: - my-context - my-other-context EOF helm upgrade --install $RELEASE_NAME skypilot/skypilot-nightly --devel \ --namespace $NAMESPACE \ --reuse-values \ --set-file apiService.configconfig.yaml注意apiService.config在已有配置时执行helm upgrade会被忽略防止误覆盖请改用 Dashboard若配置了远程数据库apiService.dbConnectionString或apiService.dbConnectionSecretName则 SkyPilot config 不能在 Helm chart 中指定只能在部署后通过 Dashboard 设置。七、可选GPU 监控与 MetricsSkyPilot Dashboard 可选暴露 GPU 指标与 API Server 指标。启用方式helm upgrade --install $RELEASE_NAME skypilot/skypilot-nightly --devel \ --namespace $NAMESPACE \ --reuse-values \ --set apiService.metrics.enabledtrue \ --set prometheus.enabledtrue \ --set grafana.enabledtrue从 charts/skypilot/values.yaml 可以看到内置的 Prometheus 配置细节默认保留 1000 天、retentionSize 43GB、为 GPU 指标与模型 serving 指标/gpu-metrics、/endpoints-metrics内置了静态抓取任务并支持useDedicatedScrapeConfig与scrapeEndpointMetrics开关。详细的 Prometheus/Grafana 部署步骤见 api-server-metrics-setup.rst 与 api-server-gpu-metrics-setup.rst。八、可选服务端调试日志客户端可通过SKYPILOT_DEBUG1环境变量为单个请求开启调试日志SKYPILOT_DEBUG1 sky status要为所有请求开启服务端调试日志helm upgrade --install $RELEASE_NAME skypilot/skypilot-nightly --devel \ --namespace $NAMESPACE \ --reuse-values \ --set-string apiService.extraEnvs[0].nameSKYPILOT_SERVER_ENABLE_REQUEST_DEBUG_LOGGING \ --set-string apiService.extraEnvs[0].valuetrue每个请求的调试日志保存在 API Server 的~/.sky/api_server/request_debug_logs/request_id.log且不影响客户端看到的输出。九、升级与卸载9.1 升级 API Server升级流程含高可用、双升级策略对比与 API 兼容性保证详见 api-server-upgrade.rst。核心要点确定目标版本号helm repo update skypilot更新仓库先升级客户端pip install -U skypilot-nightly${VERSION}升级 API Server--reuse-values至关重要用于保留此前设置helm upgrade -n $NAMESPACE $RELEASE_NAME skypilot/skypilot-nightly --devel --reuse-values \ --set apiService.image${IMAGE_REPO}:${VERSION}升级期间 SkyPilot CLI 与 Python SDK 会自动重试请求直至新版就绪因此升级是优雅的前提是前后版本 API 兼容自 0.10.0 起相邻 minor 版本间保证 API 兼容。生产环境可将升级策略切换为RollingUpdate需外部 PostgreSQL 数据库 storage.enabledfalse 保持 ingress 开启实现零停机滚动升级。9.2 卸载helm uninstall $RELEASE_NAME --namespace $NAMESPACE --wait--wait确保所有 API Server 相关资源删除完毕后才返回。十、生产加固故障容错与权限最小化10.1 状态持久化API Server 被设计为故障容错pod 被终止后 Kubernetes 会自动重建。为在 pod 重建期间保留状态Chart 使用 PersistentVolumeClaimPVC可自定义存储设置storage: # Enable/disable persistent storage enabled: true # Storage class name - leave empty to use cluster default storageClassName: # Access modes - ReadWriteOnce or ReadWriteMany depending on storage class support accessMode: ReadWriteOnce # Storage size size: 10Gi # Optional selector for matching specific PVs selector: {} # matchLabels: # environment: prod # Optional volume name for binding to specific PV volumeName: # Optional annotations annotations: {}例如使用特定 storage class 并扩容到 20Gistorage: enabled: true storageClassName: standard size: 20Gi应用helm upgrade --install $RELEASE_NAME skypilot/skypilot-nightly --devel -f values.yaml。EKS 用户如缺省 storage class 不支持 PV可安装 Amazon EBS CSI driver 使默认gp2storage class 由 EBS 支撑需先为集群启用 OIDC 并绑定具备 EBS 创建权限的 IAM 角色也可选用 EFS 等存储类。10.2 通过 preDeployHook 安装 admin policyHelm Chart 支持在 API Server 启动前安装 admin policy# values.yaml apiService: preDeployHook: | echo Installing admin policy pip install githttps://github.com/michaelvll/admin-policy-examples config: | admin_policy: admin_policy_examples.AddLabelsPolicy应用helm upgrade --install $RELEASE_NAME skypilot/skypilot-nightly --devel -f values.yaml。admin policy 的完整机制可参考 sky/admin_policy.py 与 examples/admin_policy 中的示例策略。10.3 最小权限 RBACHelm 部署默认会为 API Server 授予访问宿主集群的权限可通过以下方式裁剪降低 RBAC 权限默认 API Server 会创建 service account 与 RBAC 角色用于给 SkyPilot 任务 Pod 授权。若希望禁用先在 SkyPilot config 中设置kubernetes.remote_identity为已具备足够权限的 API Server service accountkubernetes: remote_identity: ${RELEASE_NAME}-api-sa再设置rbac.manageRbacPoliciesfalsehelm upgrade --install $RELEASE_NAME skypilot/skypilot-nightly --devel --reuse-values \ --set rbac.manageRbacPoliciesfalse禁用系统组件管理无需对象存储挂载时可关闭rbac.manageSystemComponentsfalse。使用已有 service accountrbac.createfalserbac.serviceAccountNamemy-existing-service-account需确保其满足 SkyPilot 所需的最小权限。默认 RBAC 规则namespace 级与 cluster 级在 charts/skypilot/values.yaml 中有完整定义例如 pod 生命周期管理、Service/Secret/Event/ConfigMap 访问、Node 与 RuntimeClass 读取等。十一、多 API Server 与自定义 Ingress11.1 复用 ingress 控制器默认安装会部署一个新的 ingress-nginx 控制器其部分 cluster-scope 资源会在多套安装间冲突因此同一集群部署多套 API Server 时推荐复用已有控制器# 第一套 API Server假设已部署自带 ingress-nginx 控制器路径设为 /first-server helm upgrade --install $RELEASE_NAME skypilot/skypilot-nightly --devel \ --namespace $NAMESPACE \ --reuse-values \ --set ingress.path/first-server # 第二套 API Server复用已有控制器使用不同路径 ANOTHER_RELEASE_NAMEskypilot2 ANOTHER_NAMESPACEskypilot2 ANOTHER_AUTH_STRING$(htpasswd -nb $ANOTHER_WEB_USERNAME $ANOTHER_WEB_PASSWORD) helm upgrade --install $ANOTHER_RELEASE_NAME skypilot/skypilot-nightly --devel \ --namespace $ANOTHER_NAMESPACE \ --set ingress-nginx.enabledfalse \ --set ingress.path/second-server \ --set ingress.authCredentials$ANOTHER_AUTH_STRING两套 API Server 共享同一控制器在同一主机的不同路径下提供服务。获取端点时从部署了控制器的 release 取 HOST再拼接认证与路径FIRST_PATH$(kubectl get ingress ${RELEASE_NAME}-ingress --namespace $NAMESPACE -o jsonpath{.metadata.annotations.skypilot\.co\/ingress-path}) FIRST_ENDPOINThttp://${WEB_USERNAME}:${WEB_PASSWORD}${HOST}${FIRST_PATH} SECOND_PATH$(kubectl get ingress ${ANOTHER_RELEASE_NAME}-ingress --namespace $ANOTHER_NAMESPACE -o jsonpath{.metadata.annotations.skypilot\.co\/ingress-path}) SECOND_ENDPOINThttp://${ANOTHER_WEB_USERNAME}:${ANOTHER_WEB_PASSWORD}${HOST}${SECOND_PATH}集群中已先存在 ingress-nginx 控制器时同样设置ingress-nginx.enabledfalse与唯一的ingress.path如/skypilot即可。11.2 使用自定义 ingress 控制器禁用默认 nginx 控制器指定ingress.ingressClassName与自定义注解helm upgrade --install $RELEASE_NAME skypilot/skypilot-nightly --devel \ --namespace $NAMESPACE \ --reuse-values \ --set ingress-nginx.enabledfalse \ --set ingress.ingressClassNamecustom-ingress-class \ --set ingress.annotations.custom-ingress-annotationcustom-ingress-annotation-value注意ingress.authCredentials基础认证仅在使用 ingress-nginx 控制器时受支持使用自定义控制器时请考虑改用 OAuth2 保护 API Server。十二、备选方案在云 VM 上部署 API Server注意VM 部署不支持故障切换与优雅升级生产环境仍推荐 Helm 部署api-server-admin-deploy.rst。12.1 用 SkyPilot 在云 VM 上部署cat EOF skypilot-api-server.yaml resources: cpus: 8 memory: 16 ports: 46580 image_id: docker:berkeleyskypilot/skypilot-nightly:latest run: | sky api start --deploy EOF sky launch -c api-server skypilot-api-server.yaml12.2 获取 URL 并测试$ sky status --endpoint 46580 api-server http://a.b.c.d:46580 $ curl ${ENDPOINT}/health SkyPilot API Server: Healthy上述 YAML 部署的 API Server 默认没有认证建议增加认证层如 nginx 反向代理或改用 Kubernetes 上的 Helm Chart 以获得更安全的部署。若在同一环境安装 SkyPilot API 客户端建议使用独立的 Python 环境venv/conda以避免与部署用的 SkyPilot 安装冲突。十三、连接 API Server管理员视角的收尾验证部署完成后团队成员可用sky api login连接$ sky api login Enter your SkyPilot API server endpoint: http://skypilot:password1.2.3.4:30050连接信息保存在~/.sky/config.yaml也可用SKYPILOT_API_SERVER_ENDPOINT环境变量覆盖。用sky api info验证$ sky api info Using SkyPilot API server: ENDPOINT ├── Status: healthy, commit: xxxxx, version: 1.0.0-dev0 └── User: skypilot-user (xxxxxx)sky api login、sky api info、sky api status/logs/cancel、sky api start/stop等命令组在 sky/client/cli/command.py 中定义是管理员日常巡检查看请求状态、检查请求日志、取消卡住的请求的入口。各用户默认只能看到自己的资源管理员可用-u标志查看所有用户的集群与 job/serve 控制器sky status -u、sky jobs queue -u。更多连接细节见 api-server.rst性能调优并发上限、资源规划、异步提交见 api-server-tunning.rst。【免费下载链接】skypilotThe AI Compute Platform for frontier teams. SkyPilot turns fragmented AI compute into one AI supercomputer, so frontier AI teams build custom intelligence faster.项目地址: https://gitcode.com/GitHub_Trending/sk/skypilot创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价