協助改進此頁面
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
若要為本使用者指南貢獻內容,請點選每個頁面右側面板中的在 GitHub 上編輯此頁面連結。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
限制可指派給服務的外部 IP 位址
Kubernetes 服務可透過以下方式從叢集內部連線:
-
Kubernetes 自動指派的叢集 IP 地址
-
您為服務規則中的
externalIPs屬性指定的 IP 地址。外部 IP 地址不是由 Kubernetes 管理,是叢集管理員的責任。使用externalIPs指定的外部 IP 地址不同於雲端提供商指派給類型服務LoadBalancer的外部 IP 地址。
如需進一步了解 Kubernetes 服務,請參閱 Kubernetes 文件中的服務externalIPs 指定的 IP 地址。
-
部署
cert-manager以管理網路掛鉤憑證。如需詳細資訊,請參閱 cert-manager文件。 kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.5.4/cert-manager.yaml -
確認是否正在執行
cert-managerPod。kubectl get pods -n cert-manager範例輸出如下。
NAME READY STATUS RESTARTS AGE cert-manager-58c8844bb8-nlx7q 1/1 Running 0 15s cert-manager-cainjector-745768f6ff-696h5 1/1 Running 0 15s cert-manager-webhook-67cc76975b-4v4nk 1/1 Running 0 14s -
檢閱您現有的服務,以確保其中沒有指派給這些服務的外部 IP 位址,而這些地址不包含在要限制地址的 CIDR 區塊中。
kubectl get services -A範例輸出如下。
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE cert-manager cert-manager ClusterIP 10.100.102.137 <none> 9402/TCP 20m cert-manager cert-manager-webhook ClusterIP 10.100.6.136 <none> 443/TCP 20m default kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 2d1h externalip-validation-system externalip-validation-webhook-service ClusterIP 10.100.234.179 <none> 443/TCP 16s kube-system kube-dns ClusterIP 10.100.0.10 <none> 53/UDP,53/TCP 2d1h my-namespace my-service ClusterIP 10.100.128.10 192.168.1.1 80/TCP 149m如果有任何值是不位於要限制存取之區塊內的 IP 位址,則您需要將地址變更為位於區塊內,然後重新部署服務。例如,上一個輸出中的
my-service服務具有指派給其的外部 IP 位址,而該地址不位於步驟 5 中的 CIDR 區塊範例內。 -
下載外部 IP Webhook 清單檔案。您也可以檢視 GitHub 上的 Webhook 來源程式碼
curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/docs/externalip-webhook.yaml -
指定 CIDR 區塊。在編輯器中開啟下載的檔案,並在下列這幾行的開頭移除
\#。#args: #- --allowed-external-ip-cidrs=10.0.0.0/8使用您自己的 CIDR 區塊取代
10.0.0.0/8。您可以指定需要的區塊,不限數量。如果指定多個區塊,則請在區塊之間加上逗號。 -
如果您的叢集不在
us-west-2AWS 區域,則使用以下命令取代檔案中的us-west-2、602401143452和amazonaws.com。在執行命令之前,使用檢視適用於 Amazon EKS 附加元件的 Amazon 容器映像登錄檔清單中的 AWS 區域的值,取代region-code與111122223333。sed -i.bak -e 's|602401143452|111122223333|' externalip-webhook.yaml sed -i.bak -e 's|us-west-2|region-code|' externalip-webhook.yaml sed -i.bak -e 's|amazonaws.com||' externalip-webhook.yaml -
將清單檔案套用至叢集。
kubectl apply -f externalip-webhook.yaml嘗試使用為
externalIPs指定的 IP 地址將服務部署至叢集,如果 IP 地址未包含於 Specify CIDR blocks (指定 CIDR 區塊) 步驟中指定的區塊,則嘗試將會失敗。