美文网首页k8s/istio
给阿里云K8s集群添加自定义 ingress 端口

给阿里云K8s集群添加自定义 ingress 端口

作者: 国服最坑开发 | 来源:发表于2021-09-16 15:56 被阅读0次
    截屏2021-09-16 15.39.24.png

    0x00 背景

    在生产环境中部署nacos, skywalking 等服务时, 发现nginx ingress 的80,443端口有点不够用了.
    之前的解决办法是, 给不同的服务, 指定不同的host, 那么即使是相同的80端口,也可以通过请求域名,响应到不同的后端service.
    上面的原理也很简单, 因为ingress nginx 最终实现就是转换为nginx的配置文件, 对于nginx 而言, 一个443,响应多个域名这是基本操作.

    但是, 这不够优雅呀, 今天尝试找一下自定义端口方法.
    参考: https://www.cnblogs.com/caibao666/p/12202335.html

    0x01 开搞

    第一步: 增加LB端口

    原来的nginx-ingress-lb只开放80,443端口.

    kubectl get svc -A | grep nginx
    kube-system   nginx-ingress-lb                     LoadBalancer   172.21.12.8     172.16.79.230   80:31728/TCP
    

    开始增加修改:

    kubectl edit svc nginx-ingress-lb -n kube-system
    
    # 增加一组端口
       - name: nacos-port
         # 可以删掉 nodePort , 系统会自动生成一个 大于30000的端口
         port: 8848
         protocol: TCP
         targetPort: 8848
    #保存退出, 立即生效
    :wq
    

    再次确认一下修改效果

    kubectl get svc -A | grep nginx
    kube-system   nginx-ingress-lb                     LoadBalancer   172.21.12.8     172.16.79.230   80:31728/TCP,443:31954/TCP,8848:32123/TCP
    
    第二步: 修改configmap
    kubectl edit configmap tcp-services -n kube-system
    
    # 在 apiVersion 下面添加一组配置: data 
    apiVersion: v1
    data:
      # 格式:  对外端口 :  namespace/service_name:service_port
      "8848": default/nacos-headless:8848
    

    0x03 验证

    这时候去查看 ingress 的信息, 发现不会有啥变化, 但这个LB是确确实实多了一个服务端口.
    此时, 我们可以通过K8s的LB IP , 加上这个自定义端口, 就可以正常访问里面的nacos服务了.

    我这里的nginx ingress 安装的是内网LB, 所以需要在外部配置一下nginx 把公网请求转进来, 比较简单, 不再赘述.

    截屏2021-09-16 15.55.41.png

    // 2021/10/21 追加快速使用方式:

    k edit svc sample-server
        - nodePort: 31153
          port: 93
          protocol: TCP
          targetPort: 8093
        type: NodePort
    
    k edit cm tcp-services -n kube-system
         "8093": default/sample-server:93
    
    k edit svc nginx-ingress-lb -n kube-system
        - name: sample-server
          nodePort: 31426
          port: 8093
          protocol: TCP
          targetPort: 93
    

    解释 :

    • ingress 对外暴露 8093, ingress 把93 指向 svc, 然后svc 再次请求pod的8093端口.
    • nginx-ingress-lb 和 tcp-services 的端口配置要保持一致
    • svc 的type 要指定为: NodePort
    • 先更新 cm, 再更新 nginx-ingress-lb , 切记!!!

    jjffffjkkkj

    相关文章

      网友评论

        本文标题:给阿里云K8s集群添加自定义 ingress 端口

        本文链接:https://www.haomeiwen.com/subject/sawrgltx.html