帮助改进此页面
要帮助改进本用户指南,请选择位于每个页面右侧窗格中的在 GitHub 上编辑此页面链接。
限制可分配给服务的外部 IP 地址
可以通过以下方式从集群内部访问 Kubernetes 服务:
- 
         Kubernetes 自动分配的集群 IP 地址 
- 
         您在服务规格中为 externalIPs属性指定的任何 IP 地址。外部 IP 地址不由 Kubernetes 管理,而是由集群管理员负责。使用externalIPs指定的外部 IP 地址不同于由云提供商分配给LoadBalancer类型服务的外部 IP 地址。
要了解有关 Kubernetes 服务的更多信息,请参阅 Kubernetes 文档中的服务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容器组(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
- 
         检查您的现有服务,以确保为它们分配的外部 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将 10.0.0.0/8替换为您自己的 CIDR 块。您可以根据需要指定任意数量的块。如果指定多个块,请在块之间添加逗号。
- 
         如果您的集群不在 AWS us-west-2区域中,则将文件中的us-west-2、602401143452和amazonaws.com替换为以下命令。在运行命令之前,请将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若尝试将服务部署到为 externalIPs指定的 IP 地址不在指定 CIDR 块步骤中指定的地址块范围内的集群,则部署将会失败。