限制可分配给服务的外部 IP 地址 - Amazon EKS
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

限制可分配给服务的外部 IP 地址

可以通过以下方式从群集内部访问 Kubernetes 服务:

  • Kubernetes 自动分配的集群 IP 地址

  • 指定的任何 IP 地址externalIPs属性在服务规范中。外部 IP 地址不由 Kubernetes 管理,并由群集管理员负责。使用指定的外部 IP 地址externalIPs的外部 IP 地址不同于分配给类型为LoadBalancer由云提供商提供。

要了解有关 Kubernetes 服务的更多信息,请参阅服务在 Kubernetes 文档中。您可以限制可以为externalIPs在服务规范中。

限制可以为externalIPs在服务规范中

  1. 部署证书管理器来管理 Webhook 证书。有关更多信息,请参阅 。证书管理器文档中)。

    kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.1.1/cert-manager.yaml
  2. 验证证书管理器窗格是否正在运行。

    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
  3. 检查您的现有服务,以确保没有任何服务分配给它们的外部 IP 地址不包含在您想要限制地址的 CIDR 块中。

    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 块示例中。

  4. 下载外部 IP 网络挂钩清单。您也可以查看网络挂钩的源代码(位于 GitHub 上)。

    curl -o externalip-webhook.yaml https://s3.cn-north-1.amazonaws.com.cn/amazon-eks/docs/externalip-webhook.yaml
  5. 在编辑器中打开下载的文件,然后删除#位于以下行开头。

    #args: #- --allowed-external-ip-cidrs=10.0.0.0/8

    Replace10.0.0.0/8使用您自己的 CIDR 块。您可以根据需要指定多个块。如果指定多个块,请在块之间添加逗号。

  6. 您的集群现在应具有以下值。

    image:602401143452.dkr.ecr.cn-north-1.amazonaws.com/.cnexternalip-webhook:v1.0.0
  7. 将清单应用于集群。

    kubectl apply -f externalip-webhook.yaml

    尝试使用指定的 IP 地址将服务部署到您的群集externalIPs不包含在您在步骤 5 中指定的块中将失败。