docker - Kubernetes Pod上没有出站网络

标签 docker networking kubernetes rke

我正在VM中运行一个单节点Kubernetes集群,以进行开发和测试。我使用Rancher Kubernetes引擎(RKE,Kubernetes版本1.18)进行了部署,并使用了MetalLB来启用LoadBalancer服务类型。 Traefik是2.2版,可通过官方Helm图表(https://github.com/containous/traefik-helm-chart)进行部署。我部署了一些虚拟容器来测试设置(https://hub.docker.com/r/errm/cheese)。
我可以通过节点IP正常访问Traefik仪表板(-> MetalLB似乎有效)。它为测试容器注册服务和路由。一切看起来都很好,但是当我尝试在浏览器中访问测试容器时,出现502 Bad Gateway错误。
一些探测表明, pod 的出站流量似乎存在问题。当我通过SSH进入节点时,我可以通过其服务或容器IP访问所有容器。从节点到Pod的DNS也可以正常工作。但是,如果我启动一个交互式busybox Pane ,则无法从那里到达任何其他 Pane 或主机。当我将wget编码到任何其他容器(全部在默认 namespace 中)时,我只会得到wget: can't connect to remote host (10.42.0.7): No route to host.。对于Internet上的服务器也是如此。
我尚未安装任何网络策略,并且我所知道的默认情况下未安装任何网络策略。
我也经历了这个:https://kubernetes.io/docs/tasks/debug-application-cluster/debug-service
指南中的所有内容均正常运行,但pod似乎没有任何网络连接。
我的RKE配置是标准配置,除了我关闭了标准Nginx入口并启用了etcd静态加密。
有任何想法吗?

最佳答案

也许只是仔细检查一下您节点的ip转发是否已打开:sysctl net.ipv4.ip_forward如果由于某种原因它不返回:net.ipv4.ip_forward = 1然后可以使用以下命令进行设置:sudo sysctl -w net.ipv4.ip_forward=1并使其永久:

  • 编辑/etc/sysctl.conf
  • 添加或取消注释net.ipv4.ip_forward = 1
  • 并通过sysctl -p /etc/sysctl.conf加载
  • 关于docker - Kubernetes Pod上没有出站网络,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63891644/

    相关文章:

    docker - 如何在声明性 Jenkins 管道中使用 Docker 的 --cache-from 构建标志?

    curl - Jenkins 无法 curl 到 docker 容器上的 http 端点主机

    docker - 如何彻底阻止容器重启 Kubernetes

    kubernetes - 命名空间 “stuck” 作为终止

    php - Docker安装pecl报"No releases available"错误

    docker - 如何使用 docker cp 将多个文件从容器复制到主机

    java - c - 客户端/java - 服务器 - 客户端读取奇怪的东西

    node.js - 如何从连接到同一网络的另一台计算机打开 create-react-app?

    python TCP客户端无法连接到我的TCP服务器

    javascript - 如何在 Pod 之间复制文件或在 Pod 中执行?