Amazon web services 将经典loadbalancer升级为网络loadbalancer

Amazon web services 将经典loadbalancer升级为网络loadbalancer,amazon-web-services,kubernetes,load-balancing,Amazon Web Services,Kubernetes,Load Balancing,我无法将我们的CLB升级为NLB。我通过控制台通过向导进行了手动升级,但连接不起作用。需要进行此升级,以便我们可以在loadbalancer中使用静态IP。我认为它需要通过kubernetes升级,但我的尝试失败了 我(想我)对这个设置的理解是,这个负载平衡器是使用Helm设置的。我还了解到,入口(控制器)负责将http请求重定向到https。这个lb正在第4层工作 apiVersion: v1 kind: Service metadata: labels: app: nginx-i

我无法将我们的CLB升级为NLB。我通过控制台通过向导进行了手动升级,但连接不起作用。需要进行此升级,以便我们可以在loadbalancer中使用静态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

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

正如Jonas在评论部分指出的那样,使用与现有选择器相同的选择器创建新的
负载平衡器
服务
可能是最快、最简单的方法。因此,我们将有两个
负载平衡器
服务
使用相同的
入口控制器

您可以在下面的代码片段中看到,我有两个
服务
ingres-nginx-1-controller
ingres-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
$kubectl get pod-o-wide ingress-nginx-1-controller-5856bddb98-hb865
名称就绪状态重新启动老化IP
ingress-nginx-1-controller-5856bddb98-hb865 1/1运行0 55m 10.36.2.8
$kubectl获取svc入口-nginx-1-控制器入口-nginx-2-控制器
名称类型CLUSTER-IP EXTERNAL-IP
ingress-nginx-1-控制器负载平衡器10.40.15.230
ingress-nginx-2-控制器负载平衡器10.40.11.221
$kubectl get endpoints ingress-nginx-1-controller ingress-nginx-2-controller
姓名端点年龄
ingress-nginx-1-控制器10.36.2.8:443,10.36.2.8:80 39m
ingress-nginx-2-控制器10.36.2.8:443,10.36.2.8:80 11m

此外,为了避免停机,我们可以首先将DNS记录更改为指向新的
负载平衡器
,在传播时间过后,我们可以安全地删除旧的
负载平衡器
服务

,我建议使用相同的选择器创建一个新的
服务
。@Jonas是否仅使用选择器?组件等可以忽略?我认为乔纳斯是对的,这对我来说也是一个很好的方法。此外,我建议您将头盔图表升级到新版本(目前是
v3.22.0
),并将头盔升级到
v3
。你有可能做到这些吗?@matt_j这看起来确实是个好方法。现在可以了。虽然我的掌舵技能微乎其微,但目前无法升级图表。