Kubernetes服务仅在POD的主机上提供

问题描述 投票:1回答:1

我有一个3节点裸机群集与KUBEADM一起安装(内置运行CentOS 7的intel NUC)。

主节点具有2个不同的网络接口,一个用于外部访问,第二个配置为集群本地网络的DHCP服务器。通过以下iptables规则启用两个netowrk之间的IP转发和伪装

iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -i {{lan_interface_name}} -j ACCEPT iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -t nat -A POSTROUTING -o {{wan_interface_name}} -j MASQUERADE iptables -A FORWARD -i {{wan_interface_name}} -o {{lan_interface_name}} -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -I FORWARD -i {{lan_interface_name}} -o {{wan_interface_name}} -j ACCEPT

此外,我还为群集中的每个节点启用了docker接口和lan接口之间的转发

iptables -I INPUT -i docker0 -j ACCEPT iptables -t nat -A POSTROUTING -o {{lan_interface_name}} -j MASQUERADE iptables -I FORWARD -i {{lan_interface_name}} -o docker0 -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -I FORWARD -i docker0 -o {{lan_interface_name}} -j ACCEPT

为了确保没有iptables问题,我默认启用了所有流量

iptables -P OUTPUT ACCEPT iptables -P INPUT ACCEPT iptables -P FORWARD ACCEPT

这是/etc/sysctl.conf文件

net.ipv4.ip_forward=1 net.bridge.bridge-nf-call-iptables=1

我按照kubeadm的说明启动了一个带有CALICO(https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/)的集群,除了(甚至kube-dns可以从每个节点中的每个POD到达)外,一切似乎都能正常工作。

仅仅为了测试我创建了一个nginx部署并通过nodeport: kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 30m nginx NodePort 10.96.227.49 <none> 80:31242/TCP 22m 公开它

如果我尝试在POD的同一节点内卷曲群集IP一切都很好,而如果我尝试在另一个节点curl请求超时卷曲它。

任何帮助将非常感激。

docker networking kubernetes kubeadm project-calico
1个回答
2
投票

Kubernetes和Calico用iptables做了令人费解的事情,所以我相信你在某个地方有冲突或封锁规则。我建议禁用所有规则,然后安装docker,然后使用kubeadm安装你的k8s。

© www.soinside.com 2019 - 2024. All rights reserved.