4.4. 管理日志记录部署
4.4.1. 使用 Web 控制台部署 Red Hat OpenShift Logging Operator
您可以使用 OpenShift Container Platform Web 控制台来部署 Red Hat OpenShift Logging Operator。
Red Hat OpenShift 的日志记录子系统作为一个可安装的组件提供,它与核心 OpenShift Container Platform 不同的发行周期不同。Red Hat OpenShift Container Platform 生命周期政策概述了发行版本兼容性。
流程
使用 OpenShift Container Platform Web 控制台部署 Red Hat OpenShift Logging Operator:
安装 Red Hat OpenShift Logging Operator:
-
在 OpenShift Container Platform Web 控制台中,点击 Operators
OperatorHub。 - 在 Filter by keyword 字段中输入 Logging。
- 从可用的 Operator 列表中选择 Red Hat OpenShift Logging,然后点 Install。
选择 stable 或 stable-5.y 作为 更新频道。
注意stable
频道只为日志记录的最新版本提供更新。要继续获得之前版本的更新,您必须将订阅频道改为stable-X
,其中X
是您安装的日志记录版本。- 确保在 Installation Mode 下选择了 A specific namespace on the cluster。
- 确定在 Installed Namespace 下的 Operator recommended namespace 是 openshift-logging。
- 选择 Enable Operator recommended cluster monitoring on this Namespace。
为 Update approval 选择一个选项。
- Automatic 选项允许 Operator Lifecycle Manager (OLM) 在有新版本可用时自动更新 Operator。
- Manual 选项需要具有适当凭证的用户批准 Operator 更新。
- 为 Console 插件选择 Enable 或 Disable。
- 点 Install。
-
在 OpenShift Container Platform Web 控制台中,点击 Operators
通过切换到 Operators
Installed Operators 页来验证 Red Hat OpenShift Logging Operator 是否已安装。 - 确保 openshift-logging 项目中列出的 Red Hat OpenShift Logging 的 Status 为 InstallSucceeded。
创建 ClusterLogging 实例。
注意Web 控制台的表单视图不包括所有可用的选项。建议您使用 YAML 视图 来完成您的设置。
在 collection 部分中,选择一个 Collector Implementation。
注意从日志记录版本 5.6 Fluentd 开始,计划在以后的发行版本中删除。红帽将在当前发行生命周期中提供对这个功能的程序漏洞修复和支持,但这个功能将不再获得改进,并将被删除。作为 Fluentd 的替代选择,您可以使用 Vector。
在 logStore 部分中,选择一个类型。
注意从日志记录版本 5.4.3 开始,Elasticsearch Operator 已被弃用,计划在以后的发行版本中删除。红帽将在当前发行生命周期中提供对这个功能的程序漏洞修复和支持,但这个功能将不再获得改进,并将被删除。作为使用 Elasticsearch Operator 管理默认日志存储的替代选择,您可以使用 Loki Operator。
- 点 Create。
4.4.2. 使用 Web 控制台部署 Loki Operator
您可以使用 OpenShift Container Platform Web 控制台安装 Loki Operator。
先决条件
- 支持的日志存储(AWS S3、Google Cloud Storage、Azure、Swift、Minio、OpenShift Data Foundation)
流程
使用 OpenShift Container Platform Web 控制台安装 Loki Operator:
-
在 OpenShift Container Platform Web 控制台中,点击 Operators
OperatorHub。 在 Filter by keyword 字段中输入 Loki。
- 从可用的 Operator 列表中选择 Loki Operator,然后点 Install。
选择 stable 或 stable-5.y 作为 更新频道。
注意stable
频道只为日志记录的最新版本提供更新。要继续获得之前版本的更新,您必须将订阅频道改为stable-X
,其中X
是您安装的日志记录版本。- 确保在 Installation Mode 下选择了 All namespaces on the cluster。
- 确定在 Installed Namespace 下选择了 openshift-operators-redhat。
选择 Enable Operator recommended cluster monitoring on this Namespace。
这个选项在 Namespace 对象中设置
openshift.io/cluster-monitoring: "true"
标识。您必须设置这个选项,以确保集群监控提取openshift-operators-redhat
命名空间。为 Update approval 选择一个选项。
- Automatic 选项允许 Operator Lifecycle Manager (OLM) 在有新版本可用时自动更新 Operator。
- Manual 选项需要具有适当凭证的用户批准 Operator 更新。
- 点 Install。
通过切换到 Operators
Installed Operators 页来验证 LokiOperator 已被安装。 - 确定在所有项目中,列出的 LokiOperator 的 Status 为 Succeeded。
创建一个
Secret
YAML 文件,它使用access_key_id
和access_key_secret
字段指定您的凭证和bucketnames
、endpoint
和region
来定义对象存储位置。AWS 在以下示例中使用:apiVersion: v1 kind: Secret metadata: name: logging-loki-s3 namespace: openshift-logging stringData: access_key_id: AKIAIOSFODNN7EXAMPLE access_key_secret: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY bucketnames: s3-bucket-name endpoint: https://s3.eu-central-1.amazonaws.com region: eu-central-1
在 Details 选项卡中,选择 LokiStack 下的 Create instance。然后选择 YAML 视图。粘贴以下模板,根据实际情况替换相关的值。
apiVersion: loki.grafana.com/v1 kind: LokiStack metadata: name: logging-loki 1 namespace: openshift-logging spec: size: 1x.small 2 storage: schemas: - version: v12 effectiveDate: '2022-06-01' secret: name: logging-loki-s3 3 type: s3 4 storageClassName: <storage_class_name> 5 tenants: mode: openshift-logging
创建或编辑
ClusterLogging
CR:apiVersion: logging.openshift.io/v1 kind: ClusterLogging metadata: name: instance namespace: openshift-logging spec: managementState: Managed logStore: type: lokistack lokistack: name: logging-loki collection: type: vector
应用配置:
oc apply -f cr-lokistack.yaml
4.4.3. 使用 CLI 从 OperatorHub 安装
您可以使用 CLI 从 OperatorHub 安装 Operator,而不必使用 OpenShift Container Platform Web 控制台。使用 oc
命令来创建或更新一个订阅
对象。
先决条件
-
使用具有
cluster-admin
权限的账户访问 OpenShift Container Platform 集群。 -
在您的本地系统安装
oc
命令。
流程
查看 OperatorHub 中集群可用的 Operator 列表:
$ oc get packagemanifests -n openshift-marketplace
输出示例
NAME CATALOG AGE 3scale-operator Red Hat Operators 91m advanced-cluster-management Red Hat Operators 91m amq7-cert-manager Red Hat Operators 91m ... couchbase-enterprise-certified Certified Operators 91m crunchy-postgres-operator Certified Operators 91m mongodb-enterprise Certified Operators 91m ... etcd Community Operators 91m jaeger Community Operators 91m kubefed Community Operators 91m ...
记录下所需 Operator 的目录。
检查所需 Operator,以验证其支持的安装模式和可用频道:
$ oc describe packagemanifests <operator_name> -n openshift-marketplace
一个 Operator 组(由
OperatorGroup
对象定义),在其中选择目标命名空间,在其中为与 Operator 组相同的命名空间中的所有 Operator 生成所需的 RBAC 访问权限。订阅 Operator 的命名空间必须具有与 Operator 的安装模式相匹配的 Operator 组,可采用
AllNamespaces
模式,也可采用SingleNamespace
模式。如果您要使用AllNamespaces
安装 Operator,则openshift-operators
命名空间已有适当的 Operator 组。如果要安装的 Operator 采用
SingleNamespace
模式,而您没有适当的 Operator 组,则必须创建一个。注意在选择
SingleNamespace
模式时,该流程的 Web 控制台版本会在后台自动为您处理OperatorGroup
和Subscription
对象的创建。创建
OperatorGroup
对象 YAML 文件,如operatorgroup.yaml
:OperatorGroup
对象示例apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: <operatorgroup_name> namespace: <namespace> spec: targetNamespaces: - <namespace>
创建
OperatorGroup
对象:$ oc apply -f operatorgroup.yaml
创建一个
Subscription
对象 YAML 文件,以便为 Operator 订阅一个命名空间,如sub.yaml
:Subscription
对象示例apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: <subscription_name> namespace: openshift-operators 1 spec: channel: <channel_name> 2 name: <operator_name> 3 source: redhat-operators 4 sourceNamespace: openshift-marketplace 5 config: env: 6 - name: ARGS value: "-v=10" envFrom: 7 - secretRef: name: license-secret volumes: 8 - name: <volume_name> configMap: name: <configmap_name> volumeMounts: 9 - mountPath: <directory_name> name: <volume_name> tolerations: 10 - operator: "Exists" resources: 11 requests: memory: "64Mi" cpu: "250m" limits: memory: "128Mi" cpu: "500m" nodeSelector: 12 foo: bar
- 1
- 对于
AllNamespaces
安装模式的使用,指定openshift-operators
命名空间。否则,为SingleNamespace
安装模式使用指定相关单一命名空间。 - 2
- 要订阅的频道的名称。
- 3
- 要订阅的 Operator 的名称。
- 4
- 提供 Operator 的目录源的名称。
- 5
- 目录源的命名空间。将
openshift-marketplace
用于默认的 OperatorHub 目录源。 - 6
env
参数定义必须存在于由 OLM 创建的 pod 中所有容器中的环境变量列表。- 7
envFrom
参数定义要在容器中填充环境变量的源列表。- 8
volumes
参数定义 OLM 创建的 pod 上必须存在的卷列表。- 9
volumeMounts
参数定义由 OLM 创建的 pod 中必须存在的 VolumeMounts 列表。如果volumeMount
引用不存在的卷
,OLM 无法部署 Operator。- 10
tolerations
参数为 OLM 创建的 pod 定义 Tolerations 列表。- 11
resources
参数为 OLM 创建的 pod 中所有容器定义资源限制。- 12
nodeSelector
参数为 OLM 创建的 pod 定义NodeSelector
。
创建
Subscription
对象:$ oc apply -f sub.yaml
此时,OLM 已了解所选的 Operator。Operator 的集群服务版本(CSV)应出现在目标命名空间中,由 Operator 提供的 API 应可用于创建。
4.4.4. 使用 Web 控制台从集群中删除 Operator
集群管理员可以使用 Web 控制台从所选命名空间中删除已安装的 Operator。
先决条件
-
使用具有
cluster-admin
权限的账户访问 OpenShift Container Platform 集群 Web 控制台。
流程
-
进入到 Operators
Installed Operators 页面。 - 在 Filter by name 字段中滚动或输入关键字以查找您要删除的 Operator。然后点它。
在 Operator Details 页面右侧,从 Actions 列表中选择 Uninstall Operator。
此时会显示 Uninstall Operator? 对话框。
选择 Uninstall 来删除 Operator、Operator 部署和 pod。按照此操作,Operator 将停止运行,不再接收更新。
注意此操作不会删除 Operator 管理的资源,包括自定义资源定义 (CRD) 和自定义资源 (CR) 。Web 控制台和继续运行的集群资源启用的仪表板和导航项可能需要手动清理。要在卸载 Operator 后删除这些,您可能需要手动删除 Operator CRD。
4.4.5. 使用 CLI 从集群中删除 Operator
集群管理员可以使用 CLI 从所选命名空间中删除已安装的 Operator。
先决条件
-
使用具有
cluster-admin
权限的账户访问 OpenShift Container Platform 集群。 -
已在工作站上安装
oc
命令。
流程
通过
currentCSV
字段检查已订阅 Operator 的当前版本(如jaeger
):$ oc get subscription jaeger -n openshift-operators -o yaml | grep currentCSV
输出示例
currentCSV: jaeger-operator.v1.8.2
删除订阅(如
jaeger
):$ oc delete subscription jaeger -n openshift-operators
输出示例
subscription.operators.coreos.com "jaeger" deleted
使用上一步中的
currentCSV
值来删除目标命名空间中相应 Operator 的 CSV:$ oc delete clusterserviceversion jaeger-operator.v1.8.2 -n openshift-operators
输出示例
clusterserviceversion.operators.coreos.com "jaeger-operator.v1.8.2" deleted