rootsongjc / kubernetes-handbook

Kubernetes中文指南/云原生应用架构实战手册
https://jimmysong.io/book/kubernetes-handbook
Creative Commons Attribution 4.0 International
11.11k stars 2.95k forks source link

按教程部署,node 验证的时候,服务不能通过clusterIp:port 或 nodeIp:nodePort 访问 #282

Closed lixianyang closed 6 years ago

lixianyang commented 6 years ago

环境

版本和配置信息

操作

导致该问题的操作或现象 curl clusterIP:port 有timeout, 有正常 curl hostIP:hostport 有timeout 有正常 从 NGINX 日志来看,只有在主机上访问到主机上 pod 的请求才正常

日志

日志或报错信息 screenshot from 2018-09-10 11-34-14 screenshot from 2018-09-10 11-36-42 screenshot from 2018-09-10 11-39-40

rootsongjc commented 6 years ago

看样子是跨主机的pod通信有问题,你查下kube-proxy还有kubelet的日志,Ping下跨主机的pod IP看看通不通。

lixianyang commented 6 years ago

嗯,跨主机的 pod ping 不通 节点路由信息如下: screenshot from 2018-09-10 12-15-27

rootsongjc commented 6 years ago

防火墙关了吗?

lixianyang commented 6 years ago

刚跟同事沟通了一下, openstack 层限制了 mac 地址(mac 和 ip) 绑定,可能是这个原因导致 flannel host-gw 模式节点之间不通

lixianyang commented 6 years ago

flannel host-gw 改为 vxlan

  1. host-gw 的路由信息没有清理
  2. 我们环境中会加上 192.168.0.0/16 的静态路由(跟 flannel 网段冲突, 导致 flannel 路由信息没能正常写入) 解决办法:
  3. 删除 host-gw 遗留的路由(192.168.xxx.0/16 到其他节点的路由项)
  4. 删除静态路由
  5. 重启 flannel.service (会自动添加到 flannel 的路由项) 谢谢