帮助改进此页面
要帮助改进本用户指南,请选择位于每个页面右侧窗格中的在 GitHub 上编辑此页面链接。
为混合节点功能配置代理
如果在本地环境中使用代理服务器来处理离开数据中心或边缘环境的流量,则需要配置操作系统、containerd
、kubelet
和 kube-proxy
以便使用代理服务器。创建 Amazon EKS 集群后,您必须配置 kube-proxy
。您可以在操作系统映像构建过程中或在每个混合节点上运行 nodeadm init
之前,对操作系统、containerd
和 kubelet
进行更改。
节点级别配置
本节中的配置必须应用于操作系统映像中或在每个混合节点上运行 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 echo 'Environment="HTTP_PROXY=http://
proxy-domain:port
"' >> /etc/systemd/system/containerd.service.d echo 'Environment="HTTPS_PROXY=http://proxy-domain:port
"' >> /etc/systemd/system/containerd.service.d echo 'Environment="NO_PROXY=localhost"' >> /etc/systemd/system/containerd.service.d 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 echo 'Environment="HTTP_PROXY=http://
proxy-domain:port
"' >> /etc/systemd/system/kubelet.service.d echo 'Environment="HTTPS_PROXY=http://proxy-domain:port
"' >> /etc/systemd/system/kubelet.service.d echo 'Environment="NO_PROXY=localhost"' >> /etc/systemd/system/kubelet.service.d systemctl daemon-reload systemctl restart containerd
操作系统代理配置
如果使用代理来访问互联网,则必须对操作系统进行配置,以确保能够从操作系统的软件包管理器中提取混合节点依赖项。
Ubuntu
-
通过以下命令配置
snap
以使用代理:sudo snap set system proxy.https=http://
proxy-domain:port
sudo 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 和 Red Hat Enterprise Linux
-
配置
yum
以使用代理。创建一个具有环境的代理域和端口值的文件/etc/yum.conf
。proxy=http://
proxy-domain:port
集群范围配置
本节中的配置必须在创建 Amazon EKS 集群之后并且在每个混合节点上运行 nodeadm init
之前应用。
kube-proxy 代理配置
当混合节点加入集群时,Amazon EKS 会自动在每个混合节点上将 kube-proxy
作为 DaemonSet 安装。kube-proxy
支持在 Amazon EKS 集群上跨容器组支持的服务进行路由。要配置每台主机,kube-proxy
需要对 Amazon EKS 集群端点进行 DNS 解析。
-
使用以下命令编辑
kube-proxy
DaemonSetkubectl -n kube-system edit ds kube-proxy
这将在您配置的编辑器中打开
kube-proxy
DaemonSet 定义。 -
添加
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