在 K8s 中安装 Agent

创建时间:2024-07-03 最近修改时间:2024-08-23

#1. 简介

本章节将详细介绍如何在您的 K8s 集群中部署 DeepFlow Agent。

在 K8s 集群中部署 DeepFlow Agent 后,将自动零侵扰采集 K8s 集群中 Pod 的观测数据(AutoMetrics、AutoTracing、AutoProfiling), 并自动为所有观测数据注入K8s 资源K8s 自定义 Label标签(AutoTagging)。

#2. 部署拓扑

部署拓扑

部署拓扑

#3. 明确您的场景

DeepFlow 观测覆盖的 K8s 集群分两类:

  1. 附属容器集群:指容器集群的 Node 使用的是 DeepFlow 在某个云平台中学习到的云服务器;
  2. 独立容器集群:指容器集群的 Node 与 DeepFlow 从云平台中学习到的云服务器没有关联。

对于附属容器集群,需要在 DeepFlow 的资源-云平台页面自动或手动录入容器集群信息,容器集群中的 DeepFlow Agent 才能被 DeepFlow Server 端正确识别。

对于独立容器集群,可以由 DeepFlow Server 收到该集群的首个 DeepFlow Agent 注册信息后自动创建,无需运维人员操作。

注意

如果部署 K8s 集群的云服务器已经通过云平台对接自动学习并记录到某个云平台,那么该 K8s 集群必须要被视为该云平台的附属容器集群,否则将导致 DeepFlow 的可观测性数据打标时无法确定数据所属的云平台,从而产生数据标签的紊乱。

#4. 附属容器集群部署 Agent

#4.1 录入附属容器集群

对以下公有云的托管 K8s 集群,DeepFlow 能够通过公有云 API 自动学习并录入 K8s 集群信息,无需手工操作:

  • 阿里云
  • 百度云
  • AWS
  • 青云云

附属容器集群的自动录入结果可以在 DeepFlow Web 页面的资源-资源池-云平台-附属容器集群中查看。

对于公有云租户自建的 K8s 集群,或上述公有云之外的托管 K8s 集群,需要手动在 DeepFlow 的资源-资源池-云平台-附属容器集群中录入附属容器集群:

录入附属容器集群

录入附属容器集群

在部署 DeepFlow Agent 之前,还需从 DeepFlow Web 页面中获取 3 个 ID 值,并配置到 DeepFlow Agent 的配置文件中。

#4.2 获取 teamId

teamId团队 ID,用于识别 DeepFlow Agent 所属的组织,操作步骤参考下图:

获取 teamId(团队 ID)

获取 teamId(团队 ID)

#4.3 获取 agentGroupID

agentGroupId采集器组 ID,用于识别 DeepFlow Agent 所属的采集器组,操作步骤参考下图:

获取 agentGroupId(采集器组 ID)

获取 agentGroupId(采集器组 ID)

提示

创建采集器组的目的是为了配置不同的运行策略,以便对 DeepFlow Agent 进行运行策略的分组管理。

#4.4 获取 deepflowK8sClusterID

deepflowK8sClusterID容器集群 ID,用于识别 DeepFlow Agent 所属的附属容器集群,操作步骤参考下图:

获取 deepflowK8sClusterID(容器集群 ID)

获取 deepflowK8sClusterID(容器集群 ID)

#4.5 使用 Helm 安装 Agent

初始化 Helm Repo,新建 values-custom.yaml 文件,并在文件中写入 DeepFlow Agent 部署所需的关键字段信息:

helm repo add deepflow https://deepflowio.github.io/deepflow
helm repo update deepflow # use `helm repo update` when helm < 3.7.0
cat << EOF > values-custom.yaml
deepflowServerNodeIPS:
- agent.cloud.deepflow.yunshan.net
teamId: "t-xxxxxxxxxx"  # Mandatory. Filling with the 'teamId' which could be found in DeepFlow Cloud.
agentGroupID: "g-xxxxxxxxxx"  # Optional. Filling with the 'agentGroupID' which could be found in DeepFlow Cloud.
deepflowK8sClusterID: "d-xxxxxxxxxx"  # Mandatory to standalone Kubernetes cluster. Filling with the Kubernetes ClusterID which could be found in DeepFlow Cloud.
image:
  repository: deepflowee/deepflow-agent
  pullPolicy: Always
  tag: v6.5
EOF
1
2
3
4
5
6
7
8
9
10
11
12
13
helm repo add deepflow https://deepflow-ce.oss-cn-beijing.aliyuncs.com/chart/stable
helm repo update deepflow # use `helm repo update` when helm < 3.7.0
cat << EOF > values-custom.yaml
deepflowServerNodeIPS:
- agent.cloud.deepflow.yunshan.net
teamId: "t-xxxxxxxxxx"  # Mandatory. Filling with the 'teamId' which could be found in DeepFlow Cloud.
agentGroupID: "g-xxxxxxxxxx"  # Optional. Filling with the 'agentGroupID' which could be found in DeepFlow Cloud.
deepflowK8sClusterID: "d-xxxxxxxxxx"  # Mandatory to standalone Kubernetes cluster. Filling with the Kubernetes ClusterID which could be found in DeepFlow Cloud.
image:
  repository: hub.deepflow.yunshan.net/public/deepflow-agent
  pullPolicy: Always
  tag: v6.5
