管理kube-proxy附加项 - Amazon EKS
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

管理kube-proxy附加项

Kube-proxy在每个 Amazon EC2 节点上维护网络规则。它能够与您的容器进行网络通信。Kube-proxy未部署到 Fargate 节点。有关更多信息,请参阅 。kube-proxy在 Kubernetes 文档中。

这些区域有:kube-proxy版本与您最初与群集一起部署的 Kubernetes 版本一起部署的主版本、次版本和修补程序版本相同。有关更多信息,请参阅 Amazon EKS 平台版本

kube-proxy版本与每个 Amazon EKS 支持的集群版本一起部署
Kubernetes 版本 1.20 1.19 1.18 1.17 1.16
kube-proxy 1.20.4-平台建筑物。 1.19.6 EKS 建筑物。 1.18.8-电脑大楼 1 1.17.9-EKS 建筑物。 1.16.13 年建筑物。

如果您有一个 1.18 或更高版本的群集,但尚未添加kube-proxy亚马逊 EKS 加载项,您可以使用添加kube-proxyAmazon EKS 附加组件。如果您使用Amazon Web Services Management Console在二零一一年五月三日之后,kube-proxyAmazon EKS 附加组件已在您的集群中。如果您使用任何其他工具创建了 1.18 或更高版本的集群,并且希望使用kube-proxyAmazon EKS 附加组件,那么您必须自行将其添加到您的集群中。

如果您已将kube-proxyAmazon EKS 附加组件添加到 1.18 或更高版本的集群中,您可以使用更新kube-proxyAmazon EKS 附加组件删除kube-proxyAmazon EKS 附加组件部分。有关 Amazon EKS 附加组件的更多信息,请参阅Amazon EKS 附加组件

如果您尚未添加kube-proxyAmazon EKS 附加组件,kube-proxy附加组件仍在您的集群上运行。您可以手动更新kube-proxy附加组件使用更新kube-proxy手动加载部分.

添加kube-proxyAmazon EKS 附加组件

选择带有要用于将工具名称的选项卡以添加kube-proxyAmazon EKS 附加组件添加到您的集群。

eksctl

添加kube-proxyAmazon EKS 附加组件使用eksctl。Replacemy-cluster(包括<>)替换为您集群的名称。

eksctl create addon --name kube-proxy --cluster <my-cluster>

如果您希望加载项覆盖您使用自己的设置手动对加载项进行的任何设置更改,请添加--force选项添加到上一个命令。如果您手动为加载项指定了设置,并且没有使用--force选项,则附加组件的创建可能会失败。

Amazon Web Services Management Console

添加kube-proxyAmazon EKS 附加组件使用Amazon Web Services Management Console

  1. 从打开 Amazon EKS 控制台https://console.aws.amazon.com/eks/home#/clusters

  2. 在左侧导航窗格中,选择集群,然后选择要将kube-proxyAmazon EKS 附加组件。

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

  4. SelectAdd New

    1. Selectkube-proxy对于 来说为名称

    2. 选择版本您想使用。

    3. 如果您选择启用覆盖群集上此附加组件的现有配置,那么现有加载项的任何设置都可以用 Amazon EKS 加载项的设置覆盖。如果您未启用此选项,并且任何 Amazon EKS 加载项设置与您的现有设置冲突,则将加载项迁移到 Amazon EKS 加载项失败,并且您会收到一条错误消息来帮助您解决冲突。

    4. SelectAdd

Amazon CLI

添加kube-proxyAmazon EKS 附加组件使用Amazon CLI。Replacemy-cluster(包括<>)替换为您集群的名称。

aws eks create-addon --cluster-name my-cluster --addon-name kube-proxy

如果您希望加载项使用自己的设置覆盖对加载项所做的任何更改,请添加--resolve-conflicts OVERWRITE选项添加到上一个命令。如果您未启用此选项,并且任何 Amazon EKS 加载项设置与您的现有设置冲突,则将加载项迁移到 Amazon EKS 加载项失败,并且您会收到一条错误消息来帮助您解决冲突。

更新kube-proxyAmazon EKS 附加组件

此过程用于更新kube-proxyAmazon EKS 附加组件。如果您尚未添加kube-proxyAmazon EKS 附加组件,请在更新kube-proxy手动加载REPLACE. 亚马逊 EKS 不会自动更新kube-proxy在发布新版本或在发布后更新您的集群到一个新的库贝内特的次要版本。更新kube-proxy,则必须启动更新,然后 Amazon EKS 为您更新加载项。

重要

在更新之前,将您的集群和节点更新为新的 Kubernetes 次要版本kube-proxy设置为与已更新集群的次要版本相同的次要版本。

eksctl

更新kube-proxyAmazon EKS 附加组件使用eksctl

  1. 检查您的当前版本kube-proxyAmazon EKS 附加组件。Replace<my-cluster>(包括<>),并使用您的集群名称。

    eksctl get addon --name kube-proxy --cluster <my-cluster>

    输出

    NAME VERSION STATUS ISSUES IAMROLE UPDATE AVAILABLE kube-proxy v1.19.6-eksbuild.2 ACTIVE 0 v1.20.4-eksbuild.2
  2. 将附加组件更新为上一步的输出中返回的版本。

    eksctl update addon \ --name kube-proxy \ --version <v1.20.4-eksbuild.2> \ --cluster <my-cluster>
Amazon Web Services Management Console

