在 K8s 中安装 Agent
#1. 简介
本章节将详细介绍如何在您的 K8s 集群中部署 DeepFlow Agent。
在 K8s 集群中部署 DeepFlow Agent 后,将自动零侵扰采集 K8s 集群中 Pod 的观测数据(AutoMetrics、AutoTracing、AutoProfiling),
并自动为所有观测数据注入K8s 资源
和K8s 自定义 Label
标签(AutoTagging)。
#2. 部署拓扑
部署拓扑
#3. 明确您的场景
DeepFlow 观测覆盖的 K8s 集群分两类:
- 附属容器集群:指容器集群的 Node 使用的是 DeepFlow 在某个云平台中学习到的云服务器;
- 独立容器集群:指容器集群的 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)
#4.3 获取 agentGroupID
agentGroupId
即采集器组 ID
,用于识别 DeepFlow Agent 所属的采集器组,操作步骤参考下图:
获取 agentGroupId(采集器组 ID)
提示
创建采集器组的目的是为了配置不同的运行策略,以便对 DeepFlow Agent 进行运行策略的分组管理。
#4.4 获取 deepflowK8sClusterID
deepflowK8sClusterID
即容器集群 ID
,用于识别 DeepFlow Agent 所属的附属容器集群,操作步骤参考下图:
获取 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
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
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
2
#5. 独立容器集群部署 Agent
在部署 DeepFlow Agent 之前,需从 DeepFlow Web 页面中获取 2 个 ID 值,并配置到 DeepFlow Agent 的配置文件中。
#5.1 获取 teamId
teamId
即团队 ID
,用于识别 DeepFlow Agent 所属的组织,操作步骤参考下图:
获取 teamId(团队 ID)
#5.2 获取 agentGroupID
agentGroupId
即采集器组 ID
,用于识别 DeepFlow Agent 所属的采集器组,操作步骤参考下图:
获取 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
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
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
2