使用 Kubernetes kube-proxy
附加组件
重要
建议您向集群添加 Amazon EKS 类型的附加组件,而不是自行管理类型的附加组件。如果不熟悉这些类型之间的区别,请参阅 Amazon EKS 附加组件。有关向集群中添加 Amazon EKS 附加组件的更多信息,请参阅 创建附加组件。如果您无法使用 Amazon EKS 附加组件,我们鼓励您向容器路线图 GitHub 存储库
kube-proxy
附加组件部署在 Amazon EKS 集群中的每个 Amazon EC2 节点上。该附加组件会在节点上维护网络规则,并实现与 Pods 的网络通信。该附加组件不会部署到集群中的 Fargate 节点。有关更多信息,请参阅 Kubernetes文档中的 kube-proxy
下表列出了每个 Kubernetes 版本的 Amazon EKS 附加组件类型的最新版本。
Kubernetes 版本 | 1.29 |
1.28 |
1.27 |
1.26 |
1.25 |
1.24 |
1.23 |
---|---|---|---|---|---|---|---|
v1.29.1-eksbuild.2 |
v1.28.6-eksbuild.2 |
v1.27.10-eksbuild.2 |
v1.26.13-eksbuild.2 |
v1.25.16-eksbuild.3 |
v1.24.17-eksbuild.8 |
v1.23.17-eksbuild.9 |
重要
该文档的早期版本不正确。kube-proxy
版本 v1.28.5
、v1.27.9
和 v1.26.12
不可用。
如果您自行管理此附加组件,则表中的版本可能与可用的自行管理版本不同。
每个 Amazon EKS 集群版本都有两种类型的 kube-proxy
容器映像可用:
-
默认:此映像类型以 Kubernetes 上游社区维护的基于 Debian 的 Docker 映像为基础。
-
最低:此映像类型基于 Amazon EKS Distro 维护的最低要求基本映像
,其中包含最低要求的程序包并且没有 Shell。有关更多信息,请参阅 Amazon EKS Distro 。
每个 Amazon EKS 集群版本的最新可用的自行管理 kube-proxy 容器映像版本 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
映像类型 | 1.29 |
1.28 |
1.27 |
1.26 |
1.25 |
1.24 |
1.23 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
kube-proxy (默认类型) |
只有最小类型可用 | 只有最小类型可用 | 只有最小类型可用 | 只有最小类型可用 | 只有最小类型可用 | v1.24.10-eksbuild.2 |
v1.23.16-eksbuild.2 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
kube-proxy (最低要求类型) |
v1.29.1-minimal-eksbuild.2 |
v1.28.6-minimal-eksbuild.2 |
v1.27.10-minimal-eksbuild.2 |
v1.26.13-minimal-eksbuild.2 |
v1.25.16-minimal-eksbuild.3 |
v1.24.17-minimal-eksbuild.4 |
v1.23.17-minimal-eksbuild.5 |
重要
默认镜像类型不适用于 Kubernetes 版本
1.25
及更高版本。您必须使用最小的镜像类型。更新 Amazon EKS 附加组件类型时,可以指定有效的 Amazon EKS 附加组件版本,该版本可能不是此表中列出的版本。这是因为 Amazon EKS 附加组件版本并不总是与更新此附加组件的自行管理类型时指定的容器映像版本相匹配。更新此附加组件的自行管理类型时,可指定此表中列出的有效容器映像版本。
先决条件
-
现有 Amazon EKS 集群。要部署一个角色,请参阅 开始使用 Amazon EKS。
注意事项
-
Amazon EKS 集群上的
Kube-proxy
具有与 Kubernetes 相同的兼容性和偏斜策略。 -
Kube-proxy
必须与您的Amazon EC2 节点上的kubelet
具有相同的次要版本。 -
Kube-proxy
不能高于集群控制面板的次要版本。 -
Amazon EC2 节点上的
kube-proxy
版本不能比控制面板的版本低两个以上的次要版本。例如,如果您的控制面板正在运行 Kubernetes 1.29,则kube-proxy
次要版本不能低于 1.27。 -
如果您最近将集群更新到新的 Kubernetes 次要版本,请先将 Amazon EC2 节点更新到相同的次要版本,然后再将
kube-proxy
更新到与节点相同的次要版本。
更新 kube-proxy
自行管理的附加组件
-
确认已在集群上安装自行管理类型的附加组件。将
my-cluster
替换为您集群的名称。aws eks describe-addon --cluster-name
my-cluster
--addon-name kube-proxy --query addon.addonVersion --output text如果返回错误消息,则表明集群上安装有自行管理类型的附加组件。本主题中的其余步骤用于更新自行管理类型的附加组件。如果返回版本号,则表明集群上安装有 Amazon EKS 类型的附加组件。要对其进行更新,请使用 更新附加组件 中的步骤,而不是本主题中的步骤。如果不熟悉这些附加组件类型之间的区别,请参阅 Amazon EKS 附加组件。
-
查看集群上当前安装的容器映像版本。
kubectl describe daemonset kube-proxy -n kube-system | grep Image
示例输出如下。
Image:
918309763551
.dkr.ecr.region-code
.amazonaws.com.cn/eks/kube-proxy:v1.25.6-minimal-eksbuild.2
在示例输出中,集群上安装的版本是
v1.25.6-minimal-eksbuild.2
。 -
将
和918309763551
替换为上一步中输出的值来更新region-code
kube-proxy
附加组件。将
替换为每个 Amazon EKS 集群版本的最新可用的自行管理 kube-proxy 容器映像版本表中列出的v1.26.2-minimal-eksbuild.2
kube-proxy
版本。您可以指定默认或最低要求映像类型的版本号。kubectl set image daemonset.apps/kube-proxy -n kube-system kube-proxy=
918309763551
.dkr.ecr.region-code
.amazonaws.com.cn/eks/kube-proxy:v1.26.2-minimal-eksbuild.2
示例输出如下。
daemonset.apps/kube-proxy image updated
-
确认新版本现已安装在集群上。
kubectl describe daemonset kube-proxy -n kube-system | grep Image | cut -d ":" -f 3
示例输出如下。
v1.26.2-minimal-eksbuild.2
-
如果您在同一集群中使用
x86
和Arm
节点,而且您的集群是在 2020 年 8 月 17 日之前部署的。那么请使用以下命令编辑您的kube-proxy
清单以将多个硬件架构的节点选择器纳入其中。您只需执行此操作一次。将选择器添加到清单中之后,您无需在每次更新附加组件时都进行添加。如果您的集群是在 2020 年 8 月 17 日或之后部署的,则kube-proxy
已经具有多架构功能。kubectl edit -n kube-system daemonset/kube-proxy
将以下节点选择器添加到编辑器中的文件中,然后保存文件。有关在编辑器的何处纳入此文本的示例,请参阅 GitHub 上的 CNI 清单
文件。这使 Kubernetes 能够根据节点的硬件架构提取正确的硬件镜像。 - key: "kubernetes.io/arch" operator: In values: - amd64 - arm64
-
如果您的集群最初是使用 Kubernetes 版本
1.14
或更高版本创建的,则可以跳过此步骤,因为kube-proxy
已经包含此Affinity Rule
。如果您的 Amazon EKS 集群最初是使用 Kubernetes 版本1.13
或更低版本创建的,并打算在您的集群中使用 Fargate 节点,请编辑kube-proxy
清单以将NodeAffinity
规则纳入其中,以防从 Fargate 节点上调度kube-proxy
Pods。您只需执行此编辑一次。将Affinity Rule
添加到清单中之后,您无需在每次更新附加组件时都进行添加。编辑您的kube-proxy
DaemonSet
。kubectl edit -n kube-system daemonset/kube-proxy
将以下
Affinity Rule
添加到编辑器中文件中的DaemonSet
spec
部分,然后保存文件。有关在编辑器的何处纳入此文本的示例,请参阅 GitHub 上的 CNI 清单文件。 - key: eks.amazonaws.com/compute-type operator: NotIn values: - fargate