EOF
1
2
3
4
5
6
7
8
9
10
11
12
13

关键字段的取值说明如下:

字段 字段用途 取值 例外说明
deepflowServerNodeIPS DeepFlow Agent 所要连接的 DeepFlow Server 地址 agent.cloud.deepflow.yunshan.net 该地址错误时,DeepFlow Agent 将无法注册
teamId 团队 ID , DeepFlow Server 根据该字段确定 DeepFlow Agent 所属的组织 DeepFlow 页面获取 该 ID 值错误时,DeepFlow Agent 将无法注册
agentGroupID 即采集器组 ID,DeepFlow Server 根据该字段下发运行策略 DeepFlow 页面获取 该 ID 值无效时,DeepFlow Server 会向 DeepFlow Agent 下发 default 组的运行策略
deepflowK8sClusterID 即容器集群 ID,DeepFlow Server 根据该字段确定 DeepFlow Agent 所属的容器集群 DeepFlow 页面获取 该 ID 错误时,DeepFlow Agent 将无法注册

使用 Helm 安装 deepflow-agent:

helm install deepflow-agent -n deepflow deepflow/deepflow-agent --create-namespace \
    -f values-custom.yaml
1
2

#5. 独立容器集群部署 Agent

在部署 DeepFlow Agent 之前,需从 DeepFlow Web 页面中获取 2 个 ID 值,并配置到 DeepFlow Agent 的配置文件中。

#5.1 获取 teamId

teamId团队 ID,用于识别 DeepFlow Agent 所属的组织,操作步骤参考下图:

获取 teamId(团队 ID)

获取 teamId(团队 ID)

#5.2 获取 agentGroupID

agentGroupId采集器组 ID,用于识别 DeepFlow Agent 所属的采集器组,操作步骤参考下图:

获取 agentGroupId(采集器组 ID)

获取 agentGroupId(采集器组 ID)

提示

创建采集器组的目的是为了配置不同的运行策略,以便对 DeepFlow Agent 进行运行策略的分组管理。

#5.3 使用 Helm 安装 Agent

初始化 Helm Repo,新建 values-custom.yaml 文件,并在文件中写入 DeepFlow Agent 部署所需的关键字段信息:

helm repo add deepflow https://deepflowio.github.io/deepflow
helm repo update deepflow # use `helm repo update` when helm < 3.7.0
cat << EOF > values-custom.yaml
deepflowServerNodeIPS:
- agent.cloud.deepflow.yunshan.net
teamId: "t-xxxxxxxxxx"  # Mandatory. Filling with the 'teamId' which could be found in DeepFlow Cloud.
agentGroupID: "g-xxxxxxxxxx"  # Optional. Filling with the 'agentGroupID' which could be found in DeepFlow Cloud.
clusterNAME: "k8s-cluster-1" # Optional. Filling with a Kubernetes cluster name which you want.
image:
  repository: deepflowee/deepflow-agent
  pullPolicy: Always
  tag: v6.5
EOF
1
2
3
4
5
6
7
8
9
10
11
12
13
helm repo add deepflow https://deepflow-ce.oss-cn-beijing.aliyuncs.com/chart/stable
helm repo update deepflow # use `helm repo update` when helm < 3.7.0
cat << EOF > values-custom.yaml
deepflowServerNodeIPS:
- agent.cloud.deepflow.yunshan.net
teamId: "t-xxxxxxxxxx"  # Mandatory. Filling with the 'teamId' which could be found in DeepFlow Cloud.
agentGroupID: "g-xxxxxxxxxx"  # Optional. Filling with the 'agentGroupID' which could be found in DeepFlow Cloud.
clusterNAME: "k8s-cluster-1" # Optional. Filling with a Kubernetes cluster name which you want.
image:
  repository: hub.deepflow.yunshan.net/public/deepflow-agent
  pullPolicy: Always
  tag: v6.5
EOF
1
2
3
4
5
6
7
8
9
10
11
12
13

关键字段的取值说明如下:

字段 字段用途 取值 例外说明
deepflowServerNodeIPS DeepFlow Agent 所要连接的 DeepFlow Server 地址 agent.cloud.deepflow.yunshan.net 该地址错误时,DeepFlow Agent 将无法注册
teamId 团队 ID , DeepFlow Server 根据该字段确定 DeepFlow Agent 所属的组织 DeepFlow 页面获取 该 ID 值错误时,DeepFlow Agent 将无法注册
agentGroupID 即采集器组 ID,DeepFlow Server 根据该字段下发运行策略 DeepFlow 页面获取 该 ID 值无效时,DeepFlow Server 会向 DeepFlow Agent 下发 default 组的运行策略
clusterNAME 即方便用户识别的容器集群名称,DeepFlow Server 根据该字段自动新建容器集群和 ID 灵活按需命名 如果不同 K8s 集群的 DeepFlow Agent 配置相同的clusterNAME,会导致 DeepFlow Agent 注册异常

使用 Helm 安装 deepflow-agent:

helm install deepflow-agent -n deepflow deepflow/deepflow-agent --create-namespace \
    -f values-custom.yaml
1
2