AWS LoadBalancer 无法连接到 K8s POD



我有一个在AWS中使用kubeadm构建的单节点Kubernetes"集群"。

我使用此配置部署了一个简单的 Nginx 部署:

kind: Deployment
apiVersion: apps/v1
metadata:
  name: nginx0-deployment
  labels:
    app: nginx0-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx0
  template:
    metadata:
      labels:
        app: nginx0
    spec:
      containers:
      - name: nginx
        image: k8s.gcr.io/nginx:latest
        ports:
        - containerPort: 80
          name: backend-http

我还创建了一个 AWS ELB 负载均衡器:

kind: Service
apiVersion: v1
metadata:
  name: nginx0-service
balancing-enabled: "true"
spec:
  selector:
    app: nginx0-deployment
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80
  type: LoadBalancer

这将创建ELB并在K8s实例安全组中打开相关端口。

{ec2-instance} ~ $ kubectl get all
NAME                                     READY   STATUS    RESTARTS   AGE
pod/nginx0-deployment-548f99f47c-ns75w   1/1     Running   0          3m45s
NAME                     TYPE           CLUSTER-IP       EXTERNAL-IP                                                                   PORT(S)        AGE
service/kubernetes       ClusterIP      10.96.0.1        <none>     443/TCP        25h
service/nginx0-service   LoadBalancer   10.106.179.191   acfc4150....elb.amazonaws.com   80:30675/TCP   63s
NAME                                READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/nginx0-deployment   1/1     1            1           3m45s
NAME                                           DESIRED   CURRENT   READY   AGE
replicaset.apps/nginx0-deployment-548f99f47c   1         1         1       3m45s

但是,ELB和POD之间仍然缺少一些东西,因为浏览到http://acfc4150....elb.amazonaws.com/不起作用 - Chrome说ERR_EMPTY_RESPONSE。

我想这与 ELB 端口映射 80:30675/TCP 有关 - 我已经检查了实例上的传入流量,我看到了端口 30675 的数据包,但没有返回。好像这个端口和 POD 的端口 80 之间的映射没有设置?

知道我应该向清单中添加什么才能使其正常工作吗?

谢谢!

你有错误的标签;你的部署app: nginx0-deployment,但你的 Podapp: nginx0Service不以部署为目标,而是以 Pod 为目标

更新您的Service,使其具有:

spec:
  selector:
    app: nginx0

相反

最新更新