上云无忧 > 文档中心 > 百度智能云容器引擎服务 CCE 日志管理
容器引擎服务CCE
百度智能云容器引擎服务 CCE 日志管理

文档简介:
CCE 日志管理功能帮助用户对 kubernetes 集群中的业务日志和容器日志进行管理。用户通过日志管理可以将集群中的日志输出到外部的 Elasticsearch 服务或者百度云自己的 BOS 存储中,从而对日志进行分析或者长期保存。
*此产品及展示信息均由百度智能云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

CCE 日志管理

CCE 日志管理功能帮助用户对 kubernetes 集群中的业务日志和容器日志进行管理。用户通过日志管理可以将集群中的日志输出到外部的 Elasticsearch 服务或者百度云自己的 BOS 存储中,从而对日志进行分析或者长期保存。

创建日志规则

在左侧导航栏,点击“监控日志 > 日志管理”,进入日志规则列表页。点击日志规则列表中的新建日志规则:

  • 规则名称:用户自定义,用来对不同的日志规则进行标识和描述
  • 日志类型:“容器标准输出“ 是指容器本身运行时输出的日志,可以通过 docker logs 命令查看,“容器内部日志”是指容器内运行的业务进程,存储在容器内部某个路径
  • 集群名称和日志来源定位到需要输出日志的对象,如果选择“指定容器”,则支持在Deployment、Job、CronJob、DaemonSet、StatefulSet 五种资源维度进行选择

  • Elasticsearch 的地址、端口、索引、以及加密等配置,用来帮助 CCE 日志关联服务将日志输出到对应的 Elasticsearch 服务中。请填写 Elasticsearch 服务信息,需要确保 CCE 集群可以与该 Elasticsearch 服务正确建立连接。生产环境建议直接使用 BES (百度 Elasticsearch)服务。
  • 若要推送到 BOS 存储中需要创建一个可以连接 BOS 存储的 Secret 资源,按以下格式创建,然后在选择 BOS 存储的时候,选定该 Secret 所在的命名空间以及名字。如果机器可以连接外网,那么 BOS 的 Endpoint 可以选择任意地域,如果不能连接外网,则只能选择跟 CCE 集群一样的地域。
  • 创建 BOS 的 Secret 因为权限限制的问题,目前必须使用主账户的 AK/SK,否则无法通过认证鉴权。

apiVersion: v1 kind: Secret metadata: name: bos-secret data: bosak: dXNlcm5hbWU= # echo -n "bosak...." | base64 bossk: 
cGFzc3dvcmQ= # echo -n "bossk...." | base64

配置 kubernetes 资源

在配置完日志管理规则后,需要确保kubernetes中的日志能够正确输出,因此需要在创建相关的kubernetes资源时传入指定的环境变量:

  • 传入环境变量 cce_log_stdout 并指定 value 为 true 表示采集该容器的标准输出,不采集则无需传递该环境变量
  • 传入环境变量 cce_log_internal 并指定 value 为容器内日志文件的绝对路径,此处需填写文件路径,不能为目录
  • 采集容器内文件时需将容器内日志文件所在目录以 emptydir 形式挂载至宿主机。

请参考以下yaml示例:

apiVersion: apps/v1 kind: Deployment metadata: name: tomcat spec: selector: matchLabels: app: tomcat replicas:
 4 template: metadata: labels: app: tomcat spec: containers: - name: tomcat image: "tomcat:7.0" env:
 - name: cce_log_stdout value: "true" - name: cce_log_internal value: "/usr/local/tomcat/logs/catalina.*.log"
 volumeMounts: - name: tomcat-log mountPath: /usr/local/tomcat/logs volumes: - name: tomcat-log emptyDir: {}

修改和删除日志规则

日志规则创建之后,用户可以随时对规则进行修改或者删除。点击修改可以重新编辑已经创建的日志规则,编辑页与新建页逻辑基本一致,但是不允许修改集群以及日志类型。

使用 BES (百度云 Elasticsearch) 服务

生产环境使用建议使用 BES 服务,具体参考: Elasticsearch 创建集群

K8S 集群自建 Elasticsearch (仅供参考)

本方法仅供测试,生产环境建议直接使用 BES 服务。使用如下的 yaml 文件,在 CCE 集群中部署 Elasticsearch:

apiVersion: v1 kind: Service metadata: name: elasticsearch-logging namespace: kube-system labels: k8s-app:
 elasticsearch-logging kubernetes.io/cluster-service: "true" addonmanager.kubernetes.io/mode: Reconcile 
kubernetes.io/name: "Elasticsearch" spec: ports: - port: 9200 protocol: TCP targetPort: db selector: k8s-app:
 elasticsearch-logging --- # RBAC authn and authz apiVersion: v1 kind: ServiceAccount metadata:
 name: elasticsearch-logging namespace: kube-system labels: k8s-app: elasticsearch-logging kubernetes.
io/cluster-service: "true" addonmanager.kubernetes.io/mode: Reconcile --- kind: ClusterRole apiVersion:
 rbac.authorization.k8s.io/v1 metadata: name: elasticsearch-logging labels: k8s-app: elasticsearch-logging 