更新kube-proxyAmazon EKS 附加组件使用Amazon Web Services Management Console

  1. 从打开 Amazon EKS 控制台https://console.aws.amazon.com/eks/home#/clusters

  2. 在左侧导航窗格中,选择集群,然后选择要更新kube-proxyAmazon EKS 附加组件。

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

  4. 请选择右上角的框。kube-proxy框,然后选择编辑

    1. 选择版本的 Amazon EKS 附加组件。

    2. 如果您选择启用覆盖群集上此附加组件的现有配置,那么现有加载项的任何设置都可以用 Amazon EKS 加载项的设置覆盖。如果您未启用此选项,并且任何 Amazon EKS 加载项设置与您的现有设置冲突,则将加载项迁移到 Amazon EKS 加载项将失败,您将收到一条错误消息,以帮助您解决冲突。

    3. Select更新

Amazon CLI

更新kube-proxyAmazon EKS 附加组件使用Amazon CLI

  1. 检查您的当前版本kube-proxyAmazon EKS 附加组件。Replacemy-cluster的集群名称。

    aws eks describe-addon \ --cluster-name my-cluster \ --addon-name kube-proxy \ --query "addon.addonVersion" \ --output text

    输出:

    v1.19.6-eksbuild.2
  2. 确定哪些版本的kube-proxy附加组件可用于您的集群版本。

    aws eks describe-addon-versions \ --addon-name kube-proxy \ --kubernetes-version 1.20 \ --query "addons[].addonVersions[].[addonVersion, compatibilities[].defaultVersion]" \ --output text

    输出

    v1.20.4-eksbuild.2 True v1.19.6-eksbuild.2 False v1.18.8-eksbuild.1 False

    带有的版本True下面是使用您指定的版本与新集群一起部署的默认版本。

  3. 将附加组件从上一步中的输出中更新为与群集的 Kubernetes 次要版本相同的版本。

    aws eks update-addon \ --cluster-name my-cluster \ --addon-name kube-proxy \ --addon-version v1.20.4-eksbuild.2 \ --resolve-conflicts

删除kube-proxyAmazon EKS 附加组件

从集群中删除 Amazon EKS 加载项会删除其功能。只有当您的所有窗格都不依赖于附加组件提供的功能时,才应从集群中删除该加载项。删除加载项后,如果需要,您可以再次添加它。

eksctl

删除kube-proxyAmazon EKS 附加组件使用以下命令。Replacemy-cluster(包括<>)替换为您集群的名称。

eksctl delete addon --cluster <my-cluster> --name kube-proxy
Amazon Web Services Management Console

要删除kube-proxyAmazon EKS 附加组件使用Amazon Web Services Management Console

  1. 从打开 Amazon EKS 控制台https://console.aws.amazon.com/eks/home#/clusters

  2. 在左侧导航窗格中,选择集群,然后选择要删除kube-proxyAmazon EKS 附加组件。

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

  4. 选中右上角的复选框kube-proxy框,然后选择Remove。类型kube-proxy,然后选择Remove

Amazon CLI

删除kube-proxyAmazon EKS 附加组件使用以下命令。Replacemy-cluster(包括<>)替换为您集群的名称。

aws eks delete-addon --cluster-name my-cluster --addon-name kube-proxy

更新kube-proxy手动加载

如果您有 1.17 或更早版本的群集,或者 1.18 或更高版本的群集,您尚未添加kube-proxyAmazon EKS 附加组件到,请完成以下步骤以手动更新附加组件。如果您已将kube-proxyAmazon EKS 附加组件,请在更新kube-proxyAmazon EKS 附加组件REPLACE.

重要

在更新之前,将您的集群和节点更新为新的 Kubernetes 次要版本kube-proxy设置为与已更新集群的次要版本相同的次要版本。

  1. 检查您的当前版本kube-proxy部署。

    kubectl get daemonset kube-proxy --namespace kube-system -o=jsonpath='{$.spec.template.spec.containers[:1].image}'

    输出示例

    602401143452.dkr.ecr.cn-north-1.amazonaws.com.cn/eks/kube-proxy:v1.19.6-eksbuild.2
  2. 更新kube-proxy将替换为918309763551cn-north-1替换为输出中的值。Replace1.20.4-eksbuild.2kube-proxy版本中列出的kube-proxy版本与每个 Amazon EKS 支持的集群版本一起部署表中的集群版本。

    kubectl set image daemonset.apps/kube-proxy \ -n kube-system \ kube-proxy=918309763551.dkr.ecr.cn-north-1.amazonaws.com.cn/eks/kube-proxy:v1.20.4-eksbuild.2
  3. (可选)如果您在同一群集中使用 x86 和 Arm 节点,并且您的集群已在 2020 年 8 月 17 日之前部署。然后,编辑您的kube-proxy清单以包含多个硬件体系结构的节点选择器,并使用以下命令。这是一次性操作。将选择器添加到清单后,无需在每次更新时都执行此操作。如果您的集群是在 2020 年 8 月 17 日或之后部署的,则kube-proxy已经具有多体系结构功能。

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

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

    - key: "beta.kubernetes.io/arch" operator: In values: - amd64 - arm64
  4. (可选)如果您的集群最初是使用 Kubernetes v1.14 或更高版本创建的,则可以跳过此步骤,因为kube-proxy已经包含了这个Affinity Rule。如果您最初使用 Kubernetes 版本 1.13 或更早版本创建了 Amazon EKS 集群,并打算使用 Fargate 节点,请编辑您的kube-proxy清单以包含NodeAffinity规则来防止kube-proxy从 Fargate 节点上调度的窗格。这是一次性编辑。一旦您添加了Affinity Rule添加到您的清单,您不需要每次升级集群时执行此操作。编辑您的kube-proxy守护者

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

    添加以下内容Affinity Rule添加到Daemonset spec部分,然后保存该文件。有关在编辑器中包含此文本的示例,请参阅CNI 清单GitHub 上的 “File”。

    - key: eks.amazonaws.com/compute-type operator: NotIn values: - fargate