从已弃用的控制器迁移 - Amazon EKS
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

从已弃用的控制器迁移

本主题介绍如何从已弃用的控制器版本迁移。更具体地说,它描述了如何移除 Amazon Load Balancer Controller 的已弃用版本。

  • 已弃用的版本无法升级。必须将其移除并安装最新版本的 LBC。

  • 已弃用的版本包括:

    • Kubernetes 的 Amazon ALB 入口控制器(“入口控制器”),是 Amazon Load Balancer Controller 的前身。

    • Amazon Load Balancer Controller 的任何 0.1.x 版本控制

移除已弃用的控制器版本

注意

您可能已经使用 Helm 安装了已弃用的版本,或者使用 Kubernetes 清单手动安装了该版本。使用原来安装它的工具完成该过程。

使用 Helm 移除入口控制器
  1. 如果您安装了 incubator/aws-alb-ingress-controller Helm 图表,请将其卸载。

    $ helm delete aws-alb-ingress-controller -n kube-system
  2. 如果安装了 eks-charts/aws-load-balancer-controller 图表的 0.1.x 版本,请将其卸载。由于与 Webhook API 版本不兼容,从 0.1.x 升级到版本 1.0.0 不起作用。

    $ helm delete aws-load-balancer-controller -n kube-system
使用 Kubernetes 清单移除入口控制器
  1. 检查当前是否安装了该控制器。

    $ kubectl get deployment -n kube-system alb-ingress-controller

    这是未安装控制器情况下的输出。

    服务器错误(未找到):未找到 deployments.apps “alb-ingress-controller”

    这是安装了控制器情况下的输出。

    NAME READY UP-TO-DATE AVAILABLE AGE alb-ingress-controller 1/1 1 1 122d
  2. 输入以下命令以删除控制器。

    $ kubectl delete -f https://raw.githubusercontent.com/kubernetes-sigs/aws-alb-ingress-controller/v1.1.8/docs/examples/alb-ingress-controller.yaml kubectl delete -f https://raw.githubusercontent.com/kubernetes-sigs/aws-alb-ingress-controller/v1.1.8/docs/examples/rbac-role.yaml

迁移到 Amazon Load Balancer Controller

要从 Kubernetes 的 ALB 入口控制器迁移到 Amazon Load Balancer Controller,您需要:

  1. 移除 ALB 入口控制器(请参阅上述内容)。

  2. 安装 Amazon Load Balancer Controller。

  3. 向 LBC 使用的 IAM 角色添加其他策略。此策略允许 LBC 管理由 Kubernetes 的 ALB 入口控制器创建的资源。

将迁移策略添加到 Amazon Load Balancer Controller IAM 角色。
  1. 下载该 IAM 策略。此策略允许 LBC 管理由 Kubernetes 的 ALB 入口控制器创建的资源。您还可以查看策略

    $ curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.7.2/docs/install/iam_policy_v1_to_v2_additional.json
  2. 将文件中的 arn:aws: 替换为 arn:aws:

    $ sed -i.bak -e 's|arn:aws:|arn:aws:|' iam_policy_v1_to_v2_additional.json
  3. 创建 IAM 策略并记下返回的 ARN。

    $ aws iam create-policy \ --policy-name AWSLoadBalancerControllerAdditionalIAMPolicy \ --policy-document file://iam_policy_v1_to_v2_additional.json
  4. 将 IAM 策略附加到 LBC 使用的 IAM 角色。将 your-role-name 替换为角色的名称,例如 AmazonEKSLoadBalancerControllerRole

    如果您使用 eksctl 创建该角色,请找到已创建的角色名称,打开 Amazon CloudFormation 控制台并选择 eksctl-my-cluster-addon-iamserviceaccount-kube-system-aws-load-balancer-controller 堆栈。选择资源选项卡。角色名称位于 Physical ID(物理 ID)列。

    $ aws iam attach-role-policy \ --role-name your-role-name \ --policy-arn arn:aws:iam::111122223333:policy/AWSLoadBalancerControllerAdditionalIAMPolicy