Tensorflow 如何解决运行在kubernetes中的Inception服务的部署问题
我正在遵循工作流程,当我试图从本地主机进行推理时,一切都很好,直到通过k8s最终提供inception模型为止 我正在运行pods,Tensorflow 如何解决运行在kubernetes中的Inception服务的部署问题,tensorflow,kubernetes,grpc,Tensorflow,Kubernetes,Grpc,我正在遵循工作流程,当我试图从本地主机进行推理时,一切都很好,直到通过k8s最终提供inception模型为止 我正在运行pods,$kubectl descripe serviceinception服务的输出与中的工作流建议的一致 然而,当运行推理时,事情不起作用。以下是跟踪: $bazel-bin/tensorflow_serving/example/inception_client --server=104.155.175.138:9000 --image=cat.jpg Traceba
$kubectl descripe service
inception服务的输出与中的工作流建议的一致
然而,当运行推理时,事情不起作用。以下是跟踪:
$bazel-bin/tensorflow_serving/example/inception_client --server=104.155.175.138:9000 --image=cat.jpg
Traceback (most recent call last):
File "/home/dimlyus/serving/bazel-
bin/tensorflow_serving/example/inception_client.runfi
les/tf_serving/tensorflow_serving/example/inception_client.py", line 56, in
tf.app.run()
File "/home/dimlyus/serving/bazel-
bin/tensorflow_serving/example/inception_client.runfi
les/org_tensorflow/tensorflow/python/platform/app.py", line 48, in run
_sys.exit(main(_sys.argv[:1] + flags_passthrough))
File "/home/dimlyus/serving/bazel-
bin/tensorflow_serving/example/inception_client.runfi
les/tf_serving/tensorflow_serving/example/inception_client.py", line 51, in
main
result = stub.Predict(request, 60.0) # 10 secs timeout
File "/usr/local/lib/python2.7/dist-
packages/grpc/beta/_client_adaptations.py", line 32
4, in call
self._request_serializer, self._response_deserializer)
File "/usr/local/lib/python2.7/dist-
packages/grpc/beta/_client_adaptations.py", line 21
0, in _blocking_unary_unary
raise _abortion_error(rpc_error_call)
grpc.framework.interfaces.face.face.AbortionError:
AbortionError(code=StatusCode.UNAVAILABLE, details="Connect Failed")
我在谷歌云上运行一切。设置是从一个GCE实例完成的,k8s在Google容器引擎中运行。k8s的设置遵循上面链接的工作流中的说明,并使用该文件
服务设置如下:
apiVersion: v1
kind: Service
metadata:
labels:
run: inception-service
name: inception-service
spec:
ports:
- port: 9000
targetPort: 9000
selector:
run: inception-service
type: LoadBalancer
任何关于如何排除故障的建议都将不胜感激 错误消息似乎表明客户端无法连接到服务器。如果没有一些额外的信息,很难排除故障。如果您发布您的部署和服务配置,并提供一些有关环境的信息(它是否在云上运行?哪一个?您的安全规则是什么?负载平衡器?),我们可能会提供更好的帮助 但这里有一些你可以马上检查的东西:
部署
,还是同时部署了服务
?如果运行服务
它将如何公开?您是否忘记启用节点端口
更新:您的服务类型是负载平衡器。因此,应该在GCE中创建一个单独的负载平衡器。您需要获得负载平衡器的IP,并通过负载平衡器的IP访问服务。请参阅此链接中的“查找您的IP”部分。错误消息似乎表明您的客户端无法连接到服务器。如果没有一些额外的信息,很难排除故障。如果您发布您的部署和服务配置,并提供一些有关环境的信息(它是否在云上运行?哪一个?您的安全规则是什么?负载平衡器?),我们可能会提供更好的帮助 但这里有一些你可以马上检查的东西:
部署
,还是同时部署了服务
?如果运行服务
它将如何公开?您是否忘记启用节点端口
更新:您的服务类型是负载平衡器。因此,应该在GCE中创建一个单独的负载平衡器。您需要获得负载平衡器的IP,并通过负载平衡器的IP访问服务。请参阅此链接中的“查找IP”部分我在几个tensorflow专家的帮助下找到了它。在我引入以下更改后,事情开始起作用: 首先,我以以下方式更改了inception_k8s.yaml文件: 资料来源: 修改: 其次,我公开了部署:
kubectl expose deployments inception-deployment --type=“LoadBalancer”
我使用的是公开部署时生成的IP,而不是inception服务IP
从这一点上,我能够从外部主机运行推断,在外部主机上使用TensorFlow服务和Kubernetes的服务初始模型中的命令安装客户端。我在几个TensorFlow专家的帮助下解决了这个问题。在我引入以下更改后,事情开始起作用: 首先,我以以下方式更改了inception_k8s.yaml文件: 资料来源: 修改: 其次,我公开了部署:
kubectl expose deployments inception-deployment --type=“LoadBalancer”
我使用的是公开部署时生成的IP,而不是inception服务IP
从这一点上,我可以从外部主机运行推断,在外部主机上使用TensorFlow Serving和Kubernetes的Serving Inception模型中的命令安装客户端。感谢您的关注。我用更多的信息更新了这个问题。我同时运行
部署
和服务
。该服务是通过yaml文件设置的。请查看更新问题中的代码段。您的服务类型是负载平衡器。因此,GCE中应该有一个单独的负载平衡。您需要获得负载平衡器的IP,并通过负载平衡器的IP访问服务。请参阅此链接中的“查找您的IP”部分我上面使用的服务器IP来自指定LoadBalancer入口IP的kubectl Descripte service inception service
。还有什么我可以检查的吗?可能仍然是安全规则不允许主/工作节点上的端口。在运行kubectl Descripte service inception服务时,是否可以检查列出的节点端口?它应该是30000-33000范围内的端口,您需要在主节点/工作节点的安全规则中允许该端口。kubectl description service inception service
返回NodePort:32760/TCP。这似乎与TensorFlow服务和Kubernetes的服务初始模型中的工作流一致。如何检查主节点/工作节点的安全规则中是否允许使用NodePort?感谢您的关注。我用更多的信息更新了这个问题。我同时运行部署
和服务
。该服务是通过yaml文件设置的。请
kubectl expose deployments inception-deployment --type=“LoadBalancer”