• 请不要在回答技术问题时复制粘贴 AI 生成的内容
NUT
V2EX  ›  程序员

请教熟悉 k8s 大佬, 能修改 ingress 的端口么?

  •  1
     
  •   NUT · Nov 10, 2018 · 9872 views
    This topic created in 2758 days ago, the information mentioned may be changed or developed.

    导入外部流量我使用nginx-ingress方式,直接按照 https://github.com/kubernetes/ingress-nginx/ 安装来走的。

    按照其他大佬的博客,在部署 nginx-ingress-controller Deployment 时候使用 hostNetwork: true 方式,这样就把 nginx-ingress-controller 所在 node 的 80 端口直接就暴露出来,作为外部流量导入点。这样 ingress 就把 node 机器的 80 端口占用,因为 80 还有其他服务,整个服务没法全上容器。 所以想改变 ingress 的端口。

    我尝试改变 ** nginx-ingress-controller Deployment** 容器的 ** containerPort** 没有效果。所以想请教大佬,有没有办法?

    我的环境

    • k8s 1.12
    • node 3 个
    • ingress 方案 nginx-ingress
    15 replies    2018-11-14 10:48:29 +08:00
    artandlol
        1
    artandlol  
       Nov 10, 2018 via iPhone   ❤️ 1
    其他服务 80 端口改用 ingress。要改也是改别的服务而不 ingress
    kidlj
        2
    kidlj  
       Nov 10, 2018 via iPhone   ❤️ 1
    Nginx-ingress 的 80 和 443 不能改。
    NUT
        3
    NUT  
    OP
       Nov 10, 2018
    @artandlol #1
    整个服务没法全部容器化,而且资源有限,如果真改不了,那就只能通过 node selector 来处理 80 端口了。 本来设想 k8s 前面有一个 ng 来做 waf。
    SliceOnion
        4
    SliceOnion  
       Nov 10, 2018   ❤️ 1
    可以指定 service 的 type 为 NodePort,通过指定参数 nodePort 为一个其他端口开放每个 Node 上的这个端口,再配置一个负载均衡,加入你要用的三个 node_ip:port 就应该可以了
    NUT
        5
    NUT  
    OP
       Nov 10, 2018
    @SliceOnion #4 大佬,我觉得您这个方案有点绕了。
    SliceOnion
        6
    SliceOnion  
       Nov 10, 2018
    为什么会觉得绕呢,service 本来就要配置的,负载均衡也是理所应当
    flowfire
        7
    flowfire  
       Nov 10, 2018 via iPhone
    点进来之前我还以为是谷歌的那个游戏。。。。
    mengyang624
        8
    mengyang624  
       Nov 10, 2018
    看到 7 楼之前我还以为是谷歌的那个游戏。。。。
    hotsymbol
        9
    hotsymbol  
       Nov 10, 2018
    点进来之前我还以为是谷歌的那个游戏。。。。
    owenliang
        10
    owenliang  
       Nov 11, 2018 via Android   ❤️ 1
    可以弄俩台 k8s 机器打上 label,给 ingress 的 yaml 配上 label selector。
    abmin521
        11
    abmin521  
       Nov 11, 2018 via Android
    4 10 楼说的都可以 推荐 10
    NUT
        12
    NUT  
    OP
       Nov 12, 2018
    @abmin521 #11 我也是这么想的:-)
    anubu
        13
    anubu  
       Nov 13, 2018
    @NUT 没太明白 10 楼的描述,是另找节点部署 controller 来避免 80 端口冲突,最终还是没有改变 controller 默认端口但完成了当前场景需求的意思吗?
    NUT
        14
    NUT  
    OP
       Nov 13, 2018
    加入我们有 3 个 node ,其中有 2 个 node 是可以使用 80 端口的 ,这时候我们发布 ingress-nginx Deployment 的时候, 可以添加 node 的 nodeSelector ,这样 deployment 就会被运行在指定的 label 的 node 上。

    下面是命令

    # 添加 node 的 label
    kubectl label nodes <node-name> <label-key>=<label-value>
    # 删除 只需在命令行最后指定 Label 的 key 名并与一个减号相连即可:
    kubectl label nodes <node-name> <label-key>-
    # 如果添加 label
    修改一个 Label 的值,需要加上--overwrite 参数:
    kubectl label nodes <node-name> <label-key>=<label-value> --overwrite
    anubu
        15
    anubu  
       Nov 14, 2018
    @NUT 感谢。原来理解的差不多,没有改变 ingress 的默认端口,找到了其他方法使默认端口不会冲突。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2653 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 64ms · UTC 12:20 · PVG 20:20 · LAX 05:20 · JFK 08:20
    ♥ Do have faith in what you're doing.