更新集群 - Amazon EKS
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

更新集群

您可以将现有集群更新到新的 Kubernetes 版本或为集群配置托管附加组件。

更新 Amazon EKS 集群 Kubernetes 版本

当 Amazon EKS 中有新的 Kubernetes 版本可用时,您可以将集群更新到最新版本。

重要

我们建议您在更新到新的 Kubernetes 版本之前,可以查看Amazon EKS Kubernetes 版本中的信息和本主题中的更新步骤。

新的 Kubernetes 版本引入了重大更改。因此,我们建议您在更新生产集群之前针对新的 Kubernetes 版本测试您的应用程序的行为。您可以通过构建持续集成工作流程来测试应用程序行为,然后再移至新的 Kubernetes 版本来实现这一点。

更新过程包括 Amazon EKS 使用更新后的 Kubernetes 版本启动新的 API 服务器节点来替换现有节点。Amazon EKS 对这些新节点执行标准基础设施和就绪运行状况检查以确认网络流量,以验证它们是否按预期运行。如果任意一项检查失败,Amazon EKS 将恢复基础设施部署,且您的集群保留为先前的 Kubernetes 版本。正在运行的应用程序不受影响,并且您的集群绝不会留在非确定性或不可恢复状态。Amazon EKS 定期备份托管集群,并且存在机制来在必要时恢复集群。我们会不断地评估和改进我们的 Kubernetes 基础设施管理流程。

要更新集群,Amazon EKS 需要您创建集群时提供的子网中的两到三个空闲 IP 地址。如果这些子网没有可用的 IP 地址,则更新可能会失败。此外,如果已删除在集群创建期间提供的任何子网或安全组,则集群更新过程可能会失败。

注意

即使 Amazon EKS 运行高度可用的控制层面,您可能也会在更新期间遇到次要服务中断。例如,如果您尝试在 API 服务器终止并由运行新版 Kubernetes 的新 API 服务器替换前后连接到 API 服务器,则可能遇到 API 调用错误或连接问题。如果出现这种情况,请重试您的 API 操作直至成功。

Amazon EKS 不会在您更新集群时修改任何 Kubernetes 附加组件。更新集群后,建议您将附加组件更新为下表中列出的您正在更新到的新 Kubernetes 版本。完成此操作的步骤包含在更新过程中。

Kubernetes 版本 1.18 1.17 1.16 1.15
Amazon VPC CNI 插件 1.7.5 1.7.5 1.7.5 1.7.5
DNS (CoreDNS) 1.7.0 1.6.6 1.6.6 1.6.6
KubeProxy 1.18.9 1.17.12 1.16.15 1.15.12

如果您的集群使用的是未在上表中列出的其他附加组件,请在更新集群后将这些附加组件更新为最新的兼容版本。

更新现有集群

更新集群和 Kubernetes 附加组件。

