docker - Kubernetes pod 内的 Internet 连接无法正常工作
问题描述
无法从吊舱内连接到互联网
我的系统规格包括:我使用 2 个系统创建了一个 Kubernetes 集群,一个作为主节点,另一个作为工作节点。
操作系统:NAME="Red Hat Enterprise Linux" VERSION="8.3 (Ootpa)" ID="rhel"。
我使用以下链接( https://dzone.com/articles/kubernetes-installation-in-redhat-c entos )安装了集群的 Kuberenetes
我已经尝试过 CALICO pod 网络和 Flannel pod 网络,因为这两个问题都发生了。无法从吊舱内连接到互联网
有关更多详细信息,请参见下图
您可以看到所有的 pod 都已启动并运行。
我的 coredns pod 也已启动并运行,相应的服务也已启动,请查看下图
调试
对于调试,我尝试使用此链接(https://kubernetes.io/docs/tasks/administer-cluster/dns-debugging-resolution/)
每当我执行 nslookup 时,它都会显示错误消息(;;连接超时;无法访问服务器,命令以退出代码 1 终止)
请看下面的图片
谁能告诉确切的问题出在哪里。为什么从吊舱内部我无法连接到互联网
任何帮助将不胜感激谢谢。
解决方案
此类问题有两种可能性:
这可能不是 CoreDNS 本身的问题,而是 Kubernetes 网络问题,即到 ClusterIP 的流量未正确定向到 Pod。可能是 kube-proxy 对此负责。
这是关于故障排除服务的Kubernetes 指南。
另一个对于 rhel/centos 发行版非常常见的问题是
nftables
backed 与 kubernetes 不兼容的问题。nftables
可作为内核iptables
子系统的现代替代品。解决方法是使用 Calico,因为从 v3.8.1+ 开始,CNI 可以在 NFT 模式下使用 iptables 的主机上运行。设置该
FELIX_IPTABLESBACKEND=NFT
选项将告诉 Calico 使用 nftables 后端。目前,这需要明确设置。最后,您的 Pod 网络很可能与主机网络重叠。参考:安装 Pod 网络插件
推荐阅读
- kotlin - 使用 IntellJ 在 kotlin 中运行 hello world 需要什么
- database - SAS Newcomer:ProcFreq 的数据排列
- python - 如何在 venv 中使用 SublimeText?
- python - 成功因素 - 更新自定义选项列表
- react-native - 如何在不同文件中描述的 webview 页面之间导航
- c++ - 为什么我的向量函数没有像他们应该的那样对数据进行排序?
- java - 调用 Runtime.getRuntime().exec() 是持续执行 OS 命令的正确方法吗?
- javascript - 为什么正则表达式在javascript中有时不起作用?
- android - 观察者在活动中被调用两次
- laravel - 从 livewire 中的 emit 发送集合显然会发送其他信息