Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.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
Google cloud platform 我可以在Kubernetes吊舱内运行Google监控代理吗?_Google Cloud Platform_Kubernetes_Google Kubernetes Engine_Stackdriver_Google Cloud Monitoring - Fatal编程技术网

Google cloud platform 我可以在Kubernetes吊舱内运行Google监控代理吗?

Google cloud platform 我可以在Kubernetes吊舱内运行Google监控代理吗?,google-cloud-platform,kubernetes,google-kubernetes-engine,stackdriver,google-cloud-monitoring,Google Cloud Platform,Kubernetes,Google Kubernetes Engine,Stackdriver,Google Cloud Monitoring,似乎应该在Kubernetes集群的每个节点(即每个计算实例,即每台机器)上安装 然而,新的插件,比如,…,需要这些代理知道这些服务的IP。这意味着运行和设置kube代理,这意味着在Pod上运行Google监控代理 这两个冲突:一方面代理监视整个机器,另一方面它监视一台或多台机器上运行的服务 这些Stackdriver插件能否在Google容器引擎(GKE)/Kubernetes群集上工作?为了监视每台机器(内存、CPU、磁盘…),可以在每个节点(即GKE群集的每个计算实例)上安装代理。请注意,

似乎应该在Kubernetes集群的每个节点(即每个计算实例,即每台机器)上安装

然而,新的插件,比如,…,需要这些代理知道这些服务的IP。这意味着运行和设置
kube代理
,这意味着在Pod上运行Google监控代理

这两个冲突:一方面代理监视整个机器,另一方面它监视一台或多台机器上运行的服务

这些Stackdriver插件能否在Google容器引擎(GKE)/Kubernetes群集上工作?

为了监视每台机器(内存、CPU、磁盘…),可以在每个节点(即GKE群集的每个计算实例)上安装代理。请注意,在重新创建的节点不会安装代理的情况下,它不会与自动缩放一起工作

要监视服务(请求数/秒、客户端连接…),可以在另一个容器中安装代理插件,以便例如Nginx Pod运行两个容器:

  • Nginx
  • 谷歌监控代理和Nginx插件

注意:尚未完全测试。

您可以在Dockerfile中安装StackDriver代理

我已经能够在couchdb容器中实现这一点,如下所示:

FROM klaemo/couchdb

RUN apt-get update
RUN apt-get install curl lsb-release -y
RUN curl -O https://repo.stackdriver.com/stack-install.sh
RUN apt-get install libyajl2 -y

COPY couchdb.conf /opt/stackdriver/collectd/etc/collectd.d/couchdb.conf

CMD bash stack-install.sh --write-gcm && service stackdriver-agent restart && couchdb

还有一种使用Dockerfile的方法。 创建docker映像时,预安装stackdriver代理安装所需的库

FROM mongo
RUN apt-get update && apt-get install -y curl lsb-release

# COPY credential
COPY gcloud-credential.json /etc/google/auth/application_default_credentials.json
ENV GOOGLE_APPLICATION_CREDENTIALS "/etc/google/auth/application_default_credentials.json"

# download Stackdriver Agent installer
RUN curl -O https://repo.stackdriver.com/stack-install.sh
RUN chmod +x /stack-install.sh

# COPY stackdriver mongodb plugin
COPY mongodb.conf /opt/stackdriver/collectd/etc/collectd.d/mongodb.conf
然后使用POD生命周期安装代理

spec:
  containers:
  - image: your_mongo_image
    name: my-mongo
    ports:
    - containerPort: 27017
    lifecycle:
      postStart:
        exec:
          command: ["/stack-install.sh", "--write-gcm"]

我曾尝试使用一个吊舱中的Stackdriver容器来收集同一吊舱中Nginx/Uwsgi的统计数据。 我有一些发现可能没有那么大帮助。仅供参考

要创建stackdriver映像,可以引用Keto创建的docker文件。

run.sh如下所示

#!/usr/bin/env bash

/opt/stackdriver/stack-config --write-gcm --no-start
/etc/init.d/stackdriver-agent start

while true; do
    sleep 60
    agent_pid=$(cat /var/run/stackdriver-agent.pid 2>/dev/null)

    ps -p $agent_pid > /dev/null 2>&1
    if [ $? != 0 ]; then
        echo "Stackdriver agent pid not found!"
        break;
    fi
done
在GKE/K8S部署yaml文件中

apiVersion: extensions/v1beta1
kind: Deployment
...
      - name: stackdriver-agent
        image: gcr.io/<project_id>/stackdriver-agent:<your_version>
        command: ['/run.sh']
apiVersion:extensions/v1beta1
种类:部署
...
-姓名:stackdriver代理
图片:gcr.io//stackdriver-agent:
命令:['/run.sh']
在我的测试中,我发现

  • 它将基于[node_name]而不是[container_name]报告统计数据
  • 它将收集许多对节点有意义的系统统计信息,但由于它位于pod中,因此毫无意义

嗯,我希望找到一些方法来收集我需要的pod和节点的统计数据,但我没有找到一个简单的方法来做到这一点。我所做的是通过Google Python API库来实现,但这需要花费太多的时间。

我知道case#1是一个穷人的解决办法,我认为Google应该提供更好的支持。例如案例#2非常感谢:)但是您的stackdriver代理应该像监控整个主机一样监控您的容器。是的,这确实有点棘手。根据您如何配置吊舱,这可能会或可能不会按预期工作。如果您的主要目标是监视pod上的服务,那么您必须这样做。如果您想监视主机的某些详细信息,可以查看编辑compute instanceTemplate的启动脚本并在那里运行安装。同样的问题是“它将基于[node_name]而不是[container_name]报告统计数据”。
apiVersion: extensions/v1beta1
kind: Deployment
...
      - name: stackdriver-agent
        image: gcr.io/<project_id>/stackdriver-agent:<your_version>
        command: ['/run.sh']