为什么k3s访问不了监听loopback地址的host服务?

Why can't k3s access host services that listening loopback address?

我在一台 Ubuntu 机器上部署了 k3s。

其他服务直接安装在本机(k8s之外),例如Redis,Mysql...出于安全原因,他们正在监听环回地址127.0.0.1

但是k3s里面的服务无法连接到我的数据库。如果我把监听地址改成0.0.0.0,问题就解决了

为什么?这个用例中的最佳实践是什么?

PS:我使用Endpoints将主机服务映射到k8s:

apiVersion: v1
kind: Service
metadata:
  name: redis
spec:
  ports:
    - port: 6379
---
apiVersion: v1
kind: Endpoints
metadata:
  name: redis
subsets:
  - addresses:
      - ip: xxxxx (host's ip)
    ports:
      - port: 6379

感谢@vincent pli,我意识到我将 lo 与主机本身混淆了。

一个服务监听lo,并不代表本机运行上的所有服务实际上都可以访问它。如果那是你真正想要的,你必须确保这两个服务在同一个虚拟网卡中(lo)。

否则,如果要通过ip地址访问,服务必须监听它。如果这个地址只在局域网内部,还是安全的。或者使用防火墙执行更严格的入站限制。