导入外部流量我使用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** 没有效果。所以想请教大佬,有没有办法?
我的环境
1
artandlol 2018-11-10 17:00:00 +08:00 via iPhone 1
其他服务 80 端口改用 ingress。要改也是改别的服务而不 ingress
|
2
kidlj 2018-11-10 17:18:30 +08:00 via iPhone 1
Nginx-ingress 的 80 和 443 不能改。
|
3
NUT OP @artandlol #1
整个服务没法全部容器化,而且资源有限,如果真改不了,那就只能通过 node selector 来处理 80 端口了。 本来设想 k8s 前面有一个 ng 来做 waf。 |
4
SliceOnion 2018-11-10 17:51:32 +08:00 1
可以指定 service 的 type 为 NodePort,通过指定参数 nodePort 为一个其他端口开放每个 Node 上的这个端口,再配置一个负载均衡,加入你要用的三个 node_ip:port 就应该可以了
|
5
NUT OP @SliceOnion #4 大佬,我觉得您这个方案有点绕了。
|
6
SliceOnion 2018-11-10 20:05:05 +08:00
为什么会觉得绕呢,service 本来就要配置的,负载均衡也是理所应当
|
7
flowfire 2018-11-10 20:54:59 +08:00 via iPhone
点进来之前我还以为是谷歌的那个游戏。。。。
|
8
mengyang624 2018-11-10 21:12:07 +08:00
看到 7 楼之前我还以为是谷歌的那个游戏。。。。
|
9
hotsymbol 2018-11-10 22:18:09 +08:00
点进来之前我还以为是谷歌的那个游戏。。。。
|
10
owenliang 2018-11-11 11:04:14 +08:00 via Android 1
可以弄俩台 k8s 机器打上 label,给 ingress 的 yaml 配上 label selector。
|
11
abmin521 2018-11-11 14:03:49 +08:00 via Android
4 10 楼说的都可以 推荐 10
|
13
anubu 2018-11-13 17:44:33 +08:00
@NUT 没太明白 10 楼的描述,是另找节点部署 controller 来避免 80 端口冲突,最终还是没有改变 controller 默认端口但完成了当前场景需求的意思吗?
|
14
NUT OP 加入我们有 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 |