适用于 Kubernetes 的 Amazon VPC CNI 插件升级 - Amazon EKS

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

适用于 Kubernetes 的 Amazon VPC CNI 插件升级

当您启动 Amazon EKS 集群时,适用于 Kubernetes 的 Amazon VPC CNI 插件部署到您的集群。该插件的绝对最新版本可在GitHub,然后将新群集切换为使用它。发布新版本时,Amazon EKS 不会自动升级您集群上的 CNI 插件。要获取现有集群上 CNI 插件的新版本,您必须手动升级该插件。

我们建议使用最新的 1.7 修补程序版本。您可以查看最新修补版本,查看插件可用的不同版本,并阅读每个版本的发行说明GitHub。对于 1.7.0 版及更高版本,privileged容器功能已从 CNI 容器(aws-node)。该窗格具有NET_ADMIN功能中的securityContext capabilities,这是aws-node要添加的容器iptables、路由和规则来设置容器网络。一个init容器也添加到aws-node窗格,该窗格具有privileged功能,以便它可以设置反向路径过滤器并在aws-node窗格启动。

重要

如果已将自定义容器安全策略分配给aws-nodeKubernetes 服务帐户用于aws-node窗格,则策略必须具有NET_ADMINallowedCapabilities部分以及hostNetwork: trueprivileged: true在策略的spec。有关更多信息,请参阅 Pod 安全策略

请使用以下过程查看您的 CNI 插件版本并升级到最新建议版本。

查看适用于 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.6.3,此版本早于 1.7 的最新补丁。使用以下过程升级 CNI。

升级适用于 Kubernetes 的 Amazon VPC CNI 插件

  • 如果您的 CNI 版本低于次要版本 1.7 的最新修补程序,并且您正在自行管理插件,则使用以下适当的命令将 CNI 版本更新为次要版本 1.7 的最新修补程序。您可以查看最新修补版本(位于 GitHub 上)。如果您的集群正在运行 Kubernetes1.18或更高版本eks.3平台版本或更高版本,并且插件由 Amazon EKS 管理,然后要更新插件,请参阅配置 Amazon EKS 附加组件

    重要

    在应用新版本的清单时,您对集群上的插件默认设置所做的任何更改都可以被默认设置覆盖。要防止丢失自定义设置,请下载清单,根据需要更改默认设置,然后将修改后的清单应用到您的集群。

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

      kubectl apply -f https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/release-1.7/config/v1.7/aws-k8s-cni-cn.yaml
    • AWS GovCloud(美国东部)(us-gov-east-1

      kubectl apply -f https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/release-1.7/config/v1.7/aws-k8s-cni-us-gov-east-1.yaml
    • AWS GovCloud(美国西部)(us-gov-west-1

      kubectl apply -f https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/release-1.7/config/v1.7/aws-k8s-cni-us-gov-west-1.yaml
    • 对于所有其他区域

      • 下载清单文件。

        curl -o aws-k8s-cni.yaml https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/release-1.7/config/v1.7/aws-k8s-cni.yaml
      • 如有必要,将<region-code>,然后运行修改后的命令以替换文件中的区域(当前为us-west-2)。

        sed -i.bak -e 's/us-west-2/<region-code>/' aws-k8s-cni.yaml
      • 如有必要,将<account>在以下命令中,帐户来自Amazon EKS 附加容器映像地址,然后运行修改后的命令以替换文件中的帐户(当前为602401143452)。

        sed -i.bak -e 's/602401143452/<account>/' aws-k8s-cni.yaml
      • 将清单文件应用于集群。

        kubectl apply -f aws-k8s-cni.yaml