问题描述
我试图在Windows Hyper-V上运行的Ubuntu Server 18.04.2 VM上建立一个单节点Kubernetes集群以进行测试。我使用标准的apt install docker.io
命令安装Docker,并使用命令kubeadm init --pod-network-cidr=10.244.0.0/16
初始化Kubernetes集群。
然后用kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
添加Flannel CNI,然后使用其“稳定” Helm图表安装rabbitmq-ha。
如果VM使用的是Hyper-V的“默认开关”,则一切正常。我还将“外部交换机”配置为“外部网络”,并选中了“允许管理操作系统共享此网络适配器”,指向我的无线适配器。当我在办公室时,将Ubuntu VM设置为使用此“额外开关”,将笔记本电脑和Ubuntu VM的IP地址(eth0)设置为10.X.X.X,一切正常。
当我在家时,将Ubuntu VM设置为使用相同的“额外开关”,我的笔记本电脑和Ubuntu VM的IP地址(eth0)设置为192.168.XX,并且Rabbitmq pod连续抛出错误重新启动,并记录错误消息:
Failed to get nodes from k8s - {Failed_connect,[{to_address,{"kubernetes.default.svc.cluster.local",443}},{inet,[inet],nxdomain}]}
做过一次Google搜索后发现,rabbitmq pod无法解析名称“ kubernetes.default.svc.cluster.local”。
将“ apiserver-advertise-address”添加到设置为我笔记本电脑的192.168.X.X IP地址的kubeadm inti上。
我还尝试使用weave Works代替Flannel,并在“ kubeadm init”命令中省略了CIDR,但是在家用默认开关上工作时,在“额外开关”上的家中出现了相同的Rabbitmq错误。办公网络。
那我想念什么?在Hyper-V和外部交换机下运行时,是否需要Ubuntu网络设置?还是我缺少Kubernetes或Docker配置设置?谢谢!
解决方法
@Steve解决了问题,解决方法是:
首先,较新版本的RabbitMQ Helm图表不存在此问题。但是,如果要解决“名称错误”的解决方法,可以将DNS重写规则添加到CoreDNS配置图中,请参见configmap-coredns。
请查看coredns-issue,以获取对该问题的完整说明以及如何将其缩小到需要“重写”规则的链中特定DNS名称。