【问题标题】:Kubernetes NodePort Custom PortKubernetes NodePort 自定义端口
【发布时间】:2017-10-11 15:24:28
【问题描述】:

有没有办法在 kubernetes 服务 YAML 定义中指定自定义 NodePort 端口? 我需要能够在我的配置文件中明确定义端口。

【问题讨论】:

    标签: docker networking kubernetes google-kubernetes-engine flannel


    【解决方案1】:

    您可以在 Service 部署中设置类型 NodePort。请注意,使用选项--service-node-port-range(默认为30000-32767)为您的API 服务器配置了Node Port Range。您也可以通过在Port 对象下设置nodePort 属性来专门指定该范围内的端口,否则系统将为您选择该范围内的端口。

    因此,指定NodePortService 示例将如下所示:

    apiVersion: v1
    kind: Service
    metadata:
      name: nginx
      labels:
        name: nginx
    spec:
      type: NodePort
      ports:
        - port: 80
          nodePort: 30080
          name: http
        - port: 443
          nodePort: 30443
          name: https
      selector:
        name: nginx
    

    有关 NodePort 的更多信息,请参阅this doc。配置 API Server 节点端口范围请见this

    【讨论】:

    • 您好,指定一个固定的节点端口是个坏习惯吗?
    【解决方案2】:

    您可以在 service.yaml 文件中使用 nodeport 定义静态 NodePort

    spec:
      type: NodePort
      ports:
        - port: 3000
          nodePort: 31001
          name: http
    
    

    【讨论】:

      【解决方案3】:

      您可以实际运行此命令,看看如何在 yaml 中实现。

      kubectl create service hello-svc --tcp=80:80 --type NodePort --node-port 30080 -o yaml --dry-run > hello-svc.yaml
      

      https://pachehra.blogspot.com/2019/11/kubernetes-imperative-commands-with.html

      【讨论】:

        【解决方案4】:

        是的,你可以自己定义所有这三个端口

        apiVersion: v1
        kind: Service
        metadata:
          name: posts-srv
        spec:
          type: NodePort
          selector:
            app: posts
          ports:
            - name: posts
              protocol: TCP
              port: 4000
              targetPort: 4000
              nodePort: 31515
        
        

        【讨论】:

          【解决方案5】:

          对于需要在不创建yaml文件的情况下使用kubectl命令的用户,可以创建一个指定端口的NodePort服务:

          kubectl create nodeport NAME [--tcp=port:targetPort] [--dry-run=server|client|none]
          

          例如:

          kubectl create service nodeport myservice --node-port=31000 --tcp=3000:80
          

          您可以查看 Kubectl 参考以了解更多信息:

          【讨论】:

            猜你喜欢
            • 2020-10-14
            • 2021-12-10
            • 2020-11-28
            • 2021-07-05
            • 2021-10-20
            • 1970-01-01
            • 2018-04-07
            • 2021-03-25
            • 2020-06-09
            相关资源
            最近更新 更多