本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
限制可分配给 服务的外部 IP 地址
可以通过以下方法从集群内部访问 Kubernetes 服务:
-
Kubernetes 自动分配的集群 IP 地址
-
为服务规范中的
externalIPs
属性指定的任何 IP 地址。外部 IP 地址不由 Kubernetes 管理,由集群管理员负责。使用externalIPs
指定的外部 IP 地址不同于云提供商分配给LoadBalancer
类型的服务的外部 IP 地址。
要了解有关 Kubernetes 服务的更多信息,请参阅 Kubernetes 文档中的服务externalIPs
指定的 IP 地址。
限制可以在服务规范中为 externalIPs
指定的 IP 地址
-
部署 cert-manager 来管理 Webhook 证书。有关更多信息,请参阅 cert-manager
文档。 kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.1.0/cert-manager.yaml
-
验证 cert-manager Pod 是否正在运行。
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
-
查看您的现有服务,以确保它们没有分配给您要将地址限制到的 CIDR 块中不包含的外部 IP 地址。
kubectl get services --all-namespaces
输出
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 externalip-webhook.yaml https://s3.us-west-2.amazonaws.com/amazon-eks/docs/externalip-webhook.yaml
-
北京和宁夏 中国区域
curl -o externalip-webhook.yaml https://s3.cn-north-1.amazonaws.com.cn/amazon-eks/docs/externalip-webhook.yaml
-
-
在编辑器中打开下载的文件,并删除以下行开头的
#
。#args: #- --allowed-external-ip-cidrs=10.0.0.0/8
将
10.0.0.0/8
替换为您自己的 CIDR 块。您可以指定任意数量的块。如果指定多个数据块,请在数据块之间添加一个逗号。 -
如有必要,请将以下地址更改为下表中的其他地址,具体取决于集群所在的区域,然后保存文件。
image: 602401143452.dkr.ecr.us-west-2.amazonaws.com/externalip-webhook:v1.0.0
区域 地址 ZHY 和 BJS 961992271922.dkr.ecr.cn-northwest-1.amazonaws.com.cn/externalip-webhook:v1.0.0
HKG 800184023465.dkr.ecr.ap-east-1.amazonaws.com/externalip-webhook:v1.0.0
BAH 558608220178.dkr.ecr.me-south-1.amazonaws.com/externalip-webhook:v1.0.0
CPT 877085696533.dkr.ecr.af-south-1.amazonaws.com/externalip-webhook:v1.0.0
MXP 590381155156.dkr.ecr.eu-south-1.amazonaws.com/externalip-webhook:v1.0.0
-
将清单应用于集群。
kubectl apply -f externalip-webhook.yaml
如果尝试使用为
externalIPs
指定的 IP 地址(未包含在您在步骤 5 中指定的块中)将服务部署到集群,将会失败。