无法在AKS上访问类型为LoadBalancer的Kubernetes服务

3
我正在创建一个带有ACR容器注册表和部署虚拟服务的普通AKS集群,这是我以前做过多次的事情,应该可以工作,但现在却不能。服务无错误地部署,我看到Pod和服务都在运行,端口似乎也匹配,但我无法访问Pod中运行的应用程序。
以下是我的YAML文件:
apiVersion: v1
kind: Service
metadata:
  name: dummyapp-prep
spec:
  selector:
    app: dummyapp-prep
  ports:
    - protocol: TCP
      port: 80
  type: LoadBalancer
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: dummyapp-prep
spec:
  selector:
    matchLabels:
      run: dummyapp-prep
  replicas: 1
  template:
    metadata:
      labels:
        run: dummyapp-prep
    spec:
      containers:
      - name: dummyapp-prep
        image: dummyappregistry.azurecr.io/dummyappregistry.azurecr.io/dummyapp-prep:dummyapp-prep-18
        ports:
        - containerPort: 80
      imagePullSecrets:
      - name: secret

一切都部署得很好 - 我看到了服务,并且它获得了一个外部IP:

kubectl get services
NAME            TYPE           CLUSTER-IP   EXTERNAL-IP     PORT(S)        AGE
dummyapp-prep   LoadBalancer   10.0.230.4   52.149.106.85   80:32708/TCP   4m24s
kubernetes      ClusterIP      10.0.0.1     <none>          443/TCP        26h

Pod没有问题,我可以连接到它并在localhost:80上curl应用程序。但是,浏览http://52.149.106.85:80时超时。

我检查了Azure负载均衡器-IP已注册。

还有什么可能出错了吗?

1个回答

5
您应用的标签有误。服务正在寻找标签为app: dummyapp-prep,而Pod和部署使用的是run: dummyapp-prep。请注意runapp标签名称的区别。
您还可以通过运行kubectl describe endpoints dummyapp-prep命令检查服务是否已绑定到 API 服务器为您创建的端点对象。如果在Subsets部分中未列出 Pod IP,则意味着服务无法找到 Pod。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接