网络负载均衡器而不是负载均衡器

问题描述

我正在 kubernetes 中创建一个服务。如何将传统负载均衡器更改为网络负载均衡器?我正在转向它提供的外部客户端 IP 的网络负载平衡器。我使用 AWS。这是我的配置:

apiVersion : apps/v1
kind: Deployment
Metadata:
  name: my-web-deployment-multi-pod
  labels:
    app : my-k8s-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      project: cia
  template:
    Metadata:
      labels:
        project: cia
    spec:
      containers:
        - name : my-web
          image: adv4000/k8sPHP:latest
          ports:
            - containerPort: 80   # Port on Pod

        - name : not-my-web
          image: tomcat:8.5.38
          ports:
            - containerPort: 8080  # Port on Pod



apiVersion: v1
kind: Service
Metadata:
  name: my-multi-pods-service
spec:
  type: LoadBalancer
  selector:
    project: cia
  ports:
    - name      : my-web-app-listener
      protocol  : TCP
      port      : 80
      targetPort: 80

    - name      : not-my-web-app-listener
      protocol  : TCP
      port      : 8888
      targetPort: 8080

解决方法

要在 AWS 上使用网络负载均衡器,请使用注释 service.beta.kubernetes.io/aws-load-balancer-type,并将值设置为 nlb

您的服务最终将如下所示:

apiVersion: v1
kind: Service
metadata:
  name: my-multi-pods-service
  annotations:
    service.beta.kubernetes.io/aws-load-balancer-type: "nlb"
spec:
  type: LoadBalancer
  selector:
    project: cia
  ports:
    - name      : my-web-app-listener
      protocol  : TCP
      port      : 80
      targetPort: 80

    - name      : not-my-web-app-listener
      protocol  : TCP
      port      : 8888
      targetPort: 8080

要进一步阅读,请看:https://kubernetes.io/docs/concepts/services-networking/service/#aws-nlb-support

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...