在Kubernetes Pod中访问Prodigy UI

时间:2018-01-19 19:20:44

标签: python-3.x azure kubernetes

我正在尝试使用Prodigy UI工具创建用于创建训练数据集的服务。我想使用在Azure云中运行的Kubernetes集群来执行此操作。我的Prodigy UI应该在0.0.0.0:8880(在容器上)可以访问。

因此,我按如下方式创建了部署:

kind: Deployment
  apiVersion: apps/v1beta2
  metadata:
    name: prodigy-dply
  spec:
    replicas: 1
    selector:
      matchLabels:
        app: prodigy_pod
    template:
      metadata:
        labels:
          app: prodigy_pod
      spec:
        containers:
        - name: prodigy-sentiment
          image: bdsdev.azurecr.io/prodigy
          imagePullPolicy: IfNotPresent
          command: ["/bin/bash"]
          args: ["-c", "prodigy spacy textapi -F training_recipe.py"]
          ports:
          - name: prodigyport
            containerPort: 8880

这应该(应该是这里的操作词)暴露pod级别的8880端口别名为prodigyport

之后,我创建了一个Service,如下所示:

kind: Service
apiVersion: v1
metadata:
  name: prodigy-service
spec:
  type: LoadBalancer
  selector:
    app: prodigy_pod
  ports:
    - protocol: TCP
      port: 8000
      targetPort: prodigyport

此时,当我运行关联的kubectl create -f <deployment>.yamlkubectl create -f <service>.yaml时,我会收到ExternalIP并关联的端口:10.*.*.*:34672

这是浏览器无法访问的,我假设我误解了我的浏览器将如何与此服务,Pod和底层Container进行交互。我在这里缺少什么?

注意:我愿意接受kubernetes可能不是这里工作的工具,因为易于扩展和更新图像以反映更新的配置,它似乎很诱人

2 个答案:

答案 0 :(得分:1)

您可以使用以下命令找到公共IP地址(LoadBalancer Ingress):

kubectl get service azure-vote-front

结果如下:

root@k8s-master-79E9CFFD-0:~# kubectl get service azure

NAME               CLUSTER-IP     EXTERNAL-IP      PORT(S)          AGE
azure              10.0.136.182   52.224.219.190   8080:31419/TCP   10m

然后您可以使用外部IP 和端口浏览它,如下所示:

curl 52.224.219.190:8080

您还可以通过Azure门户找到Load Balaner规则: enter image description here

希望这有帮助。

答案 1 :(得分:0)

您可以通过kubectl获取服务信息,找到为您的服务创建的IP地址:

kubectl describe services prodigy-service

IP地址列在LoadBalancer Ingress旁边。

此外,您可以使用端口转发来访问您的广告连接:

kubectl port-forward <pod_name> 8880:8880

之后,您可以在浏览器中通过localhost:8880访问Prodigy UI。