k8s雙棧協議無法訪問集群外ipv6服務(解決)

來源:騰訊云

問題背景

k8s集群升級了雙協議棧后,從集群內無法訪問外部ipv6服務,已經確認部署了Endpoint和Service。而同樣采用ipv4是沒問題的。

1 部署Endpoint和Service

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在1002:003B:456C:678D:890E:0012:234F:56G7這臺機器山上抓包:
tcpdump -i eth0 host 1002:003B:456C:678D:890E:0012:234F:56G7 tcp -vv

發現可以收到發來的請求,但是并沒有回包。


(資料圖片僅供參考)

同樣用tcpdump抓ipv4的包,是有回包的。分析ipv4和ipv6的差異:ipv4的SrcIP是Pod所在宿主機的ip,而ipv6的SrcIP是2000:100:100:100:9a7e:bead:f22c:9640,而2000:100:100:100::/64是集群內部的ipv6網段,可以確定ipv6的請求從Pod所在宿主機出來時沒有進行SNAT轉換。

2 增加SNAT的iptables策略

這里采用了一種比較簡單的解決方案,最終方案應該通過集群的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上漂移,所以這不是一個好的方法。

關鍵詞:

推薦

直播更多》

關閉

資訊更多》

焦點

日日噜噜噜噜夜夜爽亚洲精品| 亚洲综合图色40p| 亚洲av永久中文无码精品| 亚洲AV无码一区二区一二区| 亚洲欧洲日本精品| 国产精品亚洲一区二区三区在线观看| 亚洲国产精品无码专区影院| 亚洲狠狠成人综合网| 亚洲精品人成无码中文毛片| 亚洲成人免费网址| 亚洲系列中文字幕| 奇米影视亚洲春色| 亚洲最大激情中文字幕| 亚洲开心婷婷中文字幕| 相泽南亚洲一区二区在线播放| 亚洲欧洲日韩综合| 亚洲制服丝袜精品久久| 亚洲人精品午夜射精日韩| 亚洲成aⅴ人片久青草影院按摩| 亚洲av色影在线| 亚洲精品国产V片在线观看 | 亚洲AV网站在线观看| 亚洲AV无码久久久久网站蜜桃 | 亚洲线精品一区二区三区影音先锋 | 亚洲国产专区一区| 亚洲午夜成人精品电影在线观看| 亚洲乱码中文字幕综合234| 亚洲AV无码乱码在线观看牲色| 亚洲精品97久久中文字幕无码| 亚洲国产香蕉人人爽成AV片久久| 亚洲裸男gv网站| 亚洲人成亚洲人成在线观看| 久久精品国产精品亚洲艾 | 亚洲精品在线观看视频| 亚洲成A∨人片天堂网无码| 亚洲片一区二区三区| 亚洲人成在线播放网站| 久久精品国产亚洲AV无码麻豆 | 亚洲国产精品免费在线观看| 亚洲AV无码无限在线观看不卡| 中文无码亚洲精品字幕|