帮助改进此页面
想为本用户指南做出贡献? 滚动到页面底部,然后选择在 GitHub 上编辑此页面。您的贡献有助于我们的用户指南为每个人提供更充分的参考。
限制可分配给服务的外部 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.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 清单。您还可以在 GitHub 上查看 Webhook 的源代码
。 -
指定 CIDR 块。在编辑器中打开下载的文件并删除下面代码行开头的
#
。#args: #- --allowed-external-ip-cidrs=10.0.0.0/8
将
10.0.0.0/8
替换为您自己的 CIDR 块。您可以根据需要指定任意数量的块。如果指定多个块,请在块之间添加逗号。 -
则将文件中的
us-west-2
、602401143452
和amazonaws.com
替换为以下命令。在运行命令之前,为 Amazon Web Services 区域 将
和region-code
替换为来自 Amazon 容器镜像注册表 列表中的值。111122223333
sed -i.bak -e 's|602401143452|
111122223333
|' externalip-webhook.yamlsed -i.bak -e 's|us-west-2|
region-code
|' externalip-webhook.yamlsed -i.bak -e 's|amazonaws.com|amazonaws.com.cn|' externalip-webhook.yaml
-
将清单应用于集群。
kubectl apply -f externalip-webhook.yaml
若尝试将服务部署到为
externalIPs
指定的 IP 地址不在指定 CIDR 块步骤中指定的地址块范围内的集群,则部署将会失败。