首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
华为云
V2EX  ›  程序员

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

  •  1
     
  •   NUT · 6 天前 · 1067 次点击

    导入外部流量我使用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 回复  |  直到 2018-11-14 10:48:29 +08:00
        1
    artandlol   6 天前 via iPhone   ♥ 1
    其他服务 80 端口改用 ingress。要改也是改别的服务而不 ingress
        2
    kidlj   6 天前 via iPhone   ♥ 1
    Nginx-ingress 的 80 和 443 不能改。
        3
    NUT   6 天前
    @artandlol #1
    整个服务没法全部容器化,而且资源有限,如果真改不了,那就只能通过 node selector 来处理 80 端口了。 本来设想 k8s 前面有一个 ng 来做 waf。
        4
    SliceOnion   6 天前   ♥ 1
    可以指定 service 的 type 为 NodePort,通过指定参数 nodePort 为一个其他端口开放每个 Node 上的这个端口,再配置一个负载均衡,加入你要用的三个 node_ip:port 就应该可以了
        5
    NUT   6 天前
    @SliceOnion #4 大佬,我觉得您这个方案有点绕了。
        6
    SliceOnion   6 天前
    为什么会觉得绕呢,service 本来就要配置的,负载均衡也是理所应当
        7
    flowfire   6 天前 via iPhone
    点进来之前我还以为是谷歌的那个游戏。。。。
        8
    mengyang624   6 天前
    看到 7 楼之前我还以为是谷歌的那个游戏。。。。
        9
    hotsymbol   6 天前
    点进来之前我还以为是谷歌的那个游戏。。。。
        10
    owenliang   5 天前 via Android   ♥ 1
    可以弄俩台 k8s 机器打上 label,给 ingress 的 yaml 配上 label selector。
        11
    abmin521   5 天前 via Android
    4 10 楼说的都可以 推荐 10
        12
    NUT   4 天前
    @abmin521 #11 我也是这么想的:-)
        13
    anubu   3 天前
    @NUT 没太明白 10 楼的描述,是另找节点部署 controller 来避免 80 端口冲突,最终还是没有改变 controller 默认端口但完成了当前场景需求的意思吗?
        14
    NUT   3 天前
    加入我们有 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
        15
    anubu   2 天前
    @NUT 感谢。原来理解的差不多,没有改变 ingress 的默认端口,找到了其他方法使默认端口不会冲突。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   684 人在线   最高记录 3821   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.1 · 20ms · UTC 20:25 · PVG 04:25 · LAX 12:25 · JFK 15:25
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1