【发布时间】:2023-02-07 14:01:50
【问题描述】:
我正在尝试绑定 RKE2,包括。在具有(Docker)Nginx 侦听另一个地址/接口的机器上的特定地址192.168.3.3 上的ingress-nginx。
全新安装 RKE2 后,在 /usr/local/lib/systemd/system/rke2-server.service 中我设置(首次启动前):
ExecStart=/usr/local/bin/rke2 server --bind-address 192.168.3.3 --node-ip 192.168.3.3 --node-external-ip 192.168.3.3
RKE2 启动正常,除了 rke2-ingress-nginx-controller 失败:
F0220 21:56:00.703309 8 main.go:67] port 80 is already in use. Please check the flag --http-port
貌似是绑定到0.0.0.0和其他Nginx的80端口冲突,所以我把bind-address设置在/var/lib/rancher/rke2/server/manifests/rke2-ingress-nginx-config.yaml:
apiVersion: helm.cattle.io/v1
kind: HelmChartConfig
metadata:
name: rke2-ingress-nginx
namespace: kube-system
spec:
valuesContent: |-
controller:
config:
bind-address: "192.168.3.3"
这会按预期影响nginx.conf:
listen 192.168.3.3:80 default_server reuseport backlog=511 ;
listen [::]:80 default_server reuseport backlog=511 ;
listen 192.168.3.3:443 default_server reuseport backlog=511 ssl http2 ;
listen [::]:443 default_server reuseport backlog=511 ssl http2 ;
但控制器仍然失败并显示port 80 is already in use。
我从吊舱检查:
bash-4.4$ curl -v 192.168.3.3
* Rebuilt URL to: 192.168.3.3/
* Trying 192.168.3.3...
* TCP_NODELAY set
* connect to 192.168.3.3 port 80 failed: Connection refused
* Failed to connect to 192.168.3.3 port 80: Connection refused
* Closing connection 0
curl: (7) Failed to connect to 192.168.3.3 port 80: Connection refused
80端口好像没用。我错过了什么?
编辑:
可以肯定的是,由于 ingress-nginx 控制器启用了 IPv6 并绑定到 [::],我在 rke2-ingress-nginx-config.yaml 中设置了 disable-ipv6: "true" 但这也没有帮助。
有趣的是,如果我停止其他 Nginx 监听另一个地址,控制器启动就好了。然后我可以再次启动另一个 Nginx,一切都很好。 所以也许有某种“未配置的”初始化容器监听所有地址,使控制器 pod 的整个启动失败?
【问题讨论】:
标签: port nginx-ingress rke2