設定混合節點的代理 - Amazon EKS

協助改善此頁面

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

若要提供此使用者指南,請選擇位於每個頁面右窗格中的 GitHub 上編輯此頁面連結。

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

設定混合節點的代理

如果您在內部部署環境中為離開資料中心或邊緣環境的流量使用代理伺服器,則需要設定作業系統、kubeletcontainerdkube-proxy,以使用您的代理伺服器。您必須在建立 Amazon EKS 叢集kube-proxy後設定 。您可以在作業系統映像的建置程序kubelet期間或在每個混合節點nodeadm init上執行之前,對作業系統containerd、 和 進行變更。

節點層級組態

本節中的組態必須套用在您的作業系統映像中,或在每個混合節點nodeadm init上執行之前。

containerd 代理組態

containerd 是 Kubernetes 的預設容器管理執行期。如果您使用代理進行網際網路存取,則必須設定 ,containerd以便它可以提取 Kubernetes 和 Amazon EKS 所需的容器映像。

http-proxy.conf/etc/systemd/system/containerd.service.d目錄中名為 的每個混合節點上建立 檔案,其中包含下列內容。將 proxy-domainport 取代為環境的值。

[Service] Environment="HTTP_PROXY=http://proxy-domain:port" Environment="HTTPS_PROXY=http://proxy-domain:port" Environment="NO_PROXY=localhost"

containerd 來自使用者資料的組態

需要為此檔案建立containerd.service.d目錄。您需要重新載入系統化,才能在不重新啟動的情況下取得組態檔案。在 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 叢集的公有或私有端點通訊。

http-proxy.conf/etc/systemd/system/kubelet.service.d/目錄中名為 的每個混合節點上建立檔案,內容如下。將 proxy-domainport 取代為環境的值。

[Service] Environment="HTTP_PROXY=http://proxy-domain:port" Environment="HTTPS_PROXY=http://proxy-domain:port" Environment="NO_PROXY=localhost"

kubelet 來自使用者資料的組態

必須為此檔案建立 kubelet.service.d目錄。您需要重新載入系統化,才能在不重新啟動的情況下取得組態檔案。在 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

  1. snap設定為搭配下列命令使用代理:

    sudo snap set system proxy.https=http://proxy-domain:port sudo snap set system proxy.http=http://proxy-domain:port
  2. 若要啟用 的代理aptapt.conf請在 /etc/apt/目錄中建立名為 的檔案。將代理網域和連接埠取代為環境的值。

    Acquire::http::Proxy "http://proxy-domain:port"; Acquire::https::Proxy "http://proxy-domain:port";

Amazon Linux 2023 和 Red Hat Enterprise Linux

  1. 設定 yum 以使用您的代理。為您的環境建立/etc/yum.conf具有代理網域和連接埠值的檔案。

    proxy=http://proxy-domain:port

全叢集組態

本節中的組態必須在您建立 Amazon EKS 叢集之後,以及在每個混合節點nodeadm init上執行之前套用。

kube-proxy 代理組態

當您的混合節點加入叢集時,Amazon EKS 會自動在每個混合節點kube-proxy上安裝 做為 DaemonSet。 kube-proxy會啟用跨 Amazon EKS 叢集上由 Pod 支援的服務的路由。若要設定每個主機, kube-proxy 需要 Amazon EKS 叢集端點的 DNS 解析。

  1. 使用下列命令編輯 kube-proxy DaemonSet

    kubectl -n kube-system edit ds kube-proxy

    這會在您的設定編輯器上開啟 kube-proxy DaemonSet 定義。

  2. 新增 HTTP_PROXY和 的環境變數HTTPS_PROXY。請注意,NODE_NAME環境變數應該已存在於您的組態中。portproxy-domain和 取代為您的環境的值。

    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