本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
限制可指派給服務的外部 IP 地址
Kubernetes 服務可透過下列方式從叢集內部存取:
-
由 自動指派的叢集 IP 地址 Kubernetes
-
您為服務規則中的
externalIPs
屬性指定的 IP 地址。外部 IP 地址不受 管理 Kubernetes 和 是叢集管理員的責任。使用externalIPs
指定的外部 IP 地址不同於雲端提供商指派給類型服務LoadBalancer
的外部 IP 地址。
進一步了解 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-manager
Pods 正在執行。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 清單檔案。您也可以在 上檢視 Webhook 的原始程式碼
GitHub. 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
10.0.0.0/8
以您自己的 CIDR 區塊取代 。您可以指定需要的區塊,不限數量。如果指定多個區塊,則請在區塊之間加上逗號。 -
如果您的叢集不在
us-west-2
AWS 區域中,請使用下列命令取代amazonaws.com
檔案中的us-west-2
602401143452
、 和 。在執行命令之前,請取代region-code
以及111122223333
從檢視 Amazon EKS 附加元件的 Amazon 容器映像登錄檔清單中的 AWS 區域值。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
嘗試將 服務部署至叢集,其 IP 地址指定為
externalIPs
,而該 IP 地址未包含在您在指定 CIDR 區塊步驟中指定的區塊中,將會失敗。