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

Kubernetes/Azure ACS: Why can't I access external IPs of my 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 负载均衡器已创建并指向正确的外部 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,我可以看到它与 pods 正确匹配。但是当我尝试连接到外部 IP 时超时。同时,作为部署的一部分创建的负载平衡器继续正常工作。

do you know how to change the agent VM size in an existing ACS deployment?

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

希望对您有所帮助。

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