• python脚本容器化运行


    编写一个脚本,容器化跑起来,脚本的功能是调用rabbitmq的接口,然后获取queue的信息,并最终打印成json的格式,最后通过lokiql将json提取,并alert告警发送出来

    第一:app.py脚本内容
    # _*_ coding:UTF-8 _*_
    #! /usr/bin/python
    import time
    import requests
    import json
    import subprocess
    import logging

    logger = logging.getLogger()
    logger.setLevel(logging.DEBUG)
    stream_handler = logging.StreamHandler()
    stream_handler.setLevel(logging.INFO)
    logger.addHandler(stream_handler)

    while True:
        command = "curl -u username:password -s 'http://ip:port/api/queues?page=1&page_size=100&name=data_processing&use_regex=false&pagination=true'"
        p = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
        out, err = p.communicate()
        # zifu_out = str(out)
        my_dict = json.loads(out)
        # print(my_dict["items"])
        new_my_dict = my_dict["items"]
        # print(new_my_dict["name"])
        for i in new_my_dict:
            total = i["messages_ready_ram"] + i["messages_unacknowledged"]
            queue_name = i["name"]
            zhanshi = queue_name + ":" + str(total)
            #print(zhanshi)
            #print("\n")
            #logger.info(zhanshi)
            data = {'name':queue_name,'num':total}
            json_str = json.dumps(data)
            logger.info("\n"+json_str)

        time.sleep(300)


    第二:制作docker file 然后deployment部署,然后容器化跑起来
    目录下有
    ls -a
    .   ..    Dockerfile  app.py

    Dockerfile内容
    cat Dockerfile
    FROM xxx   #【某个基础镜像】

    WORKDIR /app

    COPY . /app
    RUN pip3 install requests。 #python文件中缺少request模块
    CMD ["python3","app.py"]

    构建镜像
    docker build -t 镜像name .
    测试镜像
    docker run -itd 
    登录
    docker login
    推送镜像
    docker push

    构建deployment

    kind: Deployment
    apiVersion: apps/v1
    metadata:
      name: jiankong
      namespace: aip-tencent-prod
      labels:
        app: jiankong
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: jiankong
      template:
        metadata:
          creationTimestamp: null
          labels:
            app: jiankong
        spec:
          containers:
            - name: jiankong
              image: imagename
              resources:
                limits:
                  cpu: '2'
                  memory: 2Gi
                requests:
                  cpu: '1'
                  memory: 1Gi
              imagePullPolicy: IfNotPresent
              securityContext:
                capabilities: {}
          restartPolicy: Always
          terminationGracePeriodSeconds: 30
          dnsPolicy: ClusterFirst
          securityContext: {}
          imagePullSecrets:
            - name: harbor-token
          schedulerName: default-scheduler
      strategy:
        type: RollingUpdate
        rollingUpdate:
          maxUnavailable: 50%
          maxSurge: 0
      revisionHistoryLimit: 10
      progressDeadlineSeconds: 600

  • 相关阅读:
    后端进阶知识 Buffer pool 图文详解 之 free链表
    顺序读写函数的介绍:fscanf & fprintf
    div+css布局实现个人网页设计(HTML期末作业)
    【Redis】配置项与发布订阅
    推荐一款好用的编程AI Gpt-3有效提高生产力
    Linux命令行上传制品到artifactory
    DJYOS推荐:DJYOS给嵌入式软件开发带来的跨越
    【Word自定义配置,超简单,图文并茂】自定义Word中的默认配置,比如标题大小与颜色(参考科研作图配色),正文字体等
    Spring突击复习第二天
    【Python】PySpark 数据计算 ⑤ ( RDD#sortBy方法 - 排序 RDD 中的元素 )
  • 原文地址:https://blog.csdn.net/jj1130050965/article/details/126916271