Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database Kubernetes传出连接_Database_Kubernetes - Fatal编程技术网

Database Kubernetes传出连接

Database Kubernetes传出连接,database,kubernetes,Database,Kubernetes,我将保持这个简单,并问,有没有一种方法可以查看哪个pod与端点(如数据库端点)有活动连接 我的集群包含几百个名称空间,我的数据库提供商刚刚告诉我,连接的最大数量几乎达到了,我想指出同时使用多个连接到数据库端点的pod 我可以从我的数据库集群中看到连接来自集群节点的IP。。。但它不会说是哪个豆荚。。。我有很多豆荚 感谢您的帮助最简单的方法是在所有Kubernetes节点上运行netstat: $ netstat -tunaple | grep ESTABLISHED | grep <ip a

我将保持这个简单,并问,有没有一种方法可以查看哪个pod与端点(如数据库端点)有活动连接

我的集群包含几百个名称空间,我的数据库提供商刚刚告诉我,连接的最大数量几乎达到了,我想指出同时使用多个连接到数据库端点的pod

我可以从我的数据库集群中看到连接来自集群节点的IP。。。但它不会说是哪个豆荚。。。我有很多豆荚


感谢您的帮助

最简单的方法是在所有Kubernetes节点上运行
netstat

$ netstat -tunaple | grep ESTABLISHED | grep <ip address of db provider>
然后,在找到容器id后,如果查看所有的pod:

$ kubectl get pod <pod-id> -o=yaml

每个容器使用自己的网络名称空间,因此要检查容器名称空间内的网络连接,需要在该名称空间内运行命令

幸运的是,Pod中的所有容器共享相同的网络名称空间,因此您可以向Pod中添加小的sidecar容器,以打印日志打开连接

或者,您可以在pod内部运行
netstat
命令(如果pod的文件系统中有):

之后,您将在磁盘上有一个文件(
netstat.txt
),其中包含有关POD中连接的所有信息

第三条路是最重要的。您需要使用
docker ps
查找容器ID,并运行以下命令以获取PID

$ pid = "$(docker inspect -f '{{.State.Pid}}' "container_name | Uuid")"
然后,您需要创建命名命名空间: (您可以使用任何想要的名称,或容器名称/Uuid/Pod名称作为名称空间名称的替换)

现在,您可以在该命名空间中运行命令:

sudo ip netns exec "namespace_name" netstat -tunaple | grep ESTABLISHED
您需要为每个节点上的每个pod执行此操作。因此,对特定容器进行故障排除可能很有用,但您的任务需要更多的自动化


安装到集群可能会对您有所帮助。它有几项有趣的功能,如本文所述

您需要一个中心监控解决方案来监控此类连接和其他许多事情,在DB guy告诉您之前,您应该能够看到这些事情。您是对的,我确实需要更多的监控,但是这些联系并不是很直观,你是否已经尝试过按照Rico的建议获取这些统计数据的方法?我试图一步一步地完全遵循它们,但这对我来说不起作用。netstat没有返回任何与数据库端点建立的连接。。。所以但它不起作用。下面是使用docker获取节点上所有容器连接的另一种方法:
kubectl get pods | grep Running | awk '{ print $1 }' | xargs -I % sh -c 'echo == Pod %; kubectl exec -ti % -- netstat -tunaple' >netstat.txt
# or
kubectl get pods | grep Running | awk '{ print $1 }' | xargs -I % sh -c 'echo == Pod %; kubectl exec -ti % -- netstat -tunaple | grep ESTABLISHED' >netstat.txt
$ pid = "$(docker inspect -f '{{.State.Pid}}' "container_name | Uuid")"
sudo mkdir -p /var/run/netns
sudo ln -sf /proc/$pid/ns/net "/var/run/netns/namespace_name"
sudo ip netns exec "namespace_name" netstat -tunaple | grep ESTABLISHED