【问题标题】:Can I use EKS NodePort service with port 80 and 443我可以使用端口 80 和 443 的 EKS NodePort 服务吗
【发布时间】:2021-07-29 06:05:08
【问题描述】:

我正在使用EKSK8s 服务,由 AWS 原生提供)。

我的问题是:

  1. 是否可以通过端口80和443暴露NodePort服务(默认NodePort范围为30000 - 32767)。
  2. 如果是,如何使用EKS

注意我知道使用NodePort 服务的后果,并研究了LoadBalancerIngress 等替代方案。我将继续使用 NodePort,因为我必须这样做。

【问题讨论】:

    标签: kubernetes amazon-eks


    【解决方案1】:
    1. 没有。根据EKS AMI Source,工作节点的kubelet 使用--service-node-port-range 的默认配置。您将被分配一个介于30000-32767 之间的外部端口号。

    2. 您可以选择使用节点的 hostNetwork 将端口 80 和 443 公开为 hostPort。可以在here 找到设置说明。请记住使用 hostNetwork 的网络限制和注意事项!

    【讨论】:

    • 我最近也发现了hostPorthostNetwork。感谢您确认这是我需要的。
    • 嗨弗兰克, --service-node-port-range 是 kube-apiserver 中的配置,对吗?你是说我们可以在 kubelet 级别覆盖它吗?
    • 据我了解,当你声明一个 NodePort 时,你会被分配一个 Kubernetes 系统给定范围内的端口号。这个范围是在 Kubelet 级别指定的,而不是 api-server,因为每个 Kubelet 可能位于具有不同 ACL 和安全组的网络中。
    【解决方案2】:

    尝试为您的服务使用外部 IP:

    kind: Service
    apiVersion: v1
    metadata:
      name: my-service
    spec:
      selector:
        app: MyApp
      ports:
      - name: http
        protocol: TCP
        port: 80
        targetPort: 80
      externalIPs:
      - node1_IP
      - node2_IP
      - node3_IP
    

    在这种情况下,也会在节点 IP 上打开端口 80。这是一个肮脏的解决方法,但它应该可以工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-21
      • 1970-01-01
      • 2019-03-06
      • 2017-08-22
      • 1970-01-01
      • 1970-01-01
      • 2018-02-06
      • 2019-10-08
      相关资源
      最近更新 更多