0

我有一个从这里部署的带有 Calico 的一主一工人 Kubernetes 集群,清单没有任何更改。主服务器有一个内部 IP 地址,10.132.0.30我试图在主服务器上公开我的服务(在工作人员上运行),如下所示:

apiVersion: v1
kind: Service
metadata:
  name: nginx
spec:
  type: ClusterIP
  externalIPs: [10.132.0.30]
  ports:
  - port: 80
    targetPort: 80
  selector:
    app: nginx

curl http://10.132.0.30from master 按预期工作,但是从我的笔记本电脑卷曲 master 在其外部 IP 地址上挂起,即使我可以使用以下命令看到连接tcpdump

# tcpdump -i eth0 dst 10.132.0.30 and dst port 80
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
22:52:16.692059 IP cpc102582-walt20-2-0-cust85.13-2.cable.virginm.net.62882 > fail5-luke-master.c.jetstack-luke.internal.http: Flags [S], seq 3014275997, win 65535, options [mss 1460,nop,wscale 6,nop,nop,TS val 181016377 ecr 0,sackOK,eol], length 0
...

在其他接口上运行其他tcpdump命令似乎数据包到达 nginx 但没有返回(cali3561fc118c0是我的 nginx Pod 在根网络命名空间中的工作人员上的接口,并且192.168.1.4是它分配的 IP):

# tcpdump -i cali3561fc118c0 dst 192.168.1.4
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on cali3561fc118c0, link-type EN10MB (Ethernet), capture size 262144 bytes
23:00:23.626170 IP 192.168.0.1.65495 > 192.168.1.4.http-alt: Flags [S], seq 2616662679, win 65535, options [mss 1460,nop,wscale 6,nop,nop,TS val 181480911 ecr 0,sackOK,eol], length 0
...

我想有很多可能的问题,但我有什么明显的遗漏吗?

编辑:我已经听从了 Calico 文档的建议,但没有运气

Kubernetes 版本:1.13.4

4

1 回答 1

0

我没有设置--cluster-cidron kube-proxy。设置这意味着kube-proxy知道伪装外部流量,否则返回路径将是不对称的(它总是从节点反弹到工作人员):https ://github.com/kubernetes/kubernetes/blob/master/pkg/proxy/ iptables/proxier.go#L841-L845

于 2019-03-08T01:00:21.557 回答