![通过 Virtualbox 运行 Kubernetes;Pod 无法访问互联网服务](https://linux22.com/image/758672/%E9%80%9A%E8%BF%87%20Virtualbox%20%E8%BF%90%E8%A1%8C%20Kubernetes%EF%BC%9BPod%20%E6%97%A0%E6%B3%95%E8%AE%BF%E9%97%AE%E4%BA%92%E8%81%94%E7%BD%91%E6%9C%8D%E5%8A%A1.png)
系统:VirtualBox、Debian 10 Server、带有 kubeadm 的 Kubernetes
我已经设置了部署和服务,并通过 NodePort 公开它,但我的 Pod 不知何故无法访问互联网。但是,运行 Pod 的工作节点有互联网连接。我通过 exec 进入正在运行的 Pod 并 curl 网页对此进行了测试。
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>
Exec Pod - Curl
root@master:/home/user# kubectl exec -it my-website-6d8f7c7bfb-sdtrh /bin/bash
root@my-website-6d8f7c7bfb-sdtrh:/sbin# curl https://wikipedia.org
curl: (6) Could not resolve host: wikipedia.org
有人知道那是什么吗?我对 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 进入。
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
- 因此 2 也可能会失败。但我现在会测试它。
答案1
解决方案
在我移至合适的开发服务器后,问题就消失了。显然,Kubernetes 集群无法在 Virutalbox 中的桥接 AirPort 网络环境中正常运行。