1.Build docker image
由于自己build镜像总是遇到问题,此处暂时借用dockerhub上的一个镜像 docker.io/mochin/tensorflow-serving
将此镜像push到k8s所在集群的docker registry中
2.编写yaml
官方例子中给出了一个yaml不过有些地方不对,或者不适用这个dockerimage(可能是因为0.4.0的版本)
做出了一些修改
apiVersion: extensions/v1beta1 kind: Deployment metadata: name: inception-deployment spec: replicas: 2 template: metadata: labels: app: inception-server spec: containers: - name: inception-container image: registry.lenovo.com:8080/tensorflow-serving:0.4.0 command: - /bin/sh - -c args: - serving/bazel-bin/tensorflow_serving/example/inception_inference --port=9900 serving/inception-export ports: - containerPort: 9900 --- apiVersion: v1 kind: Service metadata: labels: run: inception-service name: inception-service spec: ports: - port: 9900 targetPort: 9900 selector: app: inception-server #type: LoadBalancer externalIPs: - xxx.xxx.xxx.xxx
3. 提交到k8s
kubectl create -f xxx.yaml
4. 查看状态
#>kubectl get service
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
inception-service xxx.xxx.xxx.xxx xxx.xxx.xxx.xxx 9900/TCP 8m
#>kubectl get deployment
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
inception-deployment 2 2 2 2 3h
5. 进行测试
运行一个docker container去访问部署的服务
docker run --rm -it tensorflow-serving:latest /bin/bash
#>cd serving
#> ./bazel-bin/tensorflow_serving/example/inception_client --server=10.100.208.54:9900 --image=./tensorflow/tensorflow/examples/label_image/data/grace_hopper.jpg &> log &
7.863746 : military uniform
6.911478 : bow tie, bow-tie, bowtie
6.642433 : mortarboard
5.758826 : suit, suit of clothes
5.614463 : academic gown, academic robe, judge‘s robe
6. 负载均衡配置
TODO