• ACK容器服务虚拟节点使用阿里云日志服务来收集业务容器日志


    按照这篇博文的介绍,可以在ACK集群上通过Helm的方式部署虚拟节点,提升集群的弹性能力。现在,通过虚拟节点部署的ECI弹性容器实例也支持将stdout输出、日志文件同步到阿里云日志服务(SLS)进行统一管理,所有日志能够被统一收集同一个日志服务project里面。并且,日志收集方式与集群上普通容器收集方式一致,无缝结合。

    本文将结合虚拟节点弹性伸缩的能力来介绍日志收集。

    在ACK集群部署日志服务支撑组件

    ACK集群安装界面勾选使用日志服务,集群会安装支持日志收集的必要组件。

    集群安装完毕后,可以在日志服务控制台 查看到按k8s-log-{Kubernetes 集群 ID}形式命名的工程。收集到的业务容器日志都会放在该工程下。

    已有集群可以按照阿里云帮助文档去部署相关组件。如果在普通集群没有部署相关日志服务组件,那么ECI实例的日志将会被统一收集到eci-log-default-project-开头的project内。

    部署虚拟节点

    可以按照ACK容器服务发布virtual node addon,快速部署虚拟节点提升集群弹性能力这篇文章在集群内部署虚拟节点。

    使用YAML模版来收集普通业务容器日志

    YAML 模板的语法同 Kubernetes 语法,但是为了给容器指定采集配置,需要使用 env 来为 container 增加采集配置和自定义 Tag,并根据采集配置,创建对应的 volumeMounts 和 volumes。以下是一个简单的 Deployment 示例:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      labels:
        app: alpine
      name: alpine
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: alpine
      template:
        metadata:
          labels:
            app: alpine
        spec:
          containers:
          - image: alpine
            imagePullPolicy: Always
            args:
            - ping
            - 127.0.0.1
            name: alpine
            env:
            ######### 配置 环境变量 ###########
            - name: aliyun_logs_test-stdout
              value: stdout
            - name: aliyun_logs_test-file
              value: /log/*.log
            - name: aliyun_logs_log_tags
              value: tag1=v1
            #################################
            ######### 配置vulume mount #######
            volumeMounts:
            - name: volume-sls
              mountPath: /log
          volumes:
          - name: volume-sls
          ###############################

    其中有三部分需要根据您的需求进行配置,一般按照顺序进行配置。

    • 第一部分通过环境变量来创建您的采集配置和自定义 Tag,所有与配置相关的环境变量都采用aliyun_logs_作为前缀。
      创建采集配置的规则如下:
    - name: aliyun_logs_{Logstore 名称}
      value: {日志采集路径}

    示例中创建了两个采集配置,其中 aliyun_logs_log-stdout 这个 env 表示创建一个 Logstore 名字为 log-stdout,日志采集路径为 stdout 的配置,从而将容器的标准输出采集到 log-stdout 这个 Logstore 中。

    说明 Logstore 名称中不能包含下划线(_),可以使用 - 来代替。

    • 创建自定义 Tag 的规则如下:
    - name: aliyun_logs_{任意不包含'_'的名称}_tags
      value: {Tag 名}={Tag 值}

    配置 Tag 后,当采集到该容器的日志时,会自动附加对应的字段到日志服务。

    • 如果您的采集配置中指定了非 stdout 的采集路径,需要在此部分创建相应的 volumnMounts。
      示例中采集配置添加了对c:log*.log 的采集,因此相应地添加了c:log的 volumeMounts。

    将上述yaml保存为test.yaml,应用在集群上:

    $ kubectl create ns virtual
    $ kubectl create -f test.yaml -n virtual
    
    # 查看pod部署情况
    $ kubectl get pods -n virtual -o wide
    NAME                      READY   STATUS    RESTARTS   AGE   IP             NODE                       NOMINATED NODE
    alpine-57c9977fd6-bsvwh   1/1     Running   0          10m   172.18.1.161   cn-hangzhou.10.1.190.228   <none>
    alpine-57c9977fd6-wc89v   1/1     Running   0          10m   172.18.0.169   cn-hangzhou.10.1.190.229   <none>

    查看日志

    到日志服务控制台的相应工程下找到test-stdout这个logstore,点击查询可以看到收集到的普通容器的stdout日志:

    将业务容器扩容到虚拟节点

    将把上面创建的命名空间virtual标记为使用虚拟节点进行部署,然后伸缩两个pod到虚拟节点。

    # 标记namespace
    $ kubectl label namespace virtual virtual-node-affinity-injection=enabled
    
    # scale deployment/alpine
    $ kubectl scale --replicas=4 deployments/alpine -n virtual
    
    # 查看pod部署情况,可以看到2个部署在正常节点,2个部署在虚拟节点
    $ kubectl get pods -n virtual -o wide
    NAME                      READY   STATUS    RESTARTS   AGE   IP             NODE                       NOMINATED NODE
    alpine-57c9977fd6-2ctp7   1/1     Running   0          23s   10.1.190.231   virtual-kubelet            <none>
    alpine-57c9977fd6-b4445   1/1     Running   0          23s   10.1.190.230   virtual-kubelet            <none>
    alpine-57c9977fd6-bsvwh   1/1     Running   0          10m   172.18.1.161   cn-hangzhou.10.1.190.228   <none>
    alpine-57c9977fd6-wc89v   1/1     Running   0          10m   172.18.0.169   cn-hangzhou.10.1.190.229   <none>

    再次查看日志

    再点开test-stdout这个logstore,可以看到收集到的普通容器和ECI实例的混合stdout日志:

    需要注意: 您账户下不同集群内的不同logstore不可以配置收集相同匹配规则的ECI实例日志,如stdout;同一个集群下,不同logstore不可以配置收集相同匹配规则的普通容器、ECI实例日志。

    本文作者:柏理

    原文链接

    本文为云栖社区原创内容,未经允许不得转载。 

  • 相关阅读:
    Anaconda-navigator 打不开的解决方法(亲测有效!)
    Python3.7安装keras和TensorFlow的教程图解
    win10环境下使用anaconda安装opencv
    windows环境下的Anaconda安装与OpenCV机器视觉环境搭建
    各种工具汇总(20210702更新)
    关于文章致谢
    公共数据库信息汇总(20210709更新)
    关于摆脱痛苦
    pip 本地安装 python 包
    报错Error: Sorted input specified, but the file file.bedgraph has the following out of order record解决方案
  • 原文地址:https://www.cnblogs.com/zhaowei121/p/11226609.html
Copyright © 2020-2023  润新知