我有一个安装了KUBEADM的3节点裸机集群(使用运行CentOS 7的intel 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,那么一切都很好,而如果我尝试在另一个节点中卷曲群集IP请求超时。
任何帮助将不胜感激。