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

时间:2021-03-23 10:53:21

标签: kubernetes aws-nlb

我正在 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

1 个答案:

答案 0 :(得分:2)

要在 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