-
使用云原生日志采集插件采集日志 查看并配置日志采集策略。 登录容器舰队控制台,单击集群名称进入集群,选择左侧导航栏的“日志中心”。 右上角单击“日志采集策略”,将显示当前集群所有上报LTS的日志策略。 图1 查看日志策略 若安装插件时勾选了采集标准输出和采集Kubernetes事件,将创建两个日志策略,并对接默认的LTS日志组、日志流。 创建日志策略:单击上方“创建日志策略”,输入要采集的配置信息。 策略模板:若安装插件时未勾选需要采集的日志策略,或者删除了对应的日志策略,可通过该方式重新创建默认日志策略。 图2 使用策略模板 自定义策略:用于配置自定义日志策略。 图3 自定义策略 表2 自定义策略参数说明 参数 说明 日志类型 指定采集哪类日志。 容器标准输出:用于采集容器标准输出,可以按命名空间、工作负载名称、实例标签配置采集策略。 容器文件路径:用于采集容器内的日志,可以按工作负载和实例标签配置采集策略。 节点文件路径:用于采集节点上的日志文件,一条日志策略只能配置一个文件路径。 日志源 采集哪些容器的日志。 所有容器:可以指定采集某个命名空间的所有容器,如不指定则采集所有命名空间的容器。 指定工作负载:指定采集哪些工作负载容器的日志,可以指定采集工作负载中具体容器的日志,如不指定则采集所有容器的日志。 指定实例标签:根据标签指定采集哪些工作负载容器的日志,可以指定采集工作负载中具体容器的日志,如不指定则采集所有容器的日志。 路径配置 用于配置需要采集的日志路径。 文件路径必须以/ 开头,只能包含大写字母、小写字母、数字或特殊字符-_/*?,且长度不能超过512个字符。 文件名称只能包含大写字母、小写字母、数字或特殊字符-_*?.。 日志文件夹:请填写绝对路径。日志文件名:不支持.gz、.tar、.zip后缀类型。 最多有三级目录采用通配符匹配,且第一级目录不能使用通配符。 目录名和文件名支持完整名称和通配符模式,通配符只支持星号(*)和半角问号(?)。 星号(*)表示匹配多个任意字符。半角问号(?)表示匹配单个任意字符。例如: 日志路径为/var/logs/* 文件名*.log,表示/var/logs下所有目录中后缀名为.log的文件。 日志路径为 /var/logs/app_* 文件名*.log,表示/var/logs目录下所有符合app_*格式的目录中后缀名为.log的文件。 如果业务容器的数据目录是通过数据卷(Volume)挂载的,插件不支持采集它的父目录,需设置采集目录为完整的数据目录。例如/var/log/service目录是数据卷挂载的路径,则设置采集目录为/var/log或/var/log/*将采集不到该目录下的日志,需设置采集目录为/var/log/service。 日志格式 单行文本 每条日志仅包含一行文本,以换行符 \n 作为各条日志的分界线。 多行文本 有些程序打印的日志存在一条完整的日志数据跨占多行(例如 Java 程序日志)情况,日志采集系统默认是按行采集。如果您想在日志采集系统中按整条显示日志,可以开启多行文本,采用首行正则的方式进行匹配,当选择多行文本时,需填写日志匹配格式。 例如: 需采集的日志格式如下,则需填写时间的正则匹配,在日志匹配格式处填写:\d{4}-\d{2}-\d{2} \d{2}\:\d{2}\:\d{2}.* 则下面以日期开头三行日志会作为一条完整日志。 2022-01-01 00:00:00 Exception in thread "main" java.lang.RuntimeException: Something has gone wrong, aborting! at com.myproject.module.MyProject.badMethod(MyProject.java:22) at com.myproject.module.MyProject.oneMoreMethod(MyProject.java:18) 上报到
云日志 服务(LTS) 用于配置日志上报的日志组和日志流。 使用默认日志组/日志流:将为您自动选择默认日志组(k8s-log-{集群ID})和默认的日志流(stdout-{集群ID})。 自定义日志组/日志流:可在下拉框选择任意日志组和日志流。 日志组 日志组是云日志服务进行日志管理的基本单位。如果您未创建日志组,CCE会提示您进行创建,默认名称为k8s-log-{集群ID},如 k8s-log-bb7eaa87-07dd-11ed-ab6c-0255ac1001b3。 日志流 日志流(LogStream):日志流是日志读写的基本单位,日志组中可以创建日志流,将不同类型的日志分类存储,方便对日志进一步分类管理。在安装插件或者根据模板创建日志策略时,会自动创建以下日志流: 容器日志:默认名称为stdout-{集群ID},如 stdout-bb7eaa87-07dd-11ed-ab6c-0255ac1001b3 k8s事件:默认名称为event-{集群ID},如 event-bb7eaa87-07dd-11ed-ab6c-0255ac1001b3 编辑日志策略:单击“编辑”按钮,可对已经存在的日志策略进行修改。 删除日志策略:单击“删除”按钮,可对已经存在的日志策略进行删除。 查看日志。 登录容器舰队控制台,单击集群名称进入集群,选择左侧导航栏的“日志中心”。 日志中心下有5个页签,支持不同类型日志查看。 容器日志:显示默认日志组(k8s-log-{集群ID})下默认日志流(stdout-{集群ID})中的所有日志数据,华为云集群支持通过工作负载搜索。 图4 容器日志查询 Kubernetes事件:显示默认日志组(k8s-log-{集群ID})下默认日志流(event-{集群ID})中的所有日志数据,用于查询集群产生的Kubernetes事件。 控制面组件日志:显示默认日志组(k8s-log-{集群ID})下默认日志流({组件名}-{集群ID})中的所有日志数据,用于查看集群控制面重要组件的日志信息。 Kubernetes审计日志:显示默认日志组(k8s-log-{集群ID})下默认日志流audit-{集群ID})中的所有日志数据,用于查看集群Kubernetes审计日志信息。 全局日志查询:支持查看所有日志组日志流下的日志信息。可通过选择日志流查看所选日志流中的日志信息,默认会选择集群默认日志组(k8s-log-{集群ID}),可通过单击切换日志组右侧的图标切换其他日志组。 图5 全局日志查询 单击右上角“日志采集策略”,单击“查看日志”,可以直接跳转至对应日志策略的日志列表。 图6 查看日志
-
集群数据面组件说明 当前支持收集以下两种类型的数据面日志,每个日志流对应一个Kubernetes数据层面组件。关于这些组件的更多信息,请参见Kubernetes组件。 表1 集群数据面组件说明 类别 组件 日志流 说明 数据面组件日志 default-stdout stdout-{clusterID} 采集标准输出。默认日志组:k8s-logs-{集群ID}。 default-event event-{clusterID} 采集Kubernetes事件。默认日志组:k8s-logs-{集群ID}。
-
发布舰队应用 本节将指导您通过流水线,结合上述步骤的调测、编排,实现从源码构建到舰队应用发布全流程的自动化体验。 配置流水线、运行参数和产物地址后,单击“运行”,即可执行流水线,实现编译构建和云原生发布。 图1 执行流水线 单击流水线阶段中的“发布”,并单击“任务结果”查看发布单。 图2 查看发布单 发布单展示本次发布的基本信息,包括:工单名称、工单号、发布任务阶段展示。 工单详情页面展示发布过程的详细信息,可以查看当前容器舰队下对应的各集群指定工作负载的运行情况,并且用户可以进行重试、取消等操作。 单击“查看详情”可跳转至工单详情页。 工单详情页可查看应用在舰队内每个集群的发布过程和详细信息,可以查看到当前容器舰队下对应的华为云集群、附着集群及本地集群内工作负载的实例信息、创建时间、k8s事件信息等内容。 图3 工单详情 完成舰队应用发布后,登录U
CS 控制台,左侧导航栏选择“容器舰队”,单击舰队名称,左侧导航栏选择“工作负载”,查看对应的无状态工作负载是否已发布至对应集群内并正常运行。 父主题: 流水线
-
创建守护进程集 登录UCS控制台,在左侧导航栏中选择“容器舰队”。 在“容器舰队”页签下找到已开通集群联邦的舰队,单击名称进入详情页。 在左侧导航栏中选择“工作负载”,切换至“守护进程集”页签,并单击右上角“镜像创建”。 若使用已有的YAML创建工作负载,请单击右上角“YAML创建”。 设置工作负载基本信息。 负载类型:选择“守护进程集”。 负载名称:新增工作负载的名称,命名必须唯一。 命名空间:选择工作负载所在命名空间。如需新建命名空间,请参见创建命名空间。 描述:工作负载的描述信息。 设置工作负载容器配置。 Pod中可以配置多个容器,您可以单击右侧“添加容器”为Pod配置多个容器并分别进行设置。 图1 容器配置 基本信息: 表1 基本信息参数说明 参数 说明 容器名称 为容器命名。 镜像名称 单击后方“选择镜像”,选择容器使用的镜像。 我的镜像:当前区域下华为云镜像仓库中的镜像。若无可用的镜像,可单击“上传镜像”进行上传。 镜像中心:开源镜像仓库中的官方镜像。 共享镜像:由他人账号共享的私有镜像,详情请参见共享私有镜像。 镜像版本 选择需要部署的镜像版本。 更新策略 镜像更新/拉取策略。勾选“总是拉取镜像”表示每次都从镜像仓库拉取镜像;如不勾选则优先使用节点已有的镜像,如果没有这个镜像再从镜像仓库拉取。 CPU配额 申请:容器需要使用的最小CPU值,默认0.25Core。 限制:允许容器使用的CPU最大值。建议设容器配额的最高限额,避免容器资源超额导致系统故障。 内存配额 申请:容器需要使用的内存最小值,默认512MiB。 限制:允许容器使用的内存最大值。如果超过,容器会被终止。 关于CPU/内存配额申请和限制的具体说明请参见设置容器规格。 初始化容器 选择容器是否作为初始化容器。 Init 容器是一种特殊容器,在 Pod 内的应用容器启动之前运行。详细说明请参见Init 容器。 生命周期:设置生命周期回调函数可在容器的特定阶段执行调用,比如容器在停止前希望执行某项操作,就可以设置相应的函数。目前提供的生命周期回调函数有启动命令、启动后处理、停止前处理,详情请参见设置容器生命周期。 健康检查:设置健康检查可以在容器运行过程中定时检查容器的健康状况,详情请参见设置容器健康检查。 环境变量:容器运行环境中设定的一个变量,通过环境变量设置的配置项不会随着Pod生命周期结束而变化,详情请参见设置环境变量。 数据存储:配置容器存储,可以使用本地存储和存储卷声明(PVC)。建议使用PVC将工作负载Pod数据存储在
云存储 上。若存储在本地磁盘上,节点异常无法恢复时,本地磁盘中的数据也将无法恢复。容器存储相关内容请参见容器存储。 安全设置:对容器权限进行设置,保护系统和其他容器不受其影响。请输入用户ID,容器将以当前用户权限运行。 镜像访问凭证:用于访问镜像仓库的凭证。该凭证仅访问私有镜像仓库时使用,如所选镜像为公开镜像,则无需选择密钥。密钥的创建方法请参见创建密钥。 (可选)单击服务配置栏的,进行工作负载服务配置。 若工作负载需要和其它服务互访,或需要被公网访问,您需要添加服务(Service),设置访问方式。工作负载访问的方式决定了这个工作负载的网络属性,不同访问方式的工作负载可以提供不同网络能力,操作详情请参见服务与路由。 您也可以在创建完工作负载之后再创建Service,参见集群内访问(ClusterIP)和节点访问(NodePort)。 Service名称:新增服务名称,用户可自定义,服务名称必须唯一。 访问类型: 集群内访问(ClusterIP):只能集群内访问服务。 节点访问(NodePort):可以通过集群内任意节点访问到服务。 服务亲和(仅节点访问设置): 集群级别:集群下所有节点的IP+访问端口均可以访问到此服务关联的负载,服务访问会因路由跳转导致一定性能损失,且无法获取到客户端源IP。 节点级别:只有通过负载所在节点的IP+访问端口才可以访问此服务关联的负载,服务访问没有因路由跳转导致的性能损失,且可以获取到客户端源IP。 端口配置: 协议:TCP或UDP,请根据业务的协议类型选择。 服务端口:容器端口映射到集群虚拟IP上的端口,用虚拟IP访问应用时使用,端口范围为1-65535,可任意指定。 容器端口:容器镜像中应用程序实际监听的端口,需用户确定。例如:nginx程序实际监听的端口为80。 节点端口(仅节点访问设置):容器端口映射到节点私有IP上的端口,用私有IP访问应用时使用,端口范围为30000-32767,建议选择“自动生成”。 自动生成:系统会自动分配端口号。 指定端口:指定固定的节点端口,默认取值范围为30000-32767。若指定端口时,请确保同个集群内的端口唯一性。 (可选)单击“展开高级配置”,设置工作负载高级配置。 升级策略:指定守护进程集的升级方式,包括整体替换升级和逐步滚动升级,详细参数说明请参见配置工作负载升级策略。 滚动升级:滚动升级将逐步用新版本的实例替换旧版本的实例,升级的过程中,业务流量会同时负载均衡分布到新的和旧的实例上,因此业务不会中断。 替换升级:守护进程集的替换升级,需要手动删除旧实例,再创建新实例。升级过程中业务会中断。 调度策略:您可设置亲和(affinity)与反亲和(anti-affinity)实现Pod的计划性调度,详细信息请参见配置调度策略(亲和与反亲和)。 标签与注解:您可以单击“添加”为Pod增加标签或注解,新增标签或注解的键不能与已有的重复。 单击“下一步:调度与差异化”,对选择的集群进行调度与差异化配置。在选择可调度集群后,可对容器进行“差异化配置”。 调度策略: 调度方式: 复制分发:工作负载将在勾选的所有集群中进行部署。 部署集群:单击集群即可将其勾选为工作负载可调度的集群,集群个数请您根据自身业务进行确定。 差异化配置: 工作负载在不同的集群中部署可进行差异化的配置。在选择可调度集群后单击对应集群右上角,即可对每个集群进行差异化配置,差异化后的容器配置只对该集群生效。 具体参数说明请参见容器配置。 设置完成后,单击“创建工作负载”完成创建。
-
集群未开通日志中心 开通日志中心时,可通过勾选采集Kubernetes事件,创建默认日志采集策略,采集所有事件上报到LTS。 登录云容器引擎(CCE)控制台,单击集群名称进入集群,选择左侧导航栏的“日志中心”。 未进行授权的用户需要先授权,已授权的用户直接跳转下一步。 在弹出框中单击“确认授权”。 图1 添加授权 页面单击“开启”,等待约30秒后,页面自动跳转。 图2 开启 采集容器标准输出:开启后,将创建名为default-stdout的日志策略,并上报所有命名空间下的标准输出到云日志服务(LTS)。 采集Kubernetes事件:开启后,将创建名为default-event的日志策略,并上报所有命名空间下的Kubernetes事件到云日志服务(LTS)。 采集插件日志(NGINX Ingress控制器容器标准输出):需要安装NGINX Ingress控制器插件,并在插件中开启“日志采集”功能。 开启后,将创建名为default-nginx-ingress的日志策略,采集NGINX Ingress控制器插件标准输出,并上报到云日志服务(LTS)。
-
集群已开通日志中心 如果集群已开通日志中心,但未开通采集Kubernetes事件,或者删除了对应的日志策略,您可以参考以下步骤手动创建一个日志采集策略。 登录云容器引擎(CCE)控制台,单击集群名称进入集群,选择左侧导航栏的“日志中心”。 右上角单击“日志采集策略”,将显示当前集群所有上报LTS的日志策略。 单击上方“创建日志采集策略”,勾选“采集Kubernetes事件”,然后单击“确定”。 图3 创建日志策略 创建完成后,您可直接在“日志中心”页面查看日志。选择日志策略配置的日志流名称,即可查看上报到云日志服务(LTS)的事件。 图4 查看事件
-
Kubernetes事件上报
应用运维管理 (
AOM ) 自1.3.2版本起,云原生日志采集插件默认会将上报所有Warning级别事件以及部分Normal级别事件到应用运维管理(AOM),上报的事件可用于配置告警。当集群版本为1.19.16、1.21.11、1.23.9或1.25.4及以上时,安装云原生日志采集插件后,事件上报AOM将不再由控制面组件上报,改为由云原生日志采集插件上报,卸载插件后将不再上报事件到AOM。 自定义事件上报 若已上报的事件不能满足需求,可通过修改配置,修改需要上报到应用运维管理(AOM)的事件。
-
通过控制台配置 登录云容器引擎(CCE)控制台,单击集群名称进入集群,选择左侧导航栏的“配置中心”。 选择“监控运维配置”页签,在“日志配置”中修改Kubernetes事件上报至AOM的策略。 异常事件上报:默认开启,会将所有异常事件上报至AOM。您可以单击“配置黑名单”,将不需要上报的事件添加至黑名单进行管理。 普通事件上报:开启后,会将普通事件上报至AOM,系统默认配置了部分需要上报的普通事件。如果您需要自定义上报的事件,可以单击“配置白名单”,将需要上报添加至白名单进行管理。 配置修改完成后,单击“确认配置”。
-
通过kubectl配置 在集群上执行以下命令,编辑当前的事件采集配置。 kubectl edit logconfig -n kube-system default-event-aom 根据需要修改事件采集配置。 apiVersion: logging.openvessel.io/v1
kind: LogConfig
metadata:
annotations:
helm.sh/resource-policy: keep
name: default-event-aom
namespace: kube-system
spec:
inputDetail: #采集端配置
type: event #采集端类型,请勿修改
event:
normalEvents: #Normal级别事件采集配置
enable: true #是否开启Normal级别事件采集
includeNames: #需要采集的事件名,不指定则采集所有事件
- NotTriggerScaleUp
excludeNames: #不采集的事件名,不指定则采集所有事件
- ScaleDown
warningEvents: #Warning级别事件采集配置
enable: true #是否开启Warning级别事件采集
includeNames: #需要采集的事件名,不指定则采集所有事件
- NotTriggerScaleUp
excludeNames: #不采集的事件名,不指定则采集所有事件
- ScaleDown
outputDetail:
type: AOM #输出端类型,请勿修改
AOM:
events:
- name: DeleteNodeWithNoServer #事件名,必选
nameCn: 废弃节点清理 #事件对应的中文名,不填则上报的事件直接显示英文
resourceType: Namespace #事件对应的资源类型
severity: Major #事件上报到AOM后的事件级别,默认Major。可选值:Critical:紧急;Major:重要;Minor:次要;Info:提示
-
容器舰队支持的能力范围 集群接入UCS后,您可以将其加入容器舰队并开通集群联邦能力,以进行多集群管理。针对已接入UCS的集群(无论是否加入容器舰队)、未开通集群联邦能力的容器舰队、已开通集群联邦能力的容器舰队,UCS所支持的能力范围有所不同,如表1所示。 表1 容器舰队支持的能力范围 能力 已接入UCS的集群 未开通集群联邦能力的容器舰队 已开通集群联邦能力的容器舰队 集群联邦多集群管理 - - √ 流量分发 √ - - 可观测性 √ √ √ 服务网格 - √ √ 策略中心 √ √ √ 配置管理 √ - - 流水线 - - √ 权限管理 √ √ √
-
管理员:
IAM 授权 Tenant Administrator管理员按照图3方式为各个职能团队进行IAM授权,即:先创建四个用户组,分别为这些用户组授予UCS FullAccess、UCS CommonOperations、UCS CIAOperations和UCS ReadOnlyAccess权限,然后为各个用户组添加用户。 图3 IAM授权方式 例如:为开发团队创建用户组dev,授予UCS CommonOperations权限,并添加devuser1、devuser2两个用户。 图4 授权记录 图5 用户管理 详细的操作指导请参见UCS服务资源权限(IAM授权)。需要注意的是,UCS的一些功能依赖其他云服务实现,在使用这些功能时,还需要授予其他云服务的权限。例如,创建权限时需要获取IAM用户列表,因此,为行管团队授予UCS FullAccess权限的同时还需授予VDC ReadOnlyAccess权限。
-
行管团队:搭建基础设施、配置权限策略 选择集群/容器舰队。 容器舰队是多个集群的集合,容器舰队可以实现多集群的权限统一管理。行管人员为容器舰队添加开发权限,后续加入容器舰队的集群将拥有舰队的权限,这样开发人员就有操作容器舰队中集群资源(如创建工作负载)的权限了。详细的操作指导请参见管理容器舰队。 添加权限。 为用户组人员添加开发权限。 一个用户组中可以有多个用户,一个用户也可以加入多个用户组,用户拥有其所在用户组权限的合集。 图6 添加开发权限 注册集群,并将它们添加到舰队中。 UCS服务支持注册华为云集群、本地集群、多云集群及附着集群,行管人员可以根据实际需求选择。详细的操作指导请参见华为云集群、附着集群概述、本地集群概述或多云集群概述。 开通集群联邦。 集群联邦可以提供:多集群统一编排、跨集群弹性伸缩、跨集群服务发现、应用故障自动迁移等能力。集群联邦开通后,容器舰队内的成员集群将自动接入联邦。
-
权限设计 公司不同的职能团队针对UCS资源的操作范围如下图所示: 图2 UCS资源操作全景 :由Tenant Administrator角色的管理员为各个职能团队授权。 、、、、、、:拥有UCS FullAccess权限的行管团队负责创建容器舰队、注册集群、将集群加入容器舰队,以及开通集群联邦能力,搭建多集群联邦基础设施。同时,行管团队可以根据用户/用户组,以及不同的命名空间为集群/容器舰队添加权限,使不同的用户对具体的Kubernetes资源拥有相应的操作权限。 、:拥有UCS CommonOperations权限的开发团队执行创建工作负载、流量分发等操作。 :拥有UCS CIAOperations权限的运维团队执行监控运维等操作。 :拥有UCS ReadOnlyAccess权限的访客进行集群、容器舰队、工作负载等资源的查看操作。
-
开通集群联邦 集群联邦和容器舰队绑定在一起,只需要为容器舰队一键开通集群联邦,就可以方便地操作集群联邦了。 集群联邦的开通包含两个阶段:一、开通集群联邦,二、集群接入联邦。容器舰队开通集群联邦能力后,容器舰队内的成员集群将自动接入联邦。 开通集群联邦有配额限制,并且对容器舰队中的集群有一些约束,请在开通前仔细阅读,避免集群联邦开通失败。 表1 集群约束 项目 约束 集群版本 容器舰队中的所有集群版本必须为1.19及以上。 集群状态 容器舰队中的所有集群状态必须为“运行中”。 集群网络状态 CCE Standard集群、
CCE Turbo 集群:CCE集群所在region为北京四的,开通联邦时UCS将自动在集群所属VPC下创建VPCEP打通网络,非该region则需要集群节点具备公网访问能力,例如为节点绑定公网地址,用以拉取公网镜像。 其他集群:成功接入UCS即可。 配额 集群联邦配额为1,即只能为一个容器舰队开通集群联邦。 登录UCS控制台,在左侧导航栏中选择“容器舰队”。 在“容器舰队”页签下找到目标舰队,页面提示暂未开通集群联邦能力,单击“去开通”按钮。 图1 开通集群联邦 在弹出的提示框中单击“确定”,等待集群联邦开通成功。 当集群不满足约束条件时,界面会弹出报错信息,请按照提示修改,然后重新开通集群联邦。 开通集群联邦大约需要10分钟,请耐心等待。您可以单击集群联邦状态,查看详细的开通进度。开通成功后,容器舰队顶部的提示信息变为“集群联邦能力已开通 ,集群接入成功”。
-
添加集群 容器舰队开通集群联邦后,可以继续为舰队添加集群,添加后,集群会自动接入集群联邦。一个集群联邦最多可接入20个集群。 登录UCS控制台,在左侧导航栏中选择“容器舰队”。 在目标舰队栏中单击“添加集群”,或单击右上角的按钮。 您也可以单击舰队名称进入舰队详情页,在“容器集群”页面单击右上角“添加集群”。 勾选一个或多个已有集群。一个集群只能加入一个舰队,因此列表中显示的集群均为未加入舰队的集群。 请确保所选择的集群符合表1中的约束条件,否则会出现集群添加成功,但是接入集群联邦失败的情况。如果出现这种情况,请参考集群加入联邦校验失败怎么办进行修复。 单击“确定”,完成集群添加。