Kubernetes 服务 - 服务 IP 地址无法访问

Kubernetes service - service IP address is not accessible

我正在使用 aks 服务。我在 Azure 容器注册表中有一个 Tensorflow 服务图像。现在,当我部署我的服务时,public 服务端点无法访问,也无法 ping 通。

我的镜像暴露在 8501 端口,所以我将它用作我的 yaml 中的目标端口。

这是我用于此部署的 yaml 文件。

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: my-model-gpu
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: my-model-gpu
    spec:
      containers:
      - name: my-model-gpu
        image: dsdemocr.azurecr.io/work-place-safety-gpu
        ports:
        - containerPort: 8501
        resources:
         limits:
           nvidia.com/gpu: 1
      imagePullSecrets:
        - name: registrykey

---
apiVersion: v1
kind: Service
metadata:
  name: my-model-gpu
spec:
  type: LoadBalancer
  ports:
  - port: 8501
    protocol: "TCP"
    targetPort: 8501
  selector:
    app: my-model-gpu

下面是我的 svc 描述:kubectl describe svc my-model-gpu

Name:                     my-model-gpu
Namespace:                default
Labels:                   <none>
Annotations:              kubectl.kubernetes.io/last-applied-configuration:
                            {"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"name":"my-model-gpu","namespace":"default"},"spec":{"ports":[{"port":850...
Selector:                 app=my-model-gpu
Type:                     LoadBalancer
IP:                       10.0.244.106
LoadBalancer Ingress:     52.183.17.101
Port:                     <unset>  8501/TCP
TargetPort:               8501/TCP
NodePort:                 <unset>  31546/TCP
Endpoints:                10.244.0.22:8501
Session Affinity:         None
External Traffic Policy:  Cluster
Events:
  Type    Reason                Age   From                Message
  ----    ------                ----  ----                -------
  Normal  EnsuringLoadBalancer  10m   service-controller  Ensuring load balancer
  Normal  EnsuredLoadBalancer   9m8s  service-controller  Ensured load balancer

看来我在端口映射方面犯了一些错误。非常感谢任何帮助。

从您提供的信息来看,负载均衡器类型的服务没有问题。我认为,可能的原因都与您的申请有关,我将在下面列出:

  1. 你暴露的端口不对,所以你需要确定暴露的端口是正确的。
  2. 我看你想在AKS中使用GPU,所以你需要在创建时选择the right VM size for GPU。这也可能导致你的应用程序不在 运行ning 状态的问题。
  3. 您的应用程序发生了其他问题,导致您的应用程序无法正常运行 运行。所以你还需要检查你的申请状态。
  4. 对于 imagePullSecret,可能您没有为服务主体分配足够的权限来拉取图像。这个原因可能性不大,不过我也列在这里。

希望对您有所帮助。

请遵循社区提供的建议:

研究这个主题我建议查看那些特定于 Azure 的信息:

If the static IP address defined in the loadBalancerIP property of the Kubernetes service manifest does not exist, or has not been created in the node resource group and no additional delegations configured, the load balancer service creation fails.

非常相似case on github

If using Advanced networking it creates the vNet in the same resource group as the AKS service by default.

注:

Currently only Basic IP SKUis supported. Work is in progress to support the Standard IP resource SKU. For more information, see IP address types and allocation methods in Azure.

其他资源:

Azure-LoadBalnacer 相关:

希望对您有所帮助。

我尝试访问的容器在 8501 上没有打开端口,修复后它运行良好。

我认为您需要在 52.183.17.101:8501

上访问应用程序

因为您没有定义将流量路由到负载均衡器的 80 端口。 默认情况下,它将创建监听 8501 的负载均衡器。