kubernetes.io/cluster-service: "true" addonmanager.kubernetes.io/mode: Reconcile rules: - apiGroups: 
- "" resources: - "services" - "namespaces" - "endpoints" verbs: - "get" --- kind: ClusterRoleBinding 
apiVersion: rbac.authorization.k8s.io/v1 metadata: namespace: kube-system name: elasticsearch-logging labels:
 k8s-app: elasticsearch-logging kubernetes.io/cluster-service: "true" addonmanager.kubernetes.io/mode:
 Reconcile subjects: - kind: ServiceAccount name: elasticsearch-logging namespace: kube-system apiGroup:
 "" roleRef: kind: ClusterRole name: elasticsearch-logging apiGroup: "" --- # Elasticsearch deployment 
itself apiVersion: apps/v1 kind: StatefulSet metadata: name: elasticsearch-logging namespace: kube-system labels:
 k8s-app: elasticsearch-logging version: v6.3.0 kubernetes.io/cluster-service: "true" addonmanager
.kubernetes.io/mode: Reconcile spec: serviceName: elasticsearch-logging replicas: 2 selector: matchLabels: k8s-app:
 elasticsearch-logging version: v6.3.0 template: metadata: labels: k8s-app: elasticsearch-logging version: 
v6.3.0 kubernetes.io/cluster-service: "true" spec: serviceAccountName: elasticsearch-logging containers:
 - image: hub.baidubce.com/jpaas-public/elasticsearch:v6.3.0 name: elasticsearch-logging resources: 
# need more cpu upon initialization, therefore burstable class limits: cpu: 1000m requests: cpu: 
100m ports: - containerPort: 9200 name: db protocol: TCP - containerPort: 9300 name: transport protocol: 
TCP volumeMounts: - name: elasticsearch-logging mountPath: /data env: - name: "NAMESPACE" valueFrom: fieldRef:
 fieldPath: metadata.namespace volumes: - name: elasticsearch-logging emptyDir: {} # Elasticsearch requires
 vm.max_map_count to be at least 262144. # If your OS already sets up this number to a higher value, feel free
 # to remove this init container. initContainers: - image: alpine:3.6 command: 
["/sbin/sysctl", "-w", "vm.max_map_count=262144"] name: elasticsearch-logging-init securityContext: privileged: true

部署成功后将创建名为 elasticsearch-logging 的 service,如下图所示在创建日志规则时 ES 的地址可填为该 service 的名字,端口为 service 的端口:

使用如下 yaml 部署 kibana,部署成功后通过创建的名为 kibana-logging 的 LoadBalancer 访问 kibana 服务:

apiVersion: v1 kind: Service metadata: name: kibana-logging namespace: kube-system labels: k8s-app:
 kibana-logging kubernetes.io/cluster-service: "true" addonmanager.kubernetes.io/mode: Reconcile
 kubernetes.io/name: "Kibana" spec: ports: - port: 5601 protocol: TCP targetPort: ui selector: 
k8s-app: kibana-logging type: LoadBalancer --- apiVersion: apps/v1 kind: Deployment metadata:
 name: kibana-logging namespace: kube-system labels: k8s-app: kibana-logging kubernetes.io/cluster-service:
 "true" addonmanager.kubernetes.io/mode: Reconcile spec: replicas: 1 selector: matchLabels: k8s-app:
 kibana-logging template: metadata: labels: k8s-app: kibana-logging annotations: seccomp.security.
alpha.kubernetes.io/pod: 'docker/default' spec: containers: - name: kibana-logging image: hub
.baidubce.com/jpaas-public/kibana:v6.3.0 resources: # need more cpu upon initialization,
 therefore burstable class limits: cpu: 1000m requests: cpu: 100m env: - name: ELASTICSEARCH_URL
 value: http://elasticsearch-logging:9200 - name: SERVER_BASEPATH value: "" ports: - containerPort: 5601 name: ui protocol: TCP

注意

生产环境下建议使用百度智能云的 Elasticsearch 服务或者自建专用的 Elasticsearch 集群

相似文档
  • CCE 的服务画像可以查看集群内所有资源的特征和规范性,如镜像检查、应用检查、网络检查、安全检查,并给出对应的评分和详细内容,帮助用户更好的了解集群内服务状况。 注意:服务画像的结果基于前一天的集群数据,且检查规则是一般判定标准,不一定适用于所有业务场景。
  • CCE 集群异常事件报警服务:当 CCE 集群中发生异常事件(如节点 NotReady)时,能够通过云上 BCM 服务 实时向用户报警。 如何使用? (1) 打开百度云 console 主页。进入 CCE 服务,目标集群详情页。 依次点击 "监控日志 => 事件中心",打开右上角 "异常事件推送至BCM" 的开关。
  • 注册百度智能云账号后,系统自动创建的超级管理员用户即为账号的主用户,默认拥有云账户的所有权限和管理所有云资源的权限。在多个人员共享资源和协作管理的场景下,为了保证账户和资源的安全,主用户可以创建子用户,实现不同子用户使用不同的用户名密码,以及拥有不同的云资源访问权限。
  • CCE 基于 IAM 策略授权,指的是百度智能云账号的主用户(或拥有系统管理员权限的子用户)通过多用户访问控制(IAM),将预定义的 CCE 系统策略或者自定义策略授予子用户/用户组,让其拥有 CCE 集群级别(集群、节点、节点组等资源)的只读/管理权限,授权将作用于 CCE 整个产品。
  • 本文介绍如何为子用户配置RBAC权限,实现对CCE集群命名空间的权限控制。 CCE集群服务已完成RBAC集群权限管理系统升级: 禁止未完成RBAC权限授予的子用户访问集群资源,请及时联系主账号完成RBAC授权,以免带来生产上的不便。 子用户将只拥有被指定授予的集群访问权限,原有的默认访问权限将被禁止。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部