将经典负载均衡器升级为网络负载均衡器

时间:2021-02-02 16:14:08

标签: amazon-web-services kubernetes load-balancing

我在将 CLB 升级到 NLB 时遇到问题。我通过控制台通过向导进行了手动升级,但连接不起作用。需要进行此升级,以便我们可以在负载均衡器中使用静态 IP。我认为它需要通过kubernetes升级,但我的尝试失败了。

我(认为我)对这个设置的理解是这个负载均衡器是使用 Helm 设置的。我还了解到,入口(控制器)负责将 http 请求重定向到 https。并且这个 lb 正在第 4 层上工作。

apiVersion: v1
kind: Service
metadata:
  labels:
    app: nginx-ingress
    chart: nginx-ingress-1.30.0
    component: controller
    heritage: Tiller
    release: nginx-ingress-external
  name: nginx-ingress-external-controller
  namespace: kube-system
  selfLink: /api/v1/namespaces/kube-system/services/nginx-ingress-external-controller
spec:
  clusterIP: 172.20.41.16
  externalTrafficPolicy: Cluster
  ports:
  - name: http
    nodePort: 30854
    port: 80
    protocol: TCP
    targetPort: http
  - name: https
    nodePort: 30621
    port: 443
    protocol: TCP
    targetPort: https
  selector:
    app: nginx-ingress
    component: controller
    release: nginx-ingress-external
  sessionAffinity: None
  type: LoadBalancer
status:
  loadBalancer:
    ingress:
    - hostname: xxx.region.elb.amazonaws.com

如何通过修改此配置文件来执行升级?

1 个答案:

答案 0 :(得分:1)

正如 @Jonas 在评论部分指出的那样,使用与现有选择器相同的选择器创建新的 LoadBalancer Service 可能是最快和最简单的方法。因此,我们将有两个 LoadBalancer Services 使用相同的 ingress-controller

您可以在以下代码段中看到我有两个具有完全相同端点的 Servicesingress-nginx-1-controlleringress-nginx-2-controller):

$ kubectl get pod -o wide ingress-nginx-1-controller-5856bddb98-hb865
NAME                                          READY   STATUS    RESTARTS   AGE   IP         
ingress-nginx-1-controller-5856bddb98-hb865   1/1     Running   0          55m   10.36.2.8

$ kubectl get svc ingress-nginx-1-controller ingress-nginx-2-controller
NAME                         TYPE           CLUSTER-IP     EXTERNAL-IP     
ingress-nginx-1-controller   LoadBalancer   10.40.15.230   <PUBLIC_IP>   
ingress-nginx-2-controller   LoadBalancer   10.40.11.221   <PUBLIC_IP>   

$ kubectl get endpoints ingress-nginx-1-controller ingress-nginx-2-controller
NAME                         ENDPOINTS                    AGE
ingress-nginx-1-controller   10.36.2.8:443,10.36.2.8:80   39m
ingress-nginx-2-controller   10.36.2.8:443,10.36.2.8:80   11m

另外为了避免停机,我们可以先将 DNS 记录更改为指向新的 LoadBalancer,然后在传播时间过后我们可以安全地删除旧的 LoadBalancer Service