监控多个 K8s 集群

# 1. 简介

DeepFlow Server 可服务于多个 K8s 集群中的 DeepFlow Agent。假设你在一个 K8s 集群中已经部署好了 DeepFlow Server,本章介绍如何监控其他的 K8s 集群。

# 2. 准备工作

# 2.1 部署拓扑

# 2.2 确保不同 K8s 集群可区分

DeepFlow 使用 K8s 的 CA 文件 MD5 值区分不同的集群,请在不同 K8s 集群的 Pod 中查看 /run/secrets/kubernetes.io/serviceaccount/ca.crt 文件,确保不同集群的 CA 文件不同。

假如你的不同 K8s 集群使用了相同的 CA 文件,在多个集群中部署 deepflow-agent 之前,需要利用 deepflow-ctl domain create 获取一个 K8sClusterID

unset CLUSTER_NAME
CLUSTER_NAME="k8s-1"  # FIXME: K8s cluster name
cat << EOF | deepflow-ctl domain create -f -
name: $CLUSTER_NAME
type: kubernetes
EOF
deepflow-ctl domain list $CLUSTER_NAME  # Get K8sClusterID
1
2
3
4
5
6
7

# 3. 部署 deepflow-agent

使用 Helm 安装 deepflow-agent:

cat << EOF > values-custom.yaml
deepflowServerNodeIPS:
- 10.1.2.3  # FIXME: K8s Node IPs
- 10.4.5.6  # FIXME: K8s Node IPs
clusterNAME: k8s-1  # FIXME: name of the cluster in deepflow
EOF

helm repo add deepflow https://deepflowio.github.io/deepflow
helm repo update deepflow # use `helm repo update` when helm < 3.7.0
helm install deepflow-agent -n deepflow deepflow/deepflow-agent --create-namespace \
    -f values-custom.yaml
1
2
3
4
5
6
7
8
9
10
11
cat << EOF > values-custom.yaml
image:
  repository: registry.cn-beijing.aliyuncs.com/deepflow-ce/deepflow-agent
deepflowServerNodeIPS:
- 10.1.2.3  # FIXME: K8s Node IPs
- 10.4.5.6  # FIXME: K8s Node IPs
clusterNAME: k8s-1  # FIXME: name of the cluster in deepflow
EOF

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
helm install deepflow-agent -n deepflow deepflow/deepflow-agent --create-namespace \
  -f values-custom.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13

我们建议上述部署过程中将 deepflow-agent 的 deepflowServerNodeIps 配置为 K8s 集群的一个或多个相对固定的 Node IP。

注意

若不同 K8s 集群的 CA 文件一样,部署时需要传入使用 deepflow-ctl 获取到的 kubernetesClusterId

echo "deepflowK8sClusterID: "fffffff"  # FIXME: Generate by `deepflow-ctl  domain create`" >> values-custom.yaml
helm upgrade deepflow-agent -n deepflow deepflow/deepflow-agent  \
    -f values-custom.yaml
1
2
3

# 4. 下一步