Kubernetes / Azure ACS:为什么我无法访问我的服务的外部IP?

时间:2017-11-13 03:50:49

标签: azure kubernetes azure-container-service

在Azure容器服务上使用Kubernetes(虽然不是新的AKS)。

我正在像这样部署一个前端:

apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: frontend-deployment
spec:
  selector:
    matchLabels:
      app: frontend
  replicas: 2
  template:
    metadata:
      labels:
        app: frontend
    spec:
      containers:
      - name: frontend
        image: etc/etc
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 3000
---
apiVersion: v1
kind: Service
metadata:
  name: frontend
spec:
  type: LoadBalancer
  ports:
  - port: 80
    targetPort: 3000
  selector:
    app: frontend

我可以看到它是从日志中正确启动的。

kubectl get services我可以看到它已被分配了一个外部IP。但是当我尝试通过HTTP访问它时,它就会挂起。

我还可以在Azure门户中看到Azure Load Balancer已创建并指向正确的外部IP和后端池。

如果我以某种方式弄乱了pod定义中的端口分配,有人能告诉我吗?

-

更新:不知怎的,它开始在它自己(或似乎)开始工作。但当我尝试将其重新创建为服务而不是部署时,它停止了工作

这是我的服务:

这是我的配置:

apiVersion: v1
kind: Service
metadata:
  creationTimestamp: null
  name: meteor
spec:
  externalTrafficPolicy: Cluster
  ports:
  - port: 80
    protocol: TCP
    targetPort: http-server
  selector:
    app: frontend
  sessionAffinity: ClientIP
  type: LoadBalancer

它为负载均衡器创建了外部IP,我可以看到它与pod正确匹配。但是当我尝试连接外部IP时出现超时。同时,作为部署的一部分创建的负载均衡器继续正常工作。

2 个答案:

答案 0 :(得分:1)

  

您知道如何更改现有ACS中的代理VM大小   部署?

我们可以通过Azure门户更改k8s代理,Azure中的代理是VM,我们应该调整 VM:

enter image description here

enter image description here

希望这有帮助。

答案 1 :(得分:1)

看起来问题是对targetPort的错误说明。将其调整为正确的值并替换服务定义可以解决问题。