云服务器内容精选

  • 通过MCI访问服务 MCI对象创建成功后,您可以通过 http://IP:port/path 访问后端工作负载,其中IP:port为MCI关联ELB的IP和端口,path为MCI对象中定义的路径。 MCI对象中还可以设置外部 域名 ,这样您就可以通过域名来访问到ELB,进而访问到后端服务。 spec: rules: - host: www.example.com # 域名 http: paths: - path: / backend: serviceName: nginx # 准备一个名为nginx的联邦service servicePort: 80 # 端口号为80 域名访问依赖于域名解析,需要您将域名解析指向ELB实例的IP地址,例如您可以使用云解析服务 DNS来实现域名解析。
  • 创建MCI对象 使用kubectl连接集群联邦,详细操作请参见使用kubectl连接集群联邦。 创建并编辑 mci.yaml 文件,文件内容定义如下所示,参数定义请参见表1。 vi mci.yaml apiVersion: networking.karmada.io/v1alpha1 kind: MultiClusterIngress metadata: name: nginx-ingress namespace: default annotations: karmada.io/elb.conditions.nginx-svc: '[{ "type": "header", "headerConfig": { "key":"x-header", "values": [ "green" ] } }]' karmada.io/elb.id: 90f9f782-1243-41cc-a57d-6157f6cb85bf karmada.io/elb.projectid: 65382450e8f64ac0870cd180d14e684b karmada.io/elb.health-check-flag: "on" karmada.io/elb.health-check-option.nginx-svc: '{"protocol":"TCP"}' spec: ingressClassName: public-elb rules: - host: demo.localdev.me http: paths: - backend: service: name: nginx-svc # 准备一个名为nginx-svc的联邦service port: number: 8080 # 端口号为8080 path: /web pathType: Prefix MCI对象的结构体定义与networking.kubernetes.io/v1版本Ingress一致,不同之处在于后端服务需要填写为联邦Service,即在U CS 控制台创建的Service,具体请参见集群内访问(ClusterIP)。 在配置MCI文件内容的过程中需要遵守的约束条件如下: apiVersion,kind,name必须指定。 spec下不允许填写TLS和DefaultBackend字段。 rules、paths不能为空。 host必须是DNS名称,不可以是IP地址。 service中所指定的后端服务必须是存在的、且输入的相关信息(如端口)是正确的,否则会导致访问服务失败。若您已经创建了参数信息错误的MCI对象,请参考4中的命令更新该MCI对象。 paths中,配置的高级转发策略(karmada.io/elb.conditions.{service name})越多的后端(backend)在paths中的位置应该越靠前。因为backend在paths中配置的位置越靠前,其转发优先级越高。 示例:如果为后端X配置两条转发策略a和b,为后端Y配置一条转发规则a,则此时paths中X的配置顺序应在Y之前,否则,同时符合a、b两条转发规则的流量将按照优先级顺序全部转发至Y中。 backend下不允许填写resource字段。 path值需要是绝对路径;不合法的path值:invalidPathSequences = []string{"//", "/./", "/../", "%2f","%2F"},invalidPathSuffixes = []string{"/..", "/."}。 pathType合法值:Exact、Prefix、ImplementationSpecific。 在默认配置下,Service名称的长度限制最长支持45个字符。 表1 关键参数说明 参数 是否必填 参数类型 描述 karmada.io/elb.id 是 String MCI关联的elb的id,不允许为空。 取值范围:1-32个字符。 karmada.io/elb.projectid 是 String MCI关联的elb所属的项目ID,获取方法请参见获取项目ID。 取值范围:1-32个字符。 karmada.io/elb.port 否 String MCI关联的elb的端口,不填时默认为80。 取值范围:1-65535。 karmada.io/elb.health-check-flag 否 String 是否启用健康检查,可选值为: on:开启 off:不开启 不填写时默认为off。 karmada.io/elb.health-check-option.{service name} 否 HealthCheck Object 健康检查参数,详情请参见HealthCheck。{service name}请修改为联邦Service的名称。 说明: 健康检查参数配置示例: karmada.io/elb.health-check-option.nginx-svc: '{"protocol":"TCP","delay":"5","connect_port":"80","timeout":"1","max_retries":"1","path":"/wd"}' 在annotation开启健康检查配置的情况下,Service名称的长度不应超过39个字符。 karmada.io/elb.conditions.{service name} 否 Array of Condition Object 高级转发策略,详情请参见Condition。{service name}请修改为联邦Service的名称。 karmada.io/elb.lb-algorithm.{service name} 否 String 转发算法: ROUND_ROBIN:加权轮询算法。 LEAST_CONNECTIONS:加权最少连接算法。 SOURCE_IP:源IP算法。 不填写时默认为ROUND_ROBIN。 {service name}请修改为联邦Service的名称。 karmada.io/elb.keepalive_timeout 否 string 客户端连接空闲超时时间,单位为秒。当一直未请求的时间超过配置值,负载均衡会暂时中断当前连接,直到下一次请求时再重新建立新的连接。 不填写时默认为60s。 取值范围:0-4000s karmada.io/elb.client_timeout 否 string 等待客户端请求超时时间,单位为秒。 不填写时默认值为60s。 取值范围:1-300s karmadas.io/elb.member_timeout 否 string 等待后端服务器响应超时时间,单位为秒。请求转发后端服务器后,若未响应时间超过配置值,负载均衡将终止等待,并返回HTTP 504错误码。 不填写时默认为60s。 取值范围:1-300s ingressClassName 是 String ingressClass名称。取值必须为public-elb。 host 否 String 为服务访问域名配置。请确保所填写的域名已注册并备案,一旦配置了域名规则后,必须使用域名访问。 不填写时默认为"",表示域名全匹配。 backend 否 Backend Object 后端,是Service和端口名称的组合。对于发往MCI的 HTTP和HTTPS请求,如果与规则中的主机和路径匹配,则会被发送到所列出的后端。 注意: 后端在paths中的配置顺序决定了策略的转发优先级。 示例:如果为后端X配置两条转发策略a和b,为后端Y配置一条转发规则a,则此时paths中X的配置顺序应在Y之前,否则,同时符合a、b两条转发规则的流量将按照优先级顺序全部转发至Y中。 path 是 String 路由路径,您可以自定义设置。所有外部访问请求需要匹配host和path。 说明: 此处添加的访问路径要求后端应用内存在相同的路径,否则转发无法生效。 例如,Nginx应用默认的Web访问路径为“/usr/share/nginx/html”,在为Ingress转发策略添加“/test”路径时,需要应用的Web访问路径下也包含相同路径,即“/usr/share/nginx/html/test”,否则将返回404。 pathType 是 String 路径类型。 ImplementationSpecific: 匹配方法取决于具体Ingress Controller的实现。在CCE中会使用ingress.beta.kubernetes.io/url-match-mode指定的匹配方式。 Exact:精确匹配 URL 路径,且区分大小写。 Prefix:前缀匹配,且区分大小写。该方式是将URL路径通过“/”分隔成多个元素 ,并且对元素进行逐个匹配。 如果URL中的每个元素均和路径匹配,则说明该URL的子路径均可以正常路由。 说明: Prefix匹配时每个元素均需精确匹配,如果URL的最后一个元素是请求路径中最后一个元素的子字符串,则不会匹配 。例如:/foo/bar匹配/foo/bar/baz,但不匹配/foo/barbaz。 通过“/”分隔元素时,若URL或请求路径以“/”结尾,将会忽略结尾的“/”。例如:/foo/bar会匹配/foo/bar/。 关于Ingress路径匹配示例,请参见示例。 表2 HealthCheck参数说明 参数 是否必填 参数类型 描述 protocol 否 String 健康检查使用的协议,支持TCP/HTTP。 connect_port 否 Int 健康检查使用的端口。支持值为1-65535。 delay 否 Int 健康检查的延迟时间,以秒为单位,1-50。 timeout 否 Int 健康检查的超时时间,以秒为单位,1-50。 path 否 String 健康检查的请求URL,当type为HTTP/HTTPS时生效。 以"/"开头,默认为"/"。支持使用字母、数字和短划线(-)、正斜线(/)、半角句号(.)、百分号(%)、半角问号(?)、井号(#)和and(&)以及扩展字符集。长度为1-80个字符。 max_retries 否 Int 最大重试次数,取值范围1-10。 表3 Condition参数说明 参数 是否必填 参数类型 描述 type 是 String 高级转发策略类型,当前仅支持header。 headerConfig 是 headerConfig Object 高级转发策略对象,详情请参见headerConfig。 表4 headerConfig参数说明 参数 是否必填 参数类型 描述 key 是 String 转发Header头。 长度限制1-40字符,只允许包含字母、数字、短划线和下划线。 values 是 String数组 转发Header头对应的值。 长度限制1-128字符,不支持空格, 双引号,支持以下通配符:*(匹配0个或更多字符)和?(正好匹配1个字符)。 执行如下命令创建MCI对象。 kubectl apply -f mci.yaml 回显如下。 multiClusterIngress.networking.karmada.io/nginx-ingress created 创建完成后,可以执行如下命令操作MCI对象。其中nginx-ingress为MCI对象的名称。 获取MCI对象:kubectl get mci nginx-ingress 更新MCI对象:kubectl edit mci nginx-ingress 删除MCI对象:kubectl delete mci nginx-ingress 若ELB后端服务器组显示后端服务器状态为已删除,请检查Pod的IP网段是否与ELB的VPC网段冲突。
  • 准备工作 如您没有可用的ELB实例,需要先创建ELB实例,具体请参考创建独享型负载均衡器。该ELB实例需要满足以下条件: ELB为独享型。 ELB必须支持应用型(HTTP/HTTPS)。 ELB网络类型必须支持私网(有私有IP地址)。 如果ELB与成员集群的网络不在同一VPC内,ELB需要支持开启跨VPC访问的开关。 MCI为跨集群后端工作负载提供统一入口和七层网络访问,因此需要在联邦中提前部署可用的工作负载(Deployment)和服务(Service)。若您无可用工作负载和服务,请参考无状态负载和集群内访问(ClusterIP)创建。 设置集群为underlay网络,支持underlay网络的集群类型请参见设置集群网络。
  • 约束限制 当前MCI仅支持版本为1.21及以上的 CCE Turbo 集群、网络模型为underlay的其他Kubernetes集群创建。 请提前做好网络规划,保证成员集群间容器网络不冲突,确保ELB实例与容器Pod IP网络可达。若MCI的ELB实例与集群处于不同VPC内,请提前打通VPC间的网络。 当为同一Service同时配置MCI与MCS时,该Service将会下发至MCS中配置的下发集群、访问集群以及对应工作负载的部署集群。
  • 创建工作负载时设置 创建Deployment、StatefulSet、DaemonSet等不同类型的工作负载时添加Service的方法一致。 参考创建无状态负载、创建有状态负载或创建守护进程集,在服务配置步骤,单击,进行工作负载服务配置。 Service名称:自定义服务名称,取值范围为1-50字符。 访问类型:选择“节点访问 NodePort”。 服务亲和: 集群级别:集群下所有节点的IP+访问端口均可以访问到此服务关联的负载,服务访问会因路由跳转导致一定性能损失,且无法获取到客户端源IP。 节点级别:只有通过负载所在节点的IP+访问端口才可以访问此服务关联的负载,服务访问没有因路由跳转导致的性能损失,且可以获取到客户端源IP。 端口配置: 协议:TCP或UDP,请根据业务的协议类型选择。 服务端口:容器端口映射到集群虚拟IP上的端口,用虚拟IP访问应用时使用,端口范围为1-65535,可任意指定。 容器端口:容器镜像中应用程序实际监听的端口,需用户确定。例如:nginx程序实际监听的端口为80。 节点端口:容器端口映射到节点私有IP上的端口,用私有IP访问应用时使用,端口范围为30000-32767,建议选择“自动生成”。 自动生成:系统会自动分配端口号。 指定端口:指定固定的节点端口,默认取值范围为30000-32767。若指定端口时,请确保同个集群内的端口唯一性。 设置完成后,单击“确认”。 单击“下一步:调度与差异化”,进行集群调度与差异化配置。设置完成后,单击“创建工作负载”完成创建。 获取访问地址。 单击左侧导航栏“服务与路由”,选择“服务”页签。 单击所添加的Service名称进入“服务详情”界面,获取部署集群的访问地址。如果集群下节点有绑定弹性IP,则可以通过集群下关联实例所在节点弹性IP地址 + 节点端口的形式访问后端负载。
  • 相关操作 通过UCS控制台,您还可以执行表1中的操作。 表1 相关操作 操作 说明 YAML创建 单击右上角“YAML创建”,可使用已有的YAML创建服务。 查看详情 选择服务所在的命名空间。 (可选)根据服务名称进行搜索。 单击服务名称即可查看服务详情,包括基本信息以及各集群的部署信息。 在服务详情页的部署集群栏中单击“查看YAML”,可查看各个集群中部署的服务实例YAML,并支持下载。 编辑YAML 单击服务名称后的“编辑YAML”,可查看并编辑当前服务的YAML文件。 更新 单击服务名称后的“更新”。 根据访问参数更改信息。 单击“确认”提交已修改的信息。 删除 单击服务名称后的“删除”,并单击“是”进行确认。 批量删除 勾选需要删除的服务。 单击左上角的“批量删除”。 单击“是”进行确认。
  • 创建工作负载后设置 登录UCS控制台,在左侧导航栏中选择“容器舰队”。 在“容器舰队”页签下找到已开通集群联邦的舰队,单击名称进入详情页。 在左侧导航栏中选择“服务与路由”,选择“服务”页签。 选择服务所在命名空间,并单击右上角“创建服务”。如需新建命名空间,请参见创建命名空间。 设置访问参数。 图1 创建服务 Service名称:自定义服务名称,可与工作负载名称保持一致。 服务类型:选择“节点访问 NodePort”。 服务亲和: 集群级别:集群下所有节点的IP+访问端口均可以访问到此服务关联的负载,服务访问会因路由跳转导致一定性能损失,且无法获取到客户端源IP。 节点级别:只有通过负载所在节点的IP+访问端口才可以访问此服务关联的负载,服务访问没有因路由跳转导致的性能损失,且可以获取到客户端源IP。 端口配置: 协议:TCP或UDP,请根据业务的协议类型选择。 服务端口:容器端口映射到集群虚拟IP上的端口,用虚拟IP访问应用时使用,端口范围为1-65535,可任意指定。 容器端口:容器镜像中应用程序实际监听的端口,需用户确定。例如:nginx程序实际监听的端口为80。 节点端口:容器端口映射到节点私有IP上的端口,用私有IP访问应用时使用,端口范围为30000-32767,建议选择“自动生成”。 自动生成:系统会自动分配端口号。 指定端口:指定固定的节点端口,默认取值范围为30000-32767。若指定端口时,请确保同个集群内的端口唯一性。 命名空间:服务所在命名空间。 选择器:服务通过选择器与负载(标签)关联。单击“引用负载标签”,可选择已有的工作负载。 负载类型:选择需要关联的负载类型。 工作负载:选择一个已有的工作负载。如工作负载列表未显示,请单击刷新。 标签:选择工作负载后自动获取对应的标签,不可修改。 图2 引用负载标签 单击“确认”。创建成功后可在“服务”页签的列表中查看。 获取访问地址。 单击左侧导航栏“服务与路由”,选择“服务”页签。 单击所添加的Service名称进入“服务详情”界面,获取部署集群的访问地址。如果集群下节点有绑定弹性IP,则可以通过集群下关联实例所在节点弹性IP地址 + 节点端口的形式访问后端负载。
  • 添加方式 登录UCS控制台,在左侧导航栏中选择“容器舰队”。 在“容器舰队”页签下找到已开通集群联邦的舰队,单击名称进入详情页。 在左侧导航栏中选择“服务与路由”,选择“服务”页签。 选择服务所在命名空间,并单击右上角“创建服务”。如需新建命名空间,请参见创建命名空间。 设置访问参数。 图1 创建服务 Service名称:服务名称,可自定义,取值范围为1-50字符。 访问类型:选择“负载均衡 LoadBalancer”。 服务亲和: 集群级别:集群下所有节点的IP+访问端口均可以访问到此服务关联的负载,服务访问会因路由跳转导致一定性能损失,且无法获取到客户端源IP。 节点级别:只有通过负载所在节点的IP+访问端口才可以访问此服务关联的负载,服务访问没有因路由跳转导致的性能损失,且可以获取到客户端源IP。 端口配置: 协议:TCP或UDP,请根据业务的协议类型选择。 服务端口:容器端口映射到负载均衡实例的端口,通过负载均衡对外暴露服务时使用,端口范围为1-65535,可任意指定。 容器端口:容器镜像中应用程序实际监听的端口,需用户确定。例如:nginx程序实际监听的端口为80。 部署集群:选择负载均衡部署的集群,并完成负载均衡的差异化设置。 图2 添加部署集群 CCE集群: 负载均衡器:仅支持集群所在VPC下的负载均衡实例。 分配策略: 加权轮询算法:根据不同的权重将请求分配到后端服务器。 加权最少连接:将请求分发给(当前连接/权重)比值最小的后端服务器进行处理。 源IP算法:将客户端IP请求固定分配给一台服务器,实现获取同一个session。 会话保持类型:默认不启用,可选择“源IP地址”。负载均衡监听是基于IP地址的会话保持,即来自同一IP地址的访问请求转发到同一台后端服务器上。 健康检查:默认不启用。此处健康检查是设置负载均衡的健康检查配置,支持TCP和HTTP协议,其参数详细解释参见表1。 表1 健康检查参数说明 参数 说明 示例 检查路径 当“协议”为HTTP时设置。指定健康检查的URL地址的路径。检查路径只能以/开头,长度范围[1-80]。 / 端口 健康检查端口号,取值范围[1,65535]。 健康检查默认使用业务端口(Service的NodePort和容器端口)作为健康检查的端口。 80 检查周期 每次健康检查响应的最大间隔时间。 取值范围[1-50]。 5 超时时间(秒) 每次健康检查响应的最大超时时间。 取值范围[1-50]。 10 最大重试次数 健康检查最大的重试次数,取值范围[1-10]。 5 其他云:访问注释支持key/value对格式,请您根据自身业务以及厂家要求进行注解配置。 命名空间:服务所在命名空间。 选择器:服务通过选择器与负载(标签)关联。单击“引用负载标签”,可选择已有的工作负载。 负载类型:选择需要关联的负载类型。 工作负载:选择一个已有的工作负载。如工作负载列表未显示,请单击刷新。 标签:选择工作负载后自动获取对应的标签,不可修改。 图3 引用负载标签 单击“确认”。 获取访问地址。 单击左侧导航栏“服务与路由”,选择“服务”页签。 单击所添加的Service名称进入“服务详情”界面,获取部署集群的访问地址。您可以通过负载均衡的弹性IP地址 + 端口的形式访问后端负载。
  • 相关操作 通过UCS控制台,您还可以执行表2中的操作。 表2 相关操作 操作 说明 YAML创建 单击右上角“YAML创建”,可使用已有的YAML创建服务。 查看详情 选择服务所在的命名空间。 (可选)根据服务名称进行搜索。 单击服务名称即可查看服务详情,包括基本信息以及各集群的部署信息。 在服务详情页的部署集群栏中单击“查看YAML”,可查看各个集群中部署的服务实例YAML,并支持下载。 编辑YAML 单击服务名称后的“编辑YAML”,可查看并编辑当前服务的YAML文件。 更新 单击服务名称后的“更新”。 根据服务参数更改信息。 单击“确认”提交已修改的信息。 删除 单击服务名称后的“删除”,并单击“是”进行确认。 批量删除 勾选需要删除的服务。 单击左上角的“批量删除”。 单击“是”进行确认。
  • 相关操作 通过UCS控制台,您还可以执行表1中的操作。 表1 相关操作 操作 说明 YAML创建 单击右上角“YAML创建”,可使用已有的YAML创建服务。 查看详情 选择服务所在的命名空间。 (可选)根据服务名称进行搜索。 单击服务名称即可查看服务详情,包括基本信息以及各集群的部署信息。 在服务详情页的部署集群栏中单击“查看YAML”,可查看各个集群中部署的服务实例YAML,并支持下载。 编辑YAML 单击服务名称后的“编辑YAML”,可查看并编辑当前服务的YAML文件。 更新 单击服务名称后的“更新”。 根据服务参数更改信息。 单击“确认”提交已修改的信息。 删除 单击服务名称后的“删除”,并单击“是”进行确认。 批量删除 勾选需要删除的服务。 单击左上角的“批量删除”。 单击“是”进行确认。
  • 创建工作负载时设置 创建Deployment、StatefulSet、DaemonSet等不同类型的工作负载时添加Service的方法一致。 参考创建无状态负载、创建有状态负载或创建守护进程集,在服务配置步骤,单击,进行工作负载服务配置。 Service名称:服务名称,可自定义,取值范围为1-50字符。 访问类型:选择“集群内访问 ClusterIP”。 端口配置: 协议:TCP或UDP,请根据业务的协议类型选择。 服务端口:容器端口映射到集群虚拟IP上的端口,用虚拟IP访问应用时使用,端口范围为1-65535,可任意指定。 容器端口:容器镜像中应用程序实际监听的端口,需用户确定。例如:nginx程序实际监听的端口为80。 图1 工作负载服务配置 设置完成后,单击“确认”。 单击“下一步:调度与差异化”,进行集群调度与差异化配置。设置完成后,单击“创建工作负载”完成创建。 获取访问地址。 单击左侧导航栏“服务与路由”,选择“服务”页签。 单击所添加的Service名称进入“服务详情”界面,获取部署集群的访问地址。
  • 创建工作负载后设置 登录UCS控制台,在左侧导航栏中选择“容器舰队”。 在“容器舰队”页签下找到已开通集群联邦的舰队,单击名称进入详情页。 在左侧导航栏中选择“服务与路由”,选择“服务”页签。 选择服务所在命名空间,并单击右上角“创建服务”。如需新建命名空间,请参见创建命名空间。 设置访问参数。 图2 创建服务 Service名称:自定义服务名称,可与工作负载名称保持一致。 服务类型:选择“集群内访问 ClusterIP”。 端口配置: 协议:TCP或UDP,请根据业务的协议类型选择。 服务端口:容器端口映射到集群虚拟IP上的端口,用虚拟IP访问应用时使用,端口范围为1-65535,可任意指定。 容器端口:容器镜像中应用程序实际监听的端口,需用户确定。例如:nginx程序实际监听的端口为80。 命名空间:服务所在命名空间。 选择器:服务通过选择器与负载(标签)关联。单击“引用负载标签”,可选择已有的工作负载。 负载类型:选择需要关联的负载类型。 工作负载:选择一个已有的工作负载。如工作负载列表未显示,请单击刷新。 标签:选择工作负载后自动获取对应的标签,不可修改。 图3 引用负载标签 单击“确认”。创建成功后可在“服务”页签的列表中查看。
  • log-agent指标说明 log-agent插件的log-operator、fluent-bit和otel-collector组件提供了一系列指标,您可以使用 AOM 或Prometheus来监控这些指标,以便及时了解log-agent插件的运行情况,具体操作可参考使用AOM监控自定义指标或使用Prometheus监控自定义指标。详细的指标如下所述: log-operator组件(仅华为云集群) 端口:8443;地址:/metrics;协议:https 表7 指标 指标名 说明 类型 log_operator_aksk_latest_update_times AK/SK最后更新时间 Gauge log_operator_aksk_update_total AK/SK更新次数 Counter log_operator_send_request_total 发送请求数 Counter log_operator_webhook_listen_status Webhook监听状态 Gauge log_operator_http_request_duration_seconds HTTP请求时延 Histogram log_operator_http_request_total HTTP请求数 Counter log_operator_webhook_request_total Webhook请求数 Counter fluent-bit组件 端口:2020;地址:/api/v1/metrics/prometheus;协议:http 表8 指标 指标名 说明 类型 fluentbit_filter_add_records_total 用于记录在过滤器中添加的记录总数 Counter fluentbit_filter_drop_records_total 用于记录被过滤掉的日志记录数量 Counter fluentbit_input_bytes_total 用于衡量Fluent Bit在处理日志数据时输入的总字节数 Counter fluentbit_input_files_closed_total 用于记录关闭的文件总数 Counter fluentbit_input_files_opened_total 用于监控Fluent Bit的文件输入插件(input plugin)打开的文件数量 Counter fluentbit_input_files_rotated_total 用于记录Fluent Bit输入插件已经轮转的文件总数 Counter fluentbit_input_records_total 用于衡量 Fluent Bit 在输入插件中处理的记录数 Counter fluentbit_output_dropped_records_total 用于记录输出插件丢弃的记录数量 Counter fluentbit_output_errors_total 用于监控 Fluent Bit 的输出错误数量 Counter fluentbit_output_proc_bytes_total 用于监控 Fluent Bit 的输出插件(output plugin)处理的总字节数 Counter fluentbit_output_proc_records_total 用于监控 Fluent Bit 的输出插件处理的记录数 Counter fluentbit_output_retried_records_total 用于衡量 Fluent Bit 在输出数据时重试的次数 Counter fluentbit_output_retries_total 用于衡量 Fluent Bit 在发送数据到输出插件时发生重试的次数 Counter fluentbit_uptime Fluent Bit 运行的时间,通常以秒为单位 Counter fluentbit_build_info 用于显示Fluent Bit的版本和构建信息 Gauge otel-collector组件 端口:8888;地址:/metrics;协议:http 表9 指标 指标名 说明 类型 otelcol_exporter_enqueue_failed_log_records 用于衡量OpenTelemetry Collector在将日志记录发送到下游系统时,由于某些原因无法成功发送的日志记录数量 Counter otelcol_exporter_enqueue_failed_metric_points 用于衡量在将指标数据发送到后端时,由于某些原因导致无法成功发送的指标数据点的数量 Counter otelcol_exporter_enqueue_failed_spans 用于衡量otelcol exporter在将span发送到后端时失败的次数 Counter otelcol_exporter_send_failed_log_records 用于衡量日志记录发送失败的数量 Counter otelcol_exporter_sent_log_records 用于衡量OpenTelemetry Collector(otelcol)发送的日志记录数量 Counter otelcol_process_cpu_seconds 用于度量进程CPU使用时间的指标,它表示进程在特定时间段内使用的CPU时间,单位为秒 Counter otelcol_process_memory_rss 是OpenTelemetry中用于监控进程内存使用情况的一个指标。其中,rss代表Resident Set Size,即进程当前占用的物理内存大小 Gauge otelcol_process_runtime_heap_alloc_bytes 用于监控进程运行时堆内存分配的指标。它表示进程在运行时分配的堆内存的总字节数。 Gauge otelcol_process_runtime_total_alloc_bytes 用于衡量进程在运行时分配的总字节数 Counter otelcol_process_runtime_total_sys_memory_bytes 用于衡量进程在运行时使用的系统内存总量,单位为字节。 Gauge otelcol_process_uptime 指OpenTelemetry收集器进程的运行时间,以秒为单位。 Counter otelcol_receiver_accepted_log_records 用于衡量OpenTelemetry收集器接收并成功处理的日志记录数量 Counter otelcol_receiver_refused_log_records 用于衡量接收器(receiver)拒绝接收的日志记录数量 Counter
  • log-agent事件说明 在log-agent插件的安装和运行阶段,log-operator组件会上报事件,您可以根据这些事件来判断安装是否成功,并确定故障原因。具体如表6所示: 表6 log-agent事件说明 事件名称 说明 InitLTSFailed 初始化LTS日志组日志流失败 WatchAKSKFailed 监听AKSK失败 WatchAKSKSuccessful 监听AKSK成功 RequestLTSFailed 请求LTS接口失败 InitLTSSuccessful 初始化LTS日志组日志流成功 CreateWebhookConfigFailed 创建MutatingWebhookConfiguration失败 CreateWebhookConfigSuccessful 创建MutatingWebhookConfiguration成功 StartServerSuccessful 开启监听成功 StartServerFailed 开启监听失败 StartManagerFailed 开启CRD监听失败 InjectAnnotationFailed annotation注入失败 InjectAnnotationSuccessful annotation注入成功 UpdateLogConfigFailed 更新logconfig信息失败 GetConfigListFailed 获取CR列表失败 GenerateConfigFailed 生成fluent-bit、otel配置失败
  • 本地集群安装云原生日志插件前置授权 由于云原生日志插件需要访问LTS和AOM两个云服务,访问云服务需要对云原生日志插件进行鉴权,本地集群云原生日志插件使用工作负载 Identity方式允许集群中的工作负载模拟 IAM 用户来访问云服务。 工作负载 Identity方式是将集群的公钥配置到IAM身份提供商中,并添加 ServiceAccount 与 IAM 账号映射规则。工作负载部署时挂载ServiceAccount对应的Token,使用此Token访问云服务,IAM 使用该公钥验证Token,从而无需直接使用 IAM 账号的 AK/SK 等信息,降低安全风险。 获取本地集群私钥签发的jwks,该公钥用于验证集群签发的 ServiceAccount Token。 使用kubectl连接本地集群。 执行如下命令获取公钥。 kubectl get --raw /openid/v1/jwks 返回结果为一个 json 字符串,是当前集群的签名公钥,用于访问身份供应商。 { "keys": [ { "kty": "RSA", "e": "AQAB", "use": "sig", "kid": "Ew29q....", "alg": "RS256", "n": "peJdm...." } ] } 在 IAM 配置身份供应商,标志当前集群在 IAM 侧的身份。 登录IAM控制台,查询本地集群所在项目的ID,创建身份供应商,协议选择OpenID Connect。指定插件需要配置指定的身份供应商名称,具体请参见表1。用户组的权限配置具体操作请参见用户组策略内容。 表1 log-agent身份供应商配置 插件名称 身份提供商名称 客户端 ID namespace ServiceAccountName 用户组需要开通的最小权限 log-agent ucs-cluster-identity-{项目ID} ucs-cluster-identity monitoring log-agent-serviceaccount aom:alarm:* lts:*:* 图1 修改身份提供商信息 单击“确定”,然后修改身份提供商信息,需要修改的信息如表2所示。随后创建身份转换规则,单击“创建规则”进行创建。 图2 修改身份提供商信息 表2 身份提供商配置参数说明 参数 说明 访问方式 选择“编程访问”。 配置信息 身份供应商 URL:https://kubernetes.default.svc.cluster.local。 客户端 ID:指定插件需要配置指定的客户端ID,请参见表1。 签名公钥:本地集群的 jwks,获取方法请参见1。涉及多个集群时,请用逗号分隔每个集群的keys数组内容。 身份转换规则 身份转换规则的作用将集群内的ServiceAccount和IAM用户组做映射。 属性:sub 条件:any_one_of 值: 值的格式为:system:serviceaccount:Namespace:ServiceAccountName 其中Namespace请修改为需要创建ServiceAccount的命名空间,ServiceAccountName请修改为需要创建的ServiceAccount名称。 例如:值为system:serviceaccount:monitoring:log-agent-serviceaccount,表明在monitoring命名空间下创建一个名为log-agent的ServiceAccount,并映射到对应用户组,后续使用该 ServiceAccount获取的IAM Token就拥有了对应用户组的权限。 说明: 本地集群中的相关插件需要配置指定的 ServiceAccountName 和用户组权限才能正常工作,请参见 表1。 图3 创建身份转换规则 单击“确定”。