在Kubernetes环境中配置TensorFlow Serving服务发现的关键在于正确设置Service资源。首先创建一个Headless Service用于Pod发现:
apiVersion: v1
kind: Service
metadata:
name: tensorflow-serving
labels:
app: tensorflow-serving
spec:
clusterIP: None
ports:
- port: 8500
targetPort: 8500
name: grpc
- port: 8501
targetPort: 8501
name: http
selector:
app: tensorflow-serving
然后部署TensorFlow Serving Pod时指定相同的标签:
apiVersion: apps/v1
kind: Deployment
metadata:
name: tensorflow-serving-deployment
spec:
replicas: 3
selector:
matchLabels:
app: tensorflow-serving
template:
metadata:
labels:
app: tensorflow-serving
spec:
containers:
- name: tensorflow-serving
image: tensorflow/serving:latest
ports:
- containerPort: 8500
name: grpc
- containerPort: 8501
name: http
args:
- --model_name=model_name
- --model_base_path=/models/model_name
通过上述配置,Kubernetes Service会自动将服务请求路由到后端Pod。使用kubectl get svc tensorflow-serving验证服务状态,并通过kubectl get endpoints tensorflow-serving查看服务发现的Pod端点信息。

讨论