第 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 是内存密集型应用程序。每个 Elasticsearch 节点都需要 16G 内存来满足内存请求和限值。最初的 OpenShift Container Platform 节点组可能不足以支持 Elasticsearch 集群。您必须在 OpenShift Container Platform 集群中添加额外的节点,才能使用建议或更高的内存来运行。每个 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.2" 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.2.1-202002032140 Elasticsearch Operator 4.2.1-202002032140 Succeeded kube-node-lease elasticsearch-operator.4.2.1-202002032140 Elasticsearch Operator 4.2.1-202002032140 Succeeded kube-public elasticsearch-operator.4.2.1-202002032140 Elasticsearch Operator 4.2.1-202002032140 Succeeded kube-system elasticsearch-operator.4.2.1-202002032140 Elasticsearch Operator 4.2.1-202002032140 Succeeded openshift-apiserver-operator elasticsearch-operator.4.2.1-202002032140 Elasticsearch Operator 4.2.1-202002032140 Succeeded openshift-apiserver elasticsearch-operator.4.2.1-202002032140 Elasticsearch Operator 4.2.1-202002032140 Succeeded openshift-authentication-operator elasticsearch-operator.4.2.1-202002032140 Elasticsearch Operator 4.2.1-202002032140 Succeeded openshift-authentication elasticsearch-operator.4.2.1-202002032140 Elasticsearch Operator 4.2.1-202002032140 Succeeded ...
每个命名空间中都应该有一个 Elasticsearch Operator。版本号可能与所示不同。
后续步骤
使用控制台或 CLI 安装 Cluster Logging Operator。