K8S_IPV6 POD与数据库联通方法以及快速网络调试的一个思路

发布时间 2023-12-25 11:16:53作者: 济南小老虎

K8S_IPV6 POD与数据库联通方法以及快速网络调试的一个思路


背景

前端时间搭建了一套K8S only IPV6 Single Stack的测试环境
因为自己长时间不搞K8S了, 并且IPV6的搭建方法墙内的文档很不完整
我这边仅是搭建了一套比较基本的 
K8S_calico_ingress的 单栈IPV6的环境
但是同事一直要求测试全链路的 IPV6
因为我这边没有进行pod网段和node网段的BGP网关打通, 所以实际上是无法使用的. 

然后还是想到 endpoint暴露服务的方式进行简单测试. 

处理和测试验证的过程如下
顺便也发现了一个可能可行的快速调试POD网络的方法

endpoint的处理

我这边其实在K8S内部暴露了很多 service, 简单如下:

[root@k8sipv6 gsclouddocker]# kubectl get svc
NAME                TYPE        CLUSTER-IP            EXTERNAL-IP   PORT(S)           AGE
gscloud-service     NodePort    2001:db8:42:1::521f   <none>        80:30237/TCP      5d16h
kubernetes          ClusterIP   2001:db8:42:1::1      <none>        443/TCP           17d
mssql-service       NodePort    2001:db8:42:1::9e71   <none>        1433:31155/TCP    2m48s
mysql-service       NodePort    2001:db8:42:1::7b09   <none>        3306:30406/TCP    17d
rabbitmq-service    NodePort    2001:db8:42:1::d829   <none>        5672:32027/TCP    2d22h
rabbitmqm-service   NodePort    2001:db8:42:1::f774   <none>        15672:31296/TCP   2d22h
redis-service       NodePort    2001:db8:42:1::9a1e   <none>        6378:30410/TCP    17d

IPV6连通性验证

前景说明:
我这边采用了 opnejdk的 debian 的原始image 进行打包应用服务.
里面其实缺少很多比较关键的调试工具. 
为了能够验证(堵住部分人的质疑),发现在相同版本的glibc下可以快速的进行网络和应用调试.

我这边使用docker cp的方式将 redis-cli 和 /usr/bin/telnet 放到了容器内的 /usr/bin 目录下面
然后kubectl exec -it podname bash 的方式登录镜像, 发现可以进行如下操作

注意我使用的ipv6的地址是 svc 的CLUSTER-IP: 

root@gscloud-deployment-5487fb6775-rxxs6:/app# redis-cli -h 2001:db8:42:1::9a1e -p 6378
[2001:db8:42:1::9a1e]:6378> auth Testxxxx
OK
[2001:db8:42:1::9a1e]:6378> info
# Server
redis_version:6.2.8
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:7abcdc1a1f1d7105
redis_mode:standalone
os:Linux 4.18.0-425.13.1.0.1.an8.x86_64 x86_64
arch_bits:64
monotonic_clock:POSIX clock_gettime
multiplexing_api:epoll
atomicvar_api:c11-builtin
gcc_version:7.3.0
process_id:2813
process_supervised:no
run_id:49659597608000711068ba46f6572f6271a59ac2

然后数据库方面的验证为:
root@gscloud-deployment-5487fb6775-rxxs6:/app# telnet  2001:db8:42:1::9e71 1433
Trying 2001:db8:42:1::9e71...
Connected to 2001:db8:42:1::9e71.
Escape character is '^]'.

root@gscloud-deployment-5487fb6775-rxxs6:/app# telnet 2001:db8:42:1::7b09 3306
Trying 2001:db8:42:1::7b09...
Connected to 2001:db8:42:1::7b09.
Escape character is '^]'.
J
8.0.32_"

总结

还是需要开动思路.
最小的投入后的最大的成果.
这一块验证思路还是比较简单的.
也可能为以后得工作带来很大的工作效率的提升.