目前家里有五六台服务器跑了 k8s ,但是家网没有公网 IP 想对外提供服务比较麻烦, 于是加了一台华为云服务器用 vpn 接入家里的 k8s 内网 作为一个节点, 但这台华为云服务器配置比较低,是希望只用他做 nginx ingress 节点转发公网流量,不要跑任何 pods 这样能否实现,如何配置?或者有更好的方式?
1
nulIptr 2023-02-12 17:47:47 +08:00
搜下 taint/affinity ,都可以实现
|
2
seers 2023-02-12 18:29:11 +08:00 via Android
给 node 打污点,然后 pod 给容忍就行
|
3
xvan 2023-02-12 20:29:12 +08:00
亲和性
|
4
xqiang 2023-02-12 23:27:04 +08:00
1. 不跑任何其他 pods:taint
2. 做 nginx ingress 节点: 容忍 taint 的同时,加 nodeSelector 或 affinity |
5
RatioPattern OP @xqiang 第二点,公网华为云这个 k8s node 不跑业务 pods(k8s 自己的服务 Pods 不算)只当 nginx ingress 节点,也需要初始化 nginx ingress 服务 pods 的时候加 nodeSelector 选中公网华为云 node 吗?
|
6
RatioPattern OP 补充下,是希望 nginx ingress 为全局生效,代理多个不同 namespace 的 svc 出去。。。
|
7
littlezzll 2023-02-13 08:16:28 +08:00 via Android
给指定节点打标签,比如 ingress=true ,nodeSelector 指定这个标签即可
|
8
julyclyde 2023-02-13 09:00:16 +08:00
我总觉得 nodeport 模式的 service 是一个设计错误
并非所有 node 都对外服务,但是一个 service 需要在所有 node 上都占有端口,浪费资源,增加协调难度 端口如果用完了咋办呢?每个集群只能有六万多个 service ? |
9
lizon 2023-02-13 10:14:00 +08:00 1
除了上面提到的方式,还可以指定 pod 的 nodeName
https://kubernetes.io/zh-cn/docs/concepts/scheduling-eviction/assign-pod-node/#nodename 链接中整篇官方文档正好对应你的问题 |