更新现有集群

  1. 将集群控制层面的 Kubernetes 版本与节点的 Kubernetes 版本进行比较。

    • 使用以下命令获取集群控制层面的 Kubernetes 版本。

      kubectl version --short
    • 使用以下命令获取节点的 Kubernetes 版本。

      kubectl get nodes

    如果您的节点比控制层面早一个 Kubernetes 次要版本,则在更新集群的 Kubernetes 版本之前,必须将节点升级到更新的 Kubernetes 次要版本。有关更多信息,请参阅 Kubernetes 文档中的 Kubernetes 版本和版本倾斜支持政策

    我们建议您在集群更新之前将节点更新为集群的当前更新前 Kubernetes 次要版本。您的节点不得运行比控制层面更高的 Kubernetes 版本。例如,如果您的控制层面运行的是版本 1.17 并且您的节点运行的是版本 1.15,请在将集群的 Kubernetes 版本更新为 1.18 之前将节点更新为版本 1.16 或 1.17(推荐)。有关更多信息,请参阅自管理节点更新

  2. 默认情况下,在 Amazon EKS 集群上启用 pod 安全策略准入控制器。在更新集群之前,请确保在更新之前已制定适当的 Pod 安全策略,以避免出现任何问题。您可以使用以下命令检查默认策略:

    kubectl get psp eks.privileged

    如果您收到以下错误,请参阅安装或恢复默认 Pod 安全策略,然后再继续操作。

    Error from server (NotFound): podsecuritypolicies.extensions "eks.privileged" not found
  3. 如果您最初在 Kubernetes 1.17 或更早版本上部署了集群,则可能需要从 CoreDNS 清单中删除已弃用的期限。

    1. 检查 CoreDNS 清单是否具有该行。

      kubectl get configmap coredns -n kube-system -o yaml |grep upstream

      如果没有返回输出,则清单没有该行,您可以跳到下一步以更新集群。如果返回输出,则您需要删除该行。

    2. 编辑 configmap,删除文件中包含单词 upstream 的行。请勿更改文件中的任何其他内容。删除行后,保存更改。

      kubectl edit configmap coredns -n kube-system -o yaml
  4. 使用 eksctl、AWS 管理控制台 或 AWS CLI 更新您的集群。

    重要
    • 由于 Amazon EKS 运行高度可用的控制层面,因此,您可以一次只更新一个次要版本。请参阅 Kubernetes 版本和版本倾斜支持政策以了解此要求背后的原理。因此,如果您的当前版本为 1.16 并且您想要更新到 1.18,则必须先将集群更新为 1.17,然后将其从 1.17 更新为 1.18。

    • 在更新之前,请确保托管节点和 kubelet 节点上的 Fargate 与控制层面位于相同的 Kubernetes 版本上。我们还建议您的自管理节点与控制层面处于同一版本,不过它们最多可以在控制层面的当前版本之后的一个版本。

    • 如果您的 AWS Fargate Pod 的 kubelet 次要版本低于 1.16,则集群的更新从 1.16 更新为 1.17 将失败。在将集群从 1.16 更新为 1.17 之前,您需要回收 Fargate Pod,以便它们的 kubelet 在尝试将集群更新为 1.17 之前为 1.16。

    • 您可能需要更新某些已部署的资源,然后才能更新到 1.16。有关更多信息,请参阅 Kubernetes 1.16 更新先决条件.

    • [ eksctl ]

      此过程需要 eksctl 版本 0.35.0 或更高版本。可以使用以下命令来查看您的 版本:

      eksctl version

      有关安装或更新 eksctl 的更多信息,请参阅安装或升级 eksctl。您只能使用 eksctl 更新使用 eksctl 创建的集群。

      使用以下命令更新您的 Amazon EKS 控制层面的 Kubernetes 版本(比当前版本高的一个次要版本)。将 <my-cluster>(包括 <>)替换为您的集群名称。

      eksctl upgrade cluster --name <my-cluster> --approve

      更新需要几分钟才能完成。

    • [ AWS 管理控制台 ]

      1. Open the Amazon EKS console at https://console.amazonaws.cn/eks/home#/clusters.

      2. 选择要更新的集群的名称,然后选择 Update cluster version (更新集群版本).

      3. 对于 Kubernetes version (Kubernetes 版本),选择您的集群要更新到的版本并选择 Update (更新).

      4. 对于 Cluster name (集群名称),键入您的集群的名称并选择 Confirm (确认).

        更新需要几分钟才能完成。

    • [ AWS CLI ]

      1. 使用以下 AWS CLI 命令更新集群。将 <example-values>(包括 <>)替换为您自己的值。

        aws eks update-cluster-version \ --region <region-code> \ --name <my-cluster> \ --kubernetes-version <1.18>

        输出:

        { "update": { "id": "<b5f0ba18-9a87-4450-b5a0-825e6e84496f>", "status": "InProgress", "type": "VersionUpdate", "params": [ { "type": "Version", "value": "1.18" }, { "type": "PlatformVersion", "value": "eks.1" } ], ... "errors": [] } }
      2. 使用以下命令监控您的集群更新的状态。使用上一个命令返回的集群名称和更新 ID。当状态显示为 时,您的更新将完成。Successful. 更新需要几分钟才能完成。

        aws eks describe-update \ --region <region-code> \ --name <my-cluster> \ --update-id <b5f0ba18-9a87-4450-b5a0-825e6e84496f>

        输出:

        { "update": { "id": "b5f0ba18-9a87-4450-b5a0-825e6e84496f", "status": "Successful", "type": "VersionUpdate", "params": [ { "type": "Version", "value": "1.18" }, { "type": "PlatformVersion", "value": "eks.1" } ], ... "errors": [] } }
  5. 修补 kube-proxy 守护程序集以使用对应于您集群的区域和当前 Kubernetes 版本的映像(在此示例中为 1.18.9).

    Kubernetes 版本 1.18 1.17 1.16 1.15
    KubeProxy 1.18.9 1.17.12 1.16.15 1.15.12
    1. 首先,检索您当前的 kube-proxy 映像:

      kubectl get daemonset kube-proxy --namespace kube-system -o=jsonpath='{$.spec.template.spec.containers[:1].image}'
    2. 通过从上一步中获取输出并将版本标签替换为集群的建议 kube-proxy 版本,将 kube-proxy 更新到建议的版本:

      kubectl set image daemonset.apps/kube-proxy \ -n kube-system \ kube-proxy=<602401143452.dkr.ecr.us-west-2.amazonaws.com>/eks/kube-proxy:v<1.18.9>-eksbuild.1

      您的账户 ID 和区域可能与上述示例不同。

    3. (可选)如果您使用的是同一集群中的 x86 和 Arm 节点,并且您的集群是在 2020 年 8 月 17 日之前部署的。然后,使用以下命令编辑 kube-proxy 清单,以包含适用于多个硬件架构的节点选择器。这是一个一次性操作。在将选择器添加到清单后,不需要在每次更新时都执行该操作。如果您的集群是在 2020 年 8 月 17 日或之后部署的,则 kube-proxy 已经支持多架构。

      kubectl edit -n kube-system daemonset/kube-proxy

      在编辑器中将以下节点选择器添加到该文件中,然后保存该文件。有关在编辑器中包含此文本的示例,请参阅 GitHub 上的 CNI 清单文件。这使 Kubernetes 能够根据节点的硬件架构提取正确的硬件映像。

      - key: "beta.kubernetes.io/arch" operator: In values: - amd64 - arm64
  6. 检查集群的 DNS 提供商。使用 Kubernetes 版本 1.10 创建的集群作为默认 DNS 和服务发现提供程序随 kube-dns 一起提供。如果已将 1.10 集群更新到更高版本,要使用 CoreDNS for DNS 和服务发现功能,必须安装 CoreDNS 并删除 kube-dns.

    要检查您的集群是否已运行 CoreDNS,请使用以下命令。

    kubectl get pod -n kube-system -l k8s-app=kube-dns

    如果输出在 pod 名称中显示 coredns,则表示您的集群已在运行 CoreDNS。如果未安装,请参阅安装或升级 CoreDNS以在集群上安装 CoreDNS,请将其更新为推荐的版本,返回此处,然后跳过步骤 7-8。

  7. 检查集群的 coredns 部署的当前版本。

    kubectl describe deployment coredns --namespace kube-system | grep Image | cut -d "/" -f 3

    输出:

    coredns:v<1.1.3>

    建议的对应 Kubernetes 版本的 coredns 版本如下所示:

    Kubernetes 版本 1.18 1.17 1.16 1.15
    CoreDNS 1.7.0 1.6.6 1.6.6 1.6.6
  8. 如果当前 coredns 版本是 1.5.0 或更高版本,但早于推荐版本,请跳过此步骤。如果当前版本早于 1.5.0,则需要修改 coredns 的配置映射以使用 forward 插件,而不是 proxy 插件。

    1. 使用以下命令打开 configmap。

      kubectl edit configmap coredns -n kube-system
    2. 将以下行中的 proxy 替换为 forward。保存该文件并退出编辑器。

      proxy . /etc/resolv.conf
  9. 检索您当前的 coredns 映像:

    kubectl get deployment coredns --namespace kube-system -o=jsonpath='{$.spec.template.spec.containers[:1].image}'
  10. 通过获取上一步中的输出并将 <1.7.0>(包括 <>)替换为集群的建议 coredns 版本,将 coredns 更新到建议的版本:

    kubectl set image --namespace kube-system deployment.apps/coredns \ coredns=<602401143452.dkr.ecr.us-west-2.amazonaws.com>/eks/coredns:v<1.7.0>-eksbuild.1
  11. (可选)如果您使用的是同一集群中的 x86 和 Arm 节点,并且您的集群是在 2020 年 8 月 17 日之前部署的,则可以使用以下命令编辑 coredns 清单以包含适用于多个硬件架构的节点选择器。这是一个一次性操作。在将选择器添加到清单后,不需要在每次更新时都执行该操作。如果您的集群是在 2020 年 8 月 17 日或之后部署的,则 coredns 已经支持多架构。

    kubectl edit -n kube-system deployment/coredns

    在编辑器中将以下节点选择器添加到该文件中,然后保存该文件。有关在编辑器中包含此文本的位置的示例,请参阅 GitHub 上的 CNI 清单文件。

    - key: "beta.kubernetes.io/arch" operator: In values: - amd64 - arm64
  12. 检查 Kubernetes 的集群的 Amazon VPC CNI 插件版本。使用以下命令输出您集群的 CNI 版本。

    kubectl describe daemonset aws-node --namespace kube-system | grep Image | cut -d "/" -f 2

    您可以在一个 (扩展) 代码行中执行所有这些操作:

    amazon-k8s-cni:<1.6.3>

    如果您的 CNI 版本低于 1.7.5,则使用下面的适当命令将 CNI 版本更新为最新建议版本:

    • 中国(北京) (cn-north-1) 或 中国 (宁夏) (cn-northwest-1

      kubectl apply -f https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/v1.7.5/config/v1.7/aws-k8s-cni-cn.yaml
  13. (可选)如果在更新集群之前将 Kubernetes Cluster Autoscaler 部署到集群,请将 Cluster Autoscaler 更新为与您更新到的 Kubernetes 主版本和次要版本匹配的最新版本。

    重要

    您不能将 Kubernetes Cluster Autoscaler 用于 Arm。

    1. 在 Web 浏览器中打开 Cluster Autoscaler 版本页面,找到与您的集群的 Kubernetes 主版本和次要版本匹配的最新 Cluster Autoscaler 版本。例如,如果您集群的 Kubernetes 版本是 1.18,则查找以 1.18. 开头的最新 Cluster Autoscaler 版本。记录该版本的语义版本号 (<1.18.n>) 以在下一步中使用。

    2. 使用以下命令,将 Cluster Autoscaler 映像标签设置为您在上一步中记录的版本。将 <1.18.n> 替换为您自己的值。您可以将 us 替换为 <asia><eu>

      kubectl -n kube-system set image deployment.apps/cluster-autoscaler cluster-autoscaler=<us>.gcr.io/k8s-artifacts-prod/autoscaling/cluster-autoscaler:v<1.18.n>
      注意

      根据所需的版本,您可能需要将以前的地址更改为 gcr.io/google-containers/cluster-autoscaler:v1.<n.n> . 映像地址在版本页面上列出。

  14. (仅限具有 GPU 节点的集群)如果您的集群具有支持 GPU 的节点组(例如,p3.2xlarge),则必须使用以下命令在您的集群上更新适用于 Kubernetes 的 NVIDIA 设备插件守护程序集。

    kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/v0.6.0/nvidia-device-plugin.yml
  15. 集群更新完成后,将节点更新到已更新集群的同一 Kubernetes 版本。有关更多信息,请参阅 自管理节点更新更新托管节点组. 在 Fargate 上启动的任何新 pod 都将具有与您的集群版本匹配的 kubelet 版本。现有 Fargate Pod 不会更改。

Kubernetes 1.16 更新先决条件

Kubernetes 1.15 更改日志在 1.16 中删除的弃用的 API:以下是您需要了解的内容文档所述,如果您有现有的集群,则在将集群更新到 1.16 之前,需要对以下已部署的资源进行 API 更改。

警告

如果在更新到 1.16 之前未更改这些 API,则在更新完成后,工作负载将失败。

  • NetworkPolicy 资源将不再从版本 1.16 的 extensions/v1beta1 中提供。迁移到使用 networking.k8s.io/v1 API,从版本 1.8 开始提供。可以通过 networking.k8s.io/v1 API 检索现有的持久数据。

  • PodSecurityPolicy 资源将不再从版本 1.16 的 extensions/v1beta1 中提供。迁移到 policy/v1beta1 API,从版本 1.10 开始提供。可以通过 policy/v1beta1 API 检索现有的持久数据。

  • DaemonSet、Deployment、StatefulSet 和 ReplicaSet 资源将不再从版本 1.16 中的 extensions/v1beta1apps/v1beta1apps/v1beta2 提供。迁移到 apps/v1 API,从版本 1.9 开始提供。可以通过 apps/v1 API 检索现有的持久数据。例如,要转换当前使用 apps/v1beta1 的 Deployment,请输入以下命令。

    kubectl convert -f ./<my-deployment.yaml> --output-version apps/v1
    注意

    上一个命令使用的默认值可能与当前清单文件中设置的值不同。要了解有关特定资源的更多信息,请参阅 Kubernetes API 参考.

如果您最初使用 Kubernetes 版本 1.11 或更早版本创建了 Amazon EKS 集群,但尚未从 --resource-container 守护程序集中删除 kube-proxy 标志,则更新到 Kubernetes 1.16 将导致 kube-proxy 失败。此标志在 Kubernetes 1.16 中已被弃用。有关更多信息,请参阅 kube-proxyKubernetes 1.16 弃用和删除 中的 。在更新到 Kubernetes 1.16 之前,您必须删除此标志。

在更新到 1.16 之前需要执行的操作

  • 更改您的 YAML 文件以引用新的 API。

  • 更新自定义集成和控制器以调用新的 API。

  • 确保您使用任何第三方工具的更新版本,例如入口控制器、持续交付系统以及调用新 API 的其他工具。

    要轻松检查集群中已弃用的 API 使用情况,请确保已启用 audit 控制层面日志,并指定 v1beta 作为事件的筛选条件。所有替换 API 都位于高于 1.10 的 Kubernetes 版本中。任何受支持 Amazon EKS 版本的应用程序现在都可以开始使用更新的 API。

  • 如果您的集群最初是使用 Kubernetes 1.11 或更早版本部署的,请从 --resource-container="" DaemonSet 中删除 kube-proxy 标志,或者使用 kube-proxy 配置文件(推荐)。要确定您的当前 kube-proxy 版本是否具有该标记,请输入以下命令。

    kubectl get daemonset kube-proxy --namespace kube-system -o yaml | grep 'resource-container='

    如果您未收到任何输出,则无需删除任何内容。如果您收到类似于 --resource-container="" 的输出,则您需要删除该标记。输入以下命令以编辑当前 kube-proxy 配置。

    kubectl edit daemonset kube-proxy --namespace kube-system

    在编辑器处于打开状态时,删除 --resource-container="" 行并保存文件。我们建议您开始使用 kube-proxy 配置文件。为此,请下载以下清单。

    curl -o kube-proxy-daemonset.yaml https://amazon-eks.s3-us-west-2.amazonaws.com/cloudformation/2020-06-10/kube-proxy-daemonset.yaml

    使用以下命令确定集群的终端节点。

    aws eks describe-cluster \ --name <cluster-name> \ --region <region-code> \ --query 'cluster.endpoint' \ --output text

    输出如下所示:

    https://<A89DBB2140C8AC0C2F920A36CCC6E18C>.sk1.<region-code>.eks.amazonaws.com

    编辑您下载的 kube-proxy-daemonset.yaml 文件。在编辑器中,将 <MASTER_ENDPOINT>(包括 <>)替换为上一个命令的输出。将 <REGION> 替换为您的集群的区域。在同一行上,如有必要,请将版本替换为集群的版本。使用以下命令应用该文件。

    kubectl apply -f kube-proxy-daemonset.yaml

配置 Amazon EKS 附加组件

附加组件是 Kubernetes 运行软件,为您的 AWS 集群提供可观察性、扩展、联网和 Amazon EKS 云资源集成等功能。您可以自行管理附加组件,或者对于运行 Kubernetes 版本 1.18 以及平台版本 Amazon EKS 或更高版本的集群,也可以让 Amazon EKS 通过 eks.3 API 控制附加组件的启动和版本。Amazon EKS 附加组件使用 Kubernetes Server-Side Apply (服务器端应用) 功能,该功能仅适用于 Kubernetes 版本 1.18 或更高版本。有关更多信息,请参阅 Kubernetes 文档中的服务器端应用

使用 Amazon EKS配置 AWS 管理控制台 附加组件

  1. Open the Amazon EKS console at https://console.amazonaws.cn/eks/home#/clusters.

  2. 在左侧导航窗格中,选择 Clusters (集群),然后选择要为其配置 Amazon EKS 插件的集群的名称。

  3. 选择配置选项卡,然后选择附加组件选项卡。

  4. 配置附加组件。要添加新的 Amazon EKS 附加组件,请选择 Add new (添加新组件)。要更改现有 Amazon EKS 附加组件,请选择该附加组件,然后选择 Edit (编辑)。要删除附加组件,请选择该附加组件,然后选择 Remove。如果删除附加组件,还会将其从集群中删除。您始终可以手动将附加组件添加回集群,但请注意,删除并添加附加附加组件可能会导致集群出现服务中断。

    1. 选择要添加或编辑的 附加项的 Name (名称)Amazon EKS。

    2. 选择要使用的 插件的 Version (版本)Amazon EKS。

    3. 选择您希望附加项运行的 Service account role (服务账户角色)。如果未选择现有 IAM 角色,则使用 Amazon EKS 节点 IAM 角色。但是,我们建议指定您自己的角色,以便为节点 IAM 角色分配的值不超过所需的最低权限。

      必须为您选择的任何角色分配附加项所需的权限。例如,您为 vpc-cni 附加组件指定的角色必须分配了 AmazonEKS_CNI_Policy IAM 策略,并且角色的信任关系中必须有唯一设置。有关更多信息,请参阅 使用 IAM 创建 CNI 插件 AWS 管理控制台 角色. 如果附加项使用的 Kubernetes 服务账户当前未使用您指定的 IAM 角色进行注释,则 API 将使用 IAM 角色为您对该服务账户进行注释。

      重要

      要指定 IAM 角色,您的集群必须具有 IAM OpenID Connect (OIDC) 提供商。要创建 OIDC 提供商,请参阅为集群创建 IAM OIDC 提供商

    4. 如果您当前已将附加项部署到集群,则 Amazon EKS 将自行进行管理,并希望 管理附加项,您可以在集群上为此附加项启用覆盖现有配置。如果启用此选项,则现有附加项的任何设置都可能被 Amazon EKS 附加项的设置覆盖。如果您当前已将附加项部署到集群,并且未启用此选项,并且任何 Amazon EKS 附加项设置与您的现有设置冲突,则将附加项迁移到 Amazon EKS 附加项将失败,并且您将收到一条错误消息来帮助您解决冲突。

    5. 选择 Add (添加)Update (更新)

使用 Amazon EKS 配置 eksctl 附加组件

<example values>(包括 <>)替换为您自己的值。

  1. 向集群添加 Amazon EKS 附加组件。

    1. 确定哪些 Amazon EKS 附加组件可用于您的集群。

      eksctl utils describe-addon-versions --cluster <name-of-your-cluster>
    2. 将 Amazon EKS 附加组件添加到您的集群。指定 <name-of-addon> 时,指定从上一个命令返回的名称。如果集群上已安装附加组件,--force 选项会覆盖任何现有配置,但您需要自行管理。您可以指定 IAM 角色和/或策略的 ARN。然后,附加项的 Kubernetes 服务账户会使用该角色进行注释。如果您未指定现有角色或策略,eksctl 将创建一个默认角色并为您附加必要的策略。

      eksctl create addon --name <name--of-addon-from-previous-command> --cluster <name-of-your-cluster> --force
  2. 您可以将附加组件更新到较新版本。使用 eksctl update addon -h 查看其他更新选项。

    1. 确定哪些版本可用于附加项。

      eksctl utils describe-addon-versions --name <name-of-addon> --cluster <name-of-your-cluster>
    2. 将附加组件更新到较新版本。

      eksctl update addon --name <name-from-previous-command> --version <version-from-previous-command> --cluster <name-of-your-cluster>
  3. 从集群中删除 Amazon EKS 附加组件。

    1. 查看集群当前已启用哪些附加组件。

      eksctl get addons --cluster <name-of-your-cluster>
    2. 从集群中删除 Amazon EKS 附加组件。删除附加项还会删除与其关联的任何 IAM 角色。

      eksctl delete addon --cluster <name-of-your-cluster> --name <addon-name-from-previous-command>