1

我有一个安装了 KUBEADM 的 3 节点裸机集群(使用运行 CentOS 7 的英特尔 NUC 构建)。

主节点提供2个不同的网络接口,一个用于外部访问,第二个配置为集群本地网络的DHCP服务器。通过以下 iptables 规则启用两个网络之间的 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/ ) 启动了一个集群,并且除了每个 POD 都可以访问 kube-dns 之外,一切似乎都正常工作在每个节点中)用于公开的服务。

只是为了测试,我创建了一个 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,一切都很好,而如果我尝试在另一个节点卷曲请求超时时卷曲它。

任何帮助将非常感激。

4

1 回答 1

2

Kubernetes 和 Calico 使用iptables. 我建议禁用所有启动规则,然后安装 docker,然后使用kubeadm.

于 2018-09-11T16:18:45.743 回答