Networking Kubernetes通过VirtualBox:豆荚可以';t访问互联网服务

Networking Kubernetes通过VirtualBox:豆荚可以';t访问互联网服务,networking,kubernetes,proxy,dns,firewall,Networking,Kubernetes,Proxy,Dns,Firewall,解决方案 在我转移到适当的开发服务器后,问题消失了。显然,Kubernetes群集无法在Virutalbox中的桥接机场网络环境中正常运行 我已经设置了一个部署和一个服务,我正在通过NodePort公开它,但我的播客不知怎的无法访问互联网。但是,运行pod的工作节点具有internet连接。我将exec测试到运行的pod中并卷曲一个网页 豆荚 root@master:/home/user# kubectl get pods NAME

解决方案

在我转移到适当的开发服务器后,问题消失了。显然,Kubernetes群集无法在Virutalbox中的桥接机场网络环境中正常运行



我已经设置了一个部署和一个服务,我正在通过NodePort公开它,但我的播客不知怎的无法访问互联网。但是,运行pod的工作节点具有internet连接。我将exec测试到运行的pod中并卷曲一个网页

豆荚

root@master:/home/user# kubectl get pods
NAME                               READY   STATUS      RESTARTS   AGE
my-website-6d8f7c7bfb-sdtrh        1/1     Running     1          6d1h
从主机卷曲

root@master:/home/user# curl https://wikipedia.org
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="https://www.wikipedia.org/">here</a>.</p>
</body></html>
有人知道那是什么吗?我对DevOps还比较陌生,所以我还不太了解这一切

为Howard_Roark编辑

  • 我已经检查过了,是的,这两个
    /etc/resolv.conf
    不同
  • 工作节点上的

    root@worker:~# cat /etc/resolv.conf 
    # Generated by NetworkManager
    search fritz.box
    nameserver 192.168.178.1
    
    内吊舱

    / # cat /etc/resolv.conf 
    nameserver 10.96.0.10
    search default.svc.cluster.local svc.cluster.local cluster.local fritz.box
    options ndots:5
    
  • 我可以从节点本身转到另一个名称服务器,但不能从pod
  • 可能也会失败,所以2。但我现在要测试一下

  • 要解决您在Pod中看到但在节点上没有看到的
    无法解决主机
    错误,我将:

  • 查看它是否与节点上的
    /etc/resolv.conf
    不同
  • 我会尝试通过在容器中传递特定名称服务器来查找wikipedia.org(如果需要,请在运行的容器中安装
    nslookup
    ):
  • 我会尝试使用一个特定的pod规范运行我的pod规范,其中包括我选择的名称服务器

  • 要解决您在Pod中看到但在节点上没有看到的
    无法解决主机
    错误,我将:

  • 查看它是否与节点上的
    /etc/resolv.conf
    不同
  • 我会尝试通过在容器中传递特定名称服务器来查找wikipedia.org(如果需要,请在运行的容器中安装
    nslookup
    ):
  • 我会尝试使用一个特定的pod规范运行我的pod规范,其中包括我选择的名称服务器

  • 你用
    proxy
    标记你的问题的事实几乎是一个死赠品——想必你的主机有某种代理,通过它连接到外部世界?如果在您的环境中设置了环境变量
    https\u proxy
    ,那么curl将使用它,而无需在命令行上显式地说
    --proxy
    。在详细模式下运行curl
    curl-vhttps://wikipedia.org
    将显示与代理的握手(如果有)。请注意,如果您使用的是代理,则需要为这些POD提供其MITM CA,并且看起来您有dns解析问题。如果在curl请求工作的节点上键入
    /etc/resolv.conf
    ,并将其与curl请求失败的容器中的
    /etc/resolv.conf
    进行比较,它们是一样的吗?你用
    proxy
    标记你的问题这一事实几乎是一个死赠品——想必你的主机有某种代理,通过它与外部世界连接?如果在您的环境中设置了环境变量
    https\u proxy
    ,那么curl将使用它,而无需在命令行上显式地说
    --proxy
    。在详细模式下运行curl
    curl-vhttps://wikipedia.org
    将显示与代理的握手(如果有)。请注意,如果您使用的是代理,则需要为这些POD提供其MITM CA,并且看起来您有dns解析问题。如果在curl请求工作的节点上键入
    /etc/resolv.conf
    ,并将其与curl请求失败的容器中的
    /etc/resolv.conf
    进行比较,它们是否相同?谢谢您的回答,我用结果编辑了我的问题。有没有办法集中解决这个问题,而不是在每个pod中添加dnsConfig?你应该通过DHCP选项设置你需要的名称服务器。然后,您的容器将使用/etc/resolv.conf中主机的容器。如果你按照我的回答(奇怪的是,我不记得写过),你可以做一些有趣的事情,使用变异的webhook,在提交pod规范时触发dns解析器并将其添加到规范中感谢你的回答,我用结果编辑了我的问题。有没有办法集中解决这个问题,而不是在每个pod中添加dnsConfig?你应该通过DHCP选项设置你需要的名称服务器。然后,您的容器将使用/etc/resolv.conf中主机的容器。如果你按照我的回答去做(奇怪的是我不记得写过),你可以做一些有趣的事情,用一个变异的webhook,在提交pod规范时触发并向规范中添加dns解析器
    / # cat /etc/resolv.conf 
    nameserver 10.96.0.10
    search default.svc.cluster.local svc.cluster.local cluster.local fritz.box
    options ndots:5
    
    root@worker:~# nslookup wikipedia.org 8.8.8.8
    Server:     8.8.8.8
    Address:    8.8.8.8#53
    
    Non-authoritative answer:
    Name:   wikipedia.org
    Address: 91.198.174.192
    Name:   wikipedia.org
    Address: 2620:0:862:ed1a::1
    
    
    root@worker:~# nslookup wikipedia.org 1.1.1.1
    Server:     1.1.1.1
    Address:    1.1.1.1#53
    
    Non-authoritative answer:
    Name:   wikipedia.org
    Address: 91.198.174.192
    Name:   wikipedia.org
    Address: 2620:0:862:ed1a::1
    
    nslookup wikipedia.org 8.8.8.8
    Server:  dns.google
    Address:  8.8.8.8
    
    Non-authoritative answer:
    Name:    wikipedia.org
    Addresses:  2620:0:861:ed1a::1
             208.80.154.224
    
    apiVersion: v1
    kind: Pod
    metadata:
      namespace: default
      name: dns-example
    spec:
      containers:
        - name: test
          image: nginx
      dnsPolicy: "None"
      dnsConfig:
        nameservers:
          - 8.8.8.8