k8s集群升级了双协议栈后,从集群内无法访问外部ipv6服务,已经确认部署了Endpoint和Service。而同样采用ipv4是没问题的。
apiVersion: v1kind: Servicemetadata:  name: myep  namespace: default  labels:    app: myepspec:  ports:  - name: http-8080    port: 8080    protocol: TCP    targetPort: 8080  ipFamilies:  - IPv6---apiVersion: v1kind: EndpointsapiVersion: v1metadata:  name: myep  #此名字需与 Service 中的 metadata.name 的值一致  namespace: default  labels:    app: myepsubsets:  - addresses:      - ip: 1002:003B:456C:678D:890E:0012:234F:56G7   ## 集群外Ip    ports:      - port: 8080        name: http-8080然后在集群的Pod中访问myep:8080不通。
tcpdump -i eth0 host 1002:003B:456C:678D:890E:0012:234F:56G7 tcp -vv发现可以收到发来的请求,但是并没有回包。
(相关资料图)
这里采用了一种比较简单的解决方案,最终方案应该通过集群的cni配置解决。
为所有的宿主机添加iptables策略:
ip6tables -t nat -A POSTROUTING -s 2000:100:100:100::/64 -o eth0 -j SNAT --to-source FC00:0:130F::9C0:876A:130B参数  | 说明  | 
|---|---|
-s  | 要处理的源IP段  | 
-o  | 规则绑定的接口  | 
--to-source  | 替换的IP(本机IP)  | 
增加iptables策略后服务就可以访问了。
最初在服务所在主机上通过增加静态路由的方式也可以临时性达到目的:
ip -6 route add 2000:100:100:100::/64 via FC00:0:130F::9C0:876A:130B相当于把Pod所在宿主机作为Pod内部网段的网关,这样可以临时解决问题,当时由于Pod会在集群的Node上漂移,所以这不是一个好的方法。
关键词:
	
	
	
	
	
	
	
56位残疾人士登上黄山 互利互勉共建生活希望 中国新闻网
世界球精选!南京有哪些区比较繁华_南京有哪些区 科学教育网
世界速讯:华硕发布全球最薄笔记本:仅1cm厚 中关村在线
焦点速讯:第二届全国博士后创新创业大赛将于5月启动报名 央视新闻客户端