通过 DaemonSet 或 Sidecar 方式采集日志时,均可以通过 LogCollector CRD 方式创建采集配置。本文档介绍在 Kubernetes 集群中安装 LogCollector CRD 的操作步骤。
通过 LogCollector CRD 方式创建采集配置时,在 Kubernetes 集群中安装 LogCollector 后,还需安装 LogCollector CRD。LogCollector CRD 安装过程中,主要完成以下步骤:
已在 Kubernetes 集群中安装 LogCollector。详细操作步骤请参考安装 LogCollector(DaemonSet 方式)、安装 LogCollector(Sidecar 方式)。
说明
已安装 Helm 3 客户端(3.7 之后版本)。具体操作,请参考Helm。
登录待安装 LogCollector Controller 的 Kubernetes 集群,然后根据集群所在地域,执行对应的下载命令,将 LogCollector Controller Chart 安装包下载到指定目录下。
helm pull oci://logcollector-cn-guangzhou.cr.volces.com/logcollector-controller/logcollector-controller --version 0.1.0
执行以下命令部署 LogCollector Controller Chart 包。
helm install logcollector-controller logcollector-controller-0.1.0.tgz \ --namespace={namespace} \ --set region={region} \ --set endpoint={endpoint} \ --set secret_id={secret_id} \ --set secret_key={secret_key} \ --set image={image}
其中,region
、endpoint
、secret_id
、secret_key
、image
为必选参数,详细说明如下。
参数 | 是否必选 | 示例 | 说明 |
---|---|---|---|
region | 必选 | cn-beijing | 日志项目所在的地域 ID。详细说明请参考服务地址。 |
endpoint | 必选 | https://tls-cn-beijing.volces.com | |
secret_id | 必选 | AK******** | 火山引擎账号或 IAM 用户的 Access Key ID。 |
secret_key | 必选 | TUdZ******** | 火山引擎账号或 IAM 用户的 Secret Access Key。 |
namespace | 必选 | kube-system | LogCollector Controller 命名空间。 |
image | 必选 | logcollector-cn-beijing.cr.volces.com/logcollector-controller/logcollector-controller:latest | LogCollector Controller 的镜像地址。最新版本镜像地址请参考 LogCollector Controller 镜像地址。 |
注意
kubectl delete crd collectrules.logging.vke.volcengine.com
命令删除 CustomResourceDefinition。kubectl delete clusterrole logcollector-controller
命令先删除 ClusterRole。kubectl delete clusterrolebinding logcollector-controller
命令先删除 ClusterRoleBinding。登录用于安装 LogCollector Controller 的 Kubernetes 集群,然后根据集群地域与网络类型,执行对应的下载命令,将 LogCollector Controller 安装包下载到指定目录下。
wget https://logcollector-cn-beijing.tos-cn-beijing.ivolces.com/logcollector-controller.tgz; tar -xzf logcollector-controller.tgz; chmod 755 ./logcollector-controller/logcollector-controller.sh
wget https://logcollector-cn-beijing.tos-cn-beijing.volces.com/logcollector-controller.tgz; tar -xzf logcollector-controller.tgz; chmod 755 ./logcollector-controller/logcollector-controller.sh
执行以下命令安装 LogCollector Controller。
./logcollector-controller/logcollector-controller.sh install --region {region} --endpoint {endpoint} --secret_id {secret_id} --secret_key {secret_key} --namespace {namespace} --image {image}
其中,region
、endpoint
、secret_id
、secret_key
为必选参数,namepspace
、image
为可选参数,详细说明如下。
参数 | 是否必选 | 示例 | 说明 |
---|---|---|---|
region | 必选 | cn-beijing | 日志项目所在的地域 ID。详细说明请参考服务地址。 |
endpoint | 必选 | https://tls-cn-beijing.volces.com | |
secret_id | 必选 | AK******** | 火山引擎账号或 IAM 用户的 Access Key ID。 |
secret_key | 必选 | TUdZ******** | 火山引擎账号或 IAM 用户的 Secret Access Key。 |
namespace | 可选 | kube-system | LogCollector 命名空间。 |
image | 可选 | logcollector-controller-cn-beijing.cr.volces.com/logcollector-controller/logcollector-controller:latest | LogCollector Controller 镜像地址。如果没有指定镜像地址,将使用对应 refion 的最新版本镜像地址。最新版本镜像地址请参考 LogCollector Controller 镜像地址。 |
登录需要安装 LogCollector Controller 的 Kubernetes 集群,然后参考以下步骤以 Deployment 方式部署 LogCollector Controller。
LogCollectorRule CRD 是火山引擎日志服务定义的一种 Kubernetes 资源,用于创建 LogCollector 采集配置。
登录待安装 LogCollector CRD 的 Kubernetes 集群。
创建一个 YAML 文件,用于定义 LogCollectorRule CRD。 本文档以 crd.yaml
为例。
vim crd.yaml
编辑 YAML 文件,在 YAML 文件中输入以下内容。
apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: name: collectrules.logging.vke.volcengine.com spec: group: logging.vke.volcengine.com names: kind: CollectRule listKind: CollectRuleList plural: collectrules singular: collectrule shortNames: - cr scope: Cluster versions: - name: v1alpha1 served: true storage: true subresources: status: { } schema: openAPIV3Schema: type: object properties: spec: x-kubernetes-preserve-unknown-fields: true status: x-kubernetes-preserve-unknown-fields: true conversion: strategy: None
执行以下命令,使 CRD 配置生效。
kubectl apply -f crd.yaml
LogCollector Controller 是一种 Kubernetes 控制器,用于监控和维护 Kubernetes 集群中的 LogCollectorRule CR 状态。当 LogCollector Controller 监控到 LogCollectorRule CR 的创建、更新或销毁时,会在日志服务控制台创建、更新或销毁对应的采集配置。
为 LogCollector Controller 创建一个 Namespace。
创建一个 YAML 文件,名为 logcollector_controller_ns.yaml
。
vim logcollector_controller_ns.yaml
在 YAML 文件中输入如下内容。
apiVersion: v1 kind: Namespace metadata: name: <namespace>
参数说明如下:
参数 | 示例 | 说明 |
---|---|---|
namespace | kube-system | 命名空间名称。 |
执行如下命令使 Namespace 配置生效。
kubectl apply -f logcollector_controller_ns.yaml
为 LogCollector Controller 创建一个 ServiceAccount。
登录待安装 LogCollector Controller 的 Kubernetes 集群。
创建一个 YAML 文件,名为 logcollector_controller_sa.yaml
。
vim logcollector_controller_sa.yaml
编辑 YAML 文件,并在 YAML 文件中输入以下内容。
apiVersion: v1 kind: ServiceAccount metadata: name: logcollector-controller namespace: <namespace>
参数 | 示例 | 说明 |
---|---|---|
namespace | kube-system | 命名空间,输入您在2.1 创建 Namespace中设置的命名空间。 |
执行以下命令,使 ServiceAccount 配置生效。
kubectl apply -f logcollector_controller_sa.yaml
为 LogCollector Controller 创建 ClusterRole。
登录需要安装 LogCollector Controller 的 Kubernetes 集群。
创建一个 YAML 文件,名为 logcollector_controller_cr.yaml
。
vim logcollector_controller_cr.yaml
编辑 YAML 文件,并在 YAML 文件中输入以下内容。
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: logcollector-controller rules: - apiGroups: - logging.vke.volcengine.com resources: - collectrules - collectrules/status - collectrules/finalizers verbs: - get - list - watch - create - update - patch - delete - deletecollection - apiGroups: - "" resources: - configmaps - secrets - events verbs: - watch - list - get - apiGroups: - "" resources: - pods - nodes - namespaces verbs: - get - list - watch - apiGroups: - apps resources: - replicasets - deployments - daemonsets - statefulsets verbs: - watch - list - get - apiGroups: - batch resources: - jobs - cronjobs verbs: - watch - list - get
执行以下命令,使 ClusterRole 配置生效。
kubectl apply -f logcollector_controller_cr.yaml
登录需要安装 LogCollector Controller 的 Kubernetes 集群。
创建一个 YAML 文件,名为 logcollector_controller_crb.yaml
。
vim logcollector_controller_crb.yaml
编辑 YAML 文件,并在 YAML 文件中输入以下内容。
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: logcollector-controller subjects: - kind: ServiceAccount name: logcollector-controller namespace: <namespace> roleRef: kind: ClusterRole name: logcollector-controller apiGroup: rbac.authorization.k8s.io
参数 | 示例 | 说明 |
---|---|---|
namespace | kube-system | 命名空间,输入您在2.1 创建 Namespace中设置的命名空间。 |
执行以下命令,使 ClusterRoleBinding 配置生效。
kubectl apply -f logcollector_controller_crb.yaml
创建一个 LogCollector Controller 的 ConfigMap。
登录需待安装 LogCollector Controller 的 Kubernetes 集群。
创建一个 YAML 文件,名为 logcollector_controller_config.yaml
。
vim logcollector_controller_config.yaml
编辑 YAML 文件,并在 YAML 文件中输入以下内容。
apiVersion: v1 kind: ConfigMap metadata: name: logcollector-controller-config namespace: <namespace> data: region: "<region>" endpoint: "<endpoint>" secret_id: "<secret_id>" secret_key: "<secret_key>"
参数 | 示例 | 说明 |
---|---|---|
namespace | kube-system | 命名空间,输入您在2.1 创建 Namespace中设置的命名空间。 |
region | cn-beijing | 日志项目所在的地域。 日志服务地域及对应 ID 请参考服务入口。 |
endpoint | https://tls-cn-beijing.ivolces.com | |
secret_id | AK******** | 火山引擎账号或 IAM 用户的 Access Key ID。 |
secret_key | TUdZ******** | 火山引擎主账号或 IAM 的 Secret Access Key。 |
执行以下命令,使 ConfigMap 配置生效。
kubectl apply -f logcollector_controller_config.yaml
为 LogCollector Controller 创建一个 Deployment。
登录需要安装 LogCollector Controller 的 Kubernetes 集群。
创建一个 YAML 文件,名为 logcollector_controller_ds.yaml
。
vim logcollector_controller_ds.yaml
编辑 YAML 文件,并在 YAML 文件中输入以下内容。
apiVersion: apps/v1 kind: Deployment metadata: name: logcollector-controller namespace: <namespace> labels: k8s-app: logcollector-controller app.kubernetes.io/instance: logcollector-controller spec: selector: matchLabels: k8s-app: logcollector-controller replicas: 1 template: metadata: labels: k8s-app: logcollector-controller spec: serviceAccountName: logcollector-controller containers: - name: logcollector-controller image: <image> imagePullPolicy: Always resources: limits: cpu: 4000m memory: 4000Mi requests: cpu: 100m memory: 100Mi env: - name: "TLS_REGION" valueFrom: configMapKeyRef: name: logcollector-controller-config key: region - name: "TLS_HOST" valueFrom: configMapKeyRef: name: logcollector-controller-config key: endpoint - name: "VOLC_ACCESSKEY" valueFrom: configMapKeyRef: name: logcollector-controller-config key: secret_id - name: "VOLC_SECRETKEY" valueFrom: configMapKeyRef: name: logcollector-controller-config key: secret_key
参数 | 示例 | 说明 |
---|---|---|
namespace | kube-system | 命名空间,输入您在2.1 创建 Namespace中设置的命名空间。 |
image | logcollector-controller-cn-beijing.cr.volces.com/logcollector-controller/logcollector-controller:latest | LogCollector 镜像地址。最新版本镜像地址请参考 LogCollector 镜像地址。 |
执行以下命令,使 Deployment 配置生效。
kubectl apply -f logcollector_controller_ds.yaml
日志服务在各个区域提供的最新版本 LogCollector Controller 镜像地址如下:
地域 | 镜像地址 |
---|---|
华北2(北京) |
|
华东2(上海) |
|
华南1(广州) |
|
柔佛(亚太东南) |
|