第 3 章 部署集群日志记录
您可以通过部署 Elasticsearch 和 Cluster Logging Operator 来安装集群日志记录。Elasticsearch Operator 负责创建并管理由集群日志记录使用的 Elasticsearch 集群。Cluster Logging Operator 负责创建并管理日志记录堆栈的组件。
将集群日志记录部署到 OpenShift Container Platform 的过程涉及以下任务:
- 查阅关于部署集群日志记录中的安装选项。
- 查阅集群日志记录存储注意事项。
- 安装 Elasticsearch Operator 和 Cluster Logging Operator。
3.1. 使用 CLI 安装 Elasticsearch Operator
您必须按照以下说明来使用 CLI 安装 Elasticsearch Operator。
先决条件
确保具有 Elasticsearch 所需的持久性存储。注意每个 Elasticsearch 节点都需要自己的存储卷。
Elasticsearch 是内存密集型应用程序。默认情况下,OpenShift Container Platform 安装 3 个 Elasticsearch 节点,其内存请求和限制为 16 GB。初始设置的三个 OpenShift Container Platform 节点可能没有足够的内存在集群中运行 Elasticsearch。如果遇到与 Elasticsearch 相关的内存问题,您应该在集群中添加更多 Elasticsearch 节点,而不是在退出的节点上增加内存。
流程
使用 CLI 安装 Elasticsearch Operator:
为 Elasticsearch Operator 创建一个命名空间。
为 Elasticsearch Operator 创建一个命名空间对象 YAML 文件(例如
eo-namespace.yaml
):apiVersion: v1 kind: Namespace metadata: name: openshift-operators-redhat 1 annotations: openshift.io/node-selector: "" labels: openshift.io/cluster-monitoring: "true" 2
- 1
- 您必须指定
openshift-operators-redhat
命名空间。为了防止可能与指标(metrics)冲突,您应该将 Prometheus Cluster Monitoring 堆栈配置为从openshift-operators-redhat
命名空间中提取指标数据,而不是从openshift-operators
命名空间中提取。openshift-operators
命名空间可能会包含社区提供的 operator。这些 operator 不被信任,其发布的 metric 可能与 OpenShift Container Platform metric 的名称相同,从而导致冲突。 - 2
- 您必须按照所示指定该标签,以确保集群监控提取
openshift-operators-redhat
命名空间。
创建命名空间:
$ oc create -f <file-name>.yaml
例如:
$ oc create -f eo-namespace.yaml
通过创建以下对象来安装 Elasticsearch Operator:
为 Elasticsearch Operator 创建 Operator Group 对象 YAML 文件(例如
eo-og.yaml
):apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: openshift-operators-redhat namespace: openshift-operators-redhat 1 spec: {}
- 1
- 您必须指定
openshift-operators-redhat
命名空间。
创建 Operator Group 对象:
$ oc create -f <file-name>.yaml
例如:
$ oc create -f eo-og.yaml
创建 Subscription 对象 YAML 文件(例如
eo-sub.yaml
)来订阅 Operator 的命名空间。订阅示例
apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: "elasticsearch-operator" namespace: "openshift-operators-redhat" 1 spec: channel: "4.3" 2 installPlanApproval: "Automatic" source: "redhat-operators" 3 sourceNamespace: "openshift-marketplace" name: "elasticsearch-operator"
创建订阅对象:
$ oc create -f <file-name>.yaml
例如:
$ oc create -f eo-sub.yaml
更改到
openshift-operators-redhat
项目:$ oc project openshift-operators-redhat Now using project "openshift-operators-redhat"
创建基于角色的访问控制 (RBAC) 对象文件(例如
eo-rbac.yaml
),向 Prometheus 授予openshift-operators-redhat
命名空间的访问权限:apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: prometheus-k8s namespace: openshift-operators-redhat rules: - apiGroups: - "" resources: - services - endpoints - pods verbs: - get - list - watch --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: prometheus-k8s namespace: openshift-operators-redhat roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: prometheus-k8s subjects: - kind: ServiceAccount name: prometheus-k8s namespace: openshift-operators-redhat
创建 RBAC 对象:
$ oc create -f <file-name>.yaml
例如:
$ oc create -f eo-rbac.yaml
Elasticsearch Operator 已安装到
openshift-operators-redhat
命名空间,并且复制到集群中的每个项目。
验证 Operator 安装:
oc get csv --all-namespaces NAMESPACE NAME DISPLAY VERSION REPLACES PHASE default elasticsearch-operator.4.3.1-202002032140 Elasticsearch Operator 4.3.1-202002032140 Succeeded kube-node-lease elasticsearch-operator.4.3.1-202002032140 Elasticsearch Operator 4.3.1-202002032140 Succeeded kube-public elasticsearch-operator.4.3.1-202002032140 Elasticsearch Operator 4.3.1-202002032140 Succeeded kube-system elasticsearch-operator.4.3.1-202002032140 Elasticsearch Operator 4.3.1-202002032140 Succeeded openshift-apiserver-operator elasticsearch-operator.4.3.1-202002032140 Elasticsearch Operator 4.3.1-202002032140 Succeeded openshift-apiserver elasticsearch-operator.4.3.1-202002032140 Elasticsearch Operator 4.3.1-202002032140 Succeeded openshift-authentication-operator elasticsearch-operator.4.3.1-202002032140 Elasticsearch Operator 4.3.1-202002032140 Succeeded openshift-authentication elasticsearch-operator.4.3.1-202002032140 Elasticsearch Operator 4.3.1-202002032140 Succeeded ...
每个命名空间中都应该有一个 Elasticsearch Operator。版本号可能与所示不同。
后续步骤
使用控制台或 CLI 安装 Cluster Logging Operator。