Networking Kubernetes通过VirtualBox:豆荚可以';t访问互联网服务
解决方案 在我转移到适当的开发服务器后,问题消失了。显然,Kubernetes群集无法在Virutalbox中的桥接机场网络环境中正常运行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
我已经设置了一个部署和一个服务,我正在通过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中看到但在节点上没有看到的
无法解决主机错误,我将:
查看它是否与节点上的/etc/resolv.conf
不同
我会尝试通过在容器中传递特定名称服务器来查找wikipedia.org(如果需要,请在运行的容器中安装nslookup
):
我会尝试使用一个特定的pod规范运行我的pod规范,其中包括我选择的名称服务器
要解决您在Pod中看到但在节点上没有看到的无法解决主机错误,我将:
查看它是否与节点上的/etc/resolv.conf
不同
我会尝试通过在容器中传递特定名称服务器来查找wikipedia.org(如果需要,请在运行的容器中安装nslookup
):
我会尝试使用一个特定的pod规范运行我的pod规范,其中包括我选择的名称服务器
你用proxy
标记你的问题的事实几乎是一个死赠品——想必你的主机有某种代理,通过它连接到外部世界?如果在您的环境中设置了环境变量https\u proxy
,那么curl将使用它,而无需在命令行上显式地说--proxy
。在详细模式下运行curlcurl-vhttps://wikipedia.org
将显示与代理的握手(如果有)。请注意,如果您使用的是代理,则需要为这些POD提供其MITM CA,并且看起来您有dns解析问题。如果在curl请求工作的节点上键入/etc/resolv.conf
,并将其与curl请求失败的容器中的/etc/resolv.conf
进行比较,它们是一样的吗?你用proxy
标记你的问题这一事实几乎是一个死赠品——想必你的主机有某种代理,通过它与外部世界连接?如果在您的环境中设置了环境变量https\u proxy
,那么curl将使用它,而无需在命令行上显式地说--proxy
。在详细模式下运行curlcurl-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