在 Kubernetes Pod 中访问 Prodigy UI

Access Prodigy UI in Kubernetes Pod

我正在尝试使用 Prodigy UI 工具创建用于创建训练数据集的服务。我想使用 Azure 云中 运行ning 的 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

这应该(应该是这里的操作词)在别名为 prodigyport

的 pod 级别公开 8880 端口

之后,我创建了一个 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 和底层容器交互有误解。我在这里错过了什么?

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

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

kubectl describe services prodigy-service

IP 地址列在 LoadBalancer Ingress 旁边。

此外,您可以使用端口转发来访问您的 pod:

kubectl port-forward <pod_name> 8880:8880

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

您可以使用此命令找到 public 个 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 规则:

希望这对您有所帮助。