在 Kubernetes 环境中部署应用程序时,Helm 图表是一个非常有用的工具,它可以帮助简化部署过程。然而,如果更倾向于使用原生的 Kubernetes 清单文件来部署,以下是一个简单的示例,展示了如何创建一个基于 CPU 的 Roboflow 推理 Pod 并将其与一个 ClusterIP 类型的服务关联起来。
首先,需要创建一个名为 roboflow.yaml
的 YAML 文件,其中包含以下内容:
# Pod
apiVersion: v1
kind: Pod
metadata:
name: roboflow
labels:
app.kubernetes.io/name: roboflow
spec:
containers:
- name: roboflow
image: roboflow/roboflow-inference-server-cpu
ports:
- containerPort: 9001
name: rf-pod-port
# Service
apiVersion: v1
kind: Service
metadata:
name: rf-service
spec:
type: ClusterIP
selector:
app.kubernetes.io/name: roboflow
ports:
- name: rf-svc-port
protocol: TCP
port: 9001
targetPort: rf-pod-port
以上示例假设Kubernetes集群能够从 Docker Hub 下载镜像。接下来,使用 kubectl 命令行工具将 Pod 和服务部署到 Kubernetes 集群的默认命名空间中:
kubectl apply -f roboflow.yaml
部署完成后,将创建一个 ClusterIP 类型的服务,可以通过以下 URI 在 Kubernetes 集群内部访问 Roboflow 推理服务:
http://rf-service.default.svc:9001
这个示例仅仅是一个起点。Kubernetes提供了强大的功能,允许将多种高级特性和扩展集成到Roboflow推理服务中。例如,可以扩展上述示例以满足更高级的使用场景,如:
- 使用
nodeSelectors
在 Kubernetes 环境中的 GPU 机器节点池上托管 Pod,并使用roboflow/inference-server:gpu
镜像。 - 创建Kubernetes部署来水平自动扩展Roboflow推理服务,并根据特定指标(如 CPU 使用率)设置自动扩展触发器。
- 使用不同的服务类型,如
nodePort
和LoadBalancer
,以便外部可以访问 Roboflow 推理服务。 - 使用入口控制器通过 TLS(HTTPS)公开Roboflow推理服务。
- 为 Roboflow 推理服务添加监控和告警。
- 集成许可服务器和离线模式。