帮助改进此页面
要帮助改进本用户指南,请选择位于每个页面右侧窗格中的在 GitHub 上编辑此页面链接。
为混合节点功能配置代理
如果在本地环境中使用代理服务器来处理离开数据中心或边缘环境的流量,则需要单独将节点和集群配置为使用您的代理服务器。
- 集群
-
在集群上,您需要将
kube-proxy配置为使用您的代理服务器。创建 Amazon EKS 集群后,您必须配置kube-proxy。 - Nodes
-
在节点上,您必须将操作系统、
containerd、kubelet和 Amazon SSM Agent 配置为使用您的代理服务器。您可以在操作系统映像构建过程中进行这些更改,也可在每个混合节点上运行nodeadm init之前进行这些更改。
节点级别配置
您必须在操作系统映像中或在每个混合节点上运行 nodeadm init 之前应用以下配置。
containerd 代理配置
containerd 是 Kubernetes 的默认容器管理运行时。如果使用代理来访问互联网,则必须配置 containerd,以确保其能够提取 Kubernetes 和 Amazon EKS 所需的容器镜像。
在每个混合节点的 /etc/systemd/system/containerd.service.d 目录中,创建一个名为 http-proxy.conf 的文件,其中应包含以下内容。请将 proxy-domain 和 port 替换为环境的相应值。
[Service] Environment="HTTP_PROXY=http://proxy-domain:port" Environment="HTTPS_PROXY=http://proxy-domain:port" Environment="NO_PROXY=localhost"
来自用户数据的 containerd 配置
需要为此文件创建 containerd.service.d 目录。您要重新加载 systemd,才能在不重新启动的情况下获取配置文件。在 AL2023 中,该服务在脚本执行时可能已经在运行,因此还需要重新启动服务。
mkdir -p /etc/systemd/system/containerd.service.d echo '[Service]' > /etc/systemd/system/containerd.service.d/http-proxy.conf echo 'Environment="HTTP_PROXY=http://proxy-domain:port"' >> /etc/systemd/system/containerd.service.d/http-proxy.conf echo 'Environment="HTTPS_PROXY=http://proxy-domain:port"' >> /etc/systemd/system/containerd.service.d/http-proxy.conf echo 'Environment="NO_PROXY=localhost"' >> /etc/systemd/system/containerd.service.d/http-proxy.conf systemctl daemon-reload systemctl restart containerd
kubelet 代理配置
kubelet 是在每个 Kubernetes 节点上运行的 Kubernetes 节点代理,负责管理该节点以及在该节点上运行的容器组(pod)。如果在本地环境中使用代理,则必须配置 kubelet,以确保其能够与 Amazon EKS 集群的公共或私有端点通信。
在每个混合节点的 /etc/systemd/system/kubelet.service.d/ 目录中,创建一个名为 http-proxy.conf 的文件,其中应包含以下内容。请将 proxy-domain 和 port 替换为环境的相应值。
[Service] Environment="HTTP_PROXY=http://proxy-domain:port" Environment="HTTPS_PROXY=http://proxy-domain:port" Environment="NO_PROXY=localhost"
来自用户数据的 kubelet 配置
必须为此文件创建 kubelet.service.d 目录。您要重新加载 systemd,才能在不重新启动的情况下获取配置文件。在 AL2023 中,该服务在脚本执行时可能已经在运行,因此还需要重新启动服务。
mkdir -p /etc/systemd/system/kubelet.service.d echo '[Service]' > /etc/systemd/system/kubelet.service.d/http-proxy.conf echo 'Environment="HTTP_PROXY=http://proxy-domain:port"' >> /etc/systemd/system/kubelet.service.d/http-proxy.conf echo 'Environment="HTTPS_PROXY=http://proxy-domain:port"' >> /etc/systemd/system/kubelet.service.d/http-proxy.conf echo 'Environment="NO_PROXY=localhost"' >> /etc/systemd/system/kubelet.service.d/http-proxy.conf systemctl daemon-reload systemctl restart kubelet
ssm 代理配置
ssm 是可用于初始化混合节点的凭证提供程序之一。ssm 负责完成 AWS 身份验证并生成将由 kubelet 使用的临时凭证。如果在本地环境中使用代理,并在节点上将 ssm 作为凭证提供程序,则必须配置 ssm,以确保其能够与 Amazon SSM 服务端点通信。
在每个混合节点的以下路径中创建一个名为 http-proxy.conf 文件,具体取决于操作系统
-
Ubuntu -
/etc/systemd/system/snap.amazon-ssm-agent.amazon-ssm-agent.service.d/http-proxy.conf -
Amazon Linux 2023 和 Red Hat Enterprise Linux –
/etc/systemd/system/amazon-ssm-agent.service.d/http-proxy.conf
使用以下内容填充该文件。请将 proxy-domain 和 port 替换为环境的相应值。
[Service] Environment="HTTP_PROXY=http://proxy-domain:port" Environment="HTTPS_PROXY=http://proxy-domain:port" Environment="NO_PROXY=localhost"
来自用户数据的 ssm 配置
必须为该文件创建 ssm systemd 服务文件目录。目录路径取决于节点上使用的操作系统。
-
Ubuntu -
/etc/systemd/system/snap.amazon-ssm-agent.amazon-ssm-agent.service.d -
Amazon Linux 2023 和 Red Hat Enterprise Linux –
/etc/systemd/system/amazon-ssm-agent.service.d
请替换以下重启命令中的 systemd 服务名称,具体取决于节点上使用的操作系统
-
Ubuntu -
snap.amazon-ssm-agent.amazon-ssm-agent -
Amazon Linux 2023 和 Red Hat Enterprise Linux –
amazon-ssm-agent
mkdir -psystemd-service-file-directory echo '[Service]' > [.replaceable]#systemd-service-file-directory/http-proxy.conf echo 'Environment="HTTP_PROXY=http://[.replaceable]#proxy-domain:port"' >>systemd-service-file-directory/http-proxy.conf echo 'Environment="HTTPS_PROXY=http://[.replaceable]#proxy-domain:port"' >> [.replaceable]#systemd-service-file-directory/http-proxy.conf echo 'Environment="NO_PROXY=localhost"' >> [.replaceable]#systemd-service-file-directory/http-proxy.conf systemctl daemon-reload systemctl restart [.replaceable]#systemd-service-name
操作系统代理配置
如果使用代理来访问互联网,则必须对操作系统进行配置,以确保能够从操作系统的软件包管理器中提取混合节点依赖项。
Ubuntu
-
通过以下命令配置
snap以使用代理:sudo snap set system proxy.https=http://proxy-domain:portsudo snap set system proxy.http=http://proxy-domain:port -
要为
apt启用代理,请在/etc/apt/目录中创建一个名为apt.conf的文件。请将代理域和端口替换为环境的相应值。Acquire::http::Proxy "http://proxy-domain:port"; Acquire::https::Proxy "http://proxy-domain:port";
Amazon Linux 2023
-
配置
dnf以使用代理。创建一个具有环境的代理域和端口值的文件/etc/dnf/dnf.conf。proxy=http://proxy-domain:port
Red Hat Enterprise Linux
-
配置
yum以使用代理。创建一个具有环境的代理域和端口值的文件/etc/yum.conf。proxy=http://proxy-domain:port
IAM Roles Anywhere 代理配置
在使用带有 enableCredentialsFile 标志的 IAM Roles Anywhere 时,IAM Roles Anywhere 凭证提供商服务负责刷新凭证(请参阅EKS 容器组身份代理)。如果在本地环境中使用代理,则必须配置该服务,以确保其能够与 IAM Roles Anywhere 端点通信。
在 /etc/systemd/system/aws_signing_helper_update.service.d/ 目录中,创建一个名为 http-proxy.conf 的包含以下内容的文件。请将 proxy-domain 和 port 替换为环境的相应值。
[Service] Environment="HTTP_PROXY=http://proxy-domain:port" Environment="HTTPS_PROXY=http://proxy-domain:port" Environment="NO_PROXY=localhost"
集群范围配置
本节中的配置必须在创建 Amazon EKS 集群之后并且在每个混合节点上运行 nodeadm init 之前应用。
kube-proxy 代理配置
当混合节点加入集群时,Amazon EKS 会自动在每个混合节点上将 kube-proxy 作为 DaemonSet 安装。kube-proxy 支持在 Amazon EKS 集群上跨容器组支持的服务进行路由。要配置每台主机,kube-proxy 需要对 Amazon EKS 集群端点进行 DNS 解析。
-
使用以下命令编辑
kube-proxyDaemonSetkubectl -n kube-system edit ds kube-proxy这将在您配置的编辑器中打开
kube-proxyDaemonSet 定义。 -
添加
HTTP_PROXY和HTTPS_PROXY的环境变量。请注意,您的配置中应该已经存在NODE_NAME环境变量。请将proxy-domain和port替换为环境的相应值。containers: - command: - kube-proxy - --v=2 - --config=/var/lib/kube-proxy-config/config - --hostname-override=$(NODE_NAME) env: - name: HTTP_PROXY value: http://proxy-domain:port- name: HTTPS_PROXY value: http://proxy-domain:port- name: NODE_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: spec.nodeName