linux - 如何从 microk8s 部署 pod 访问我网络中的主机
问题描述
我正在尝试从部署 pod 内部访问位于另一台服务器(但在我的网络上)中的主机,并且我正在使用microk8s
.
问题是在我microk8s
安装的服务器上,我可以轻松地通过ping my-network-host.qa.local
. 但是当我进入吊舱时microk8s kubectl exec -it pod_name -- /bin/bash
,我ping my-network-host.qa.local
会说:Name or service not known
。
当我连接到我的计算机上的 VPN 以在该网络上并使用它在本地部署它时,docker-desktop kubernetes
我可以从 pod 内 ping 该主机。所以我认为问题microk8s
在于不让我的 pod 使用我的网络。
有什么方法可以告诉 microk8s 从我的网络使用我的主机吗?
ps 我可以从 pod pingip
那台服务器,但我无法从 pod ping 主机
解决方案
根据我在 StackOverflow 上找到的另一个答案,我设法修复了它。
需要进行 2 处更改才能使其正常工作:
更新kubelet 配置以使用resolv-conf
:
sudo echo "--resolv-conf=/run/systemd/resolve/resolv.conf" >> /var/snap/microk8s/current/args/kubelet
重启 kubelet 服务:
sudo service snap.microk8s.daemon-kubelet restart
然后将CoreDNS 转发更改为指向您的名称服务器:
首先打开 coredns 配置映射,以便您可以编辑它
sudo microk8s.kubectl edit configmap coredns -n kube-system
并更新文件
forward . 8.8.8.8 8.8.4.4 #REMOVE THIS LINE
forward . xxx.xxx.xxx.xxx #ADD THIS WITH YOUR IP
您可以获得 eth0 DNS 地址:
nmcli dev show 2>/dev/null | grep DNS | sed 's/^.*:\s*//'
在我的情况下,我已经将 ip 作为名称服务器/run/systemd/resolve/resolv.conf
。
现在只需保存更改,然后进入您的 pod,以便您可以访问它们。
另一个帖子中有评论建议添加
forward . /etc/resolv.conf
但这对我的情况不起作用。
推荐阅读
- php - 尝试访问 cpanel 中的 wordpress url 时,cron 作业不起作用
- asp.net - Web 服务返回有限的记录数
- c++ - 需要帮助重载多项式类运算符 C++
- python-3.x - (Selenium WebDriver+ Python3)如何验证链接指向图像或至少返回它的文件扩展名?
- javascript - 比较数据库时间和服务器时间
- reactjs - 如何同步转换反应异步测试?
- node.js - 找不到模块'/app/dist/bin/www.js'
- nosql - RavenDb NoSQL 多对多建模
- kubernetes - 如何将角色与服务帐户绑定 - Kubernetes
- ios - 如何根据 iPhone 尺寸快速使滚动视图达到键盘高度