似乎应该在Kubernetes集群的每个节点(即每个计算实例,即每台机器)上安装Google Monitoring Agent (powered by Stackdriver) .
但是,新的插件,如Nginx,Redis,ElasticSearch ......,需要这些代理知道这些服务的IP . 这意味着运行和设置 kube-proxy
应该意味着在Pod上运行Google Monitoring Agent .
这两个冲突:一方面,代理监视整个计算机,另一方面监视一台或多台计算机上运行的服务 .
这些Stackdriver插件可以在 Google Container Engine (GKE)/ Kubernetes集群上运行吗?
4 回答
您可以在Dockerfile中安装StackDriver Agent .
我已经能够为couchdb容器工作,如下所示:
要监视每台计算机(内存,CPU,磁盘......),可以在每个节点上(即在GKE集群的每个计算实例上)安装代理 . 请注意,在重新创建的节点不安装代理的意义上,它不适用于自动缩放 .
要监视服务(请求的数量,客户端连接......),可以在另一个容器中安装代理插件,以便例如Nginx Pod运行两个容器:
Nginx
Google Monitoring Agent以及Nginx插件
注意:尚未完全测试 .
我曾尝试在pod中使用Stackdriver容器来收集同一pod中有关Nginx / Uwsgi的统计信息 . 我有一些可能不太有帮助的发现 . 仅供参考 .
要创建堆栈驱动程序映像,您可以引用由Keto创建的docker文件 . https://hub.docker.com/r/keto/stackdriver/~/dockerfile/
run.sh如下所示,
在GKE / K8S部署yaml文件中,
在我的测试中,我找到了
它将根据[node_name]而不是[container_name]报告统计信息 .
它将收集许多对节点有意义的系统统计信息,但由于它位于一个pod中,因此它毫无意义 .
好吧,我希望找到一些方法来收集我需要的pod和节点的统计数据,但我找不到一个简单的方法来做到这一点 . 我所做的是通过Google Python API库来实现,但这需要花费太多时间 .
还有另一种使用Dockerfile的方法 . 创建docker镜像时,请为stackdriver-agent安装预安装必要的库 .
然后使用POD生命周期安装代理 .