安装k3s导致原本的nginx443端口无法被访问
·
导致原本的 Nginx 443(以及 80)端口无法访问,是因为 K3s 默认集成了 Traefik Ingress 控制器和 ServiceLB 负载均衡器。它们在后台通过 iptables 强行接管了宿主机的 80 和 443 端口流量。即便用 lsof 或 netstat 查不到特定进程占用,流量也已经被 K3s 的虚拟网卡拦截并导向了内部容器。要解决这个问题,可以通过禁用 K3s 默认的 Traefik 来彻底释放 80/443 端口,让流量重新回到原本的物理机 Nginx 上。具体修复步骤如下:
1. 修改 K3s 启动配置文件
编辑或创建 K3s 的默认配置文件:
sudo mkdir -p /etc/rancher/k3s
sudo nano /etc/rancher/k3s/config.yaml
在文件中添加以下内容,明确禁用内置的 traefik 路由服务:
disable:
- traefik
2. 清理已被 K3s 部署的资源
为了确保残留的组件不会继续抢占端口,需要在 K3s 内部将其删除(K3s 停止前操作):
# 删除内部现有的 traefik 控制器定义
sudo k3s kubectl -n kube-system delete helmcharts.helm.cattle.io traefik
3. 重启 K3s 服务使配置生效
# 重启 K3s 容器编排引擎
sudo systemctl restart k3s
4. 恢复物理机 Nginx 服务
在 K3s 释放端口后,重新启动或加载您原本的 Nginx 服务:
# 检查 Nginx 配置是否正确
sudo nginx -t
# 重新启动 Nginx
sudo systemctl restart nginx
5、如果只有k3s.yaml就要创建config.yaml
# 1. 创建并写入配置文件
sudo tee /etc/rancher/k3s/config.yaml <<EOF
disable:
- traefik
EOF
# 2. 重启 K3s 服务让配置生效
sudo systemctl restart k3s
# 3. 尝试重启您原本的 Nginx
sudo systemctl restart nginx
更多推荐

所有评论(0)