【问题标题】:Tailing Kubernetes job logs that fail跟踪失败的 Kubernetes 作业日志
【发布时间】:2021-09-16 21:32:29
【问题描述】:

我有以下项目:

database-migration/
    migration.yml
    kustomization.yml

kustomization.yml 的样子:

resources:
  - migration.yml
images:
  - name: enterprise-server
    newTag: 2020.12-6243
    newName: example/enterprise-server
configMapGenerator:
  - name: database-config
    literals:
      - ADMIN_REPOSITORY_URL=jdbc:postgresql://10.1.0.34:5432/app_db
      - AGENT_REPOSITORY_URL=jdbc:postgresql://10.1.0.34:5432/app_db
      - DB_CONNECTION_IDLE_TIMEOUT=60000
      - DB_CONNECTION_MAX_LIFETIME_TIMEOUT=120000
secretGenerator:
  - name: database-credentials
    literals:
      - ADMIN_REPOSITORY_USERNAME=app_admin
      - ADMIN_REPOSITORY_CONNECTION_USERNAME=app_admin@10.1.0.34
      - ADMIN_REPOSITORY_PASSWORD=12345
      - AGENT_REPOSITORY_USERNAME=app_agent
      - AGENT_REPOSITORY_CONNECTION_USERNAME=app_agent@10.1.0.34
      - AGENT_REPOSITORY_PASSWORD=23456
commonLabels:
  app.kubernetes.io/version: 2020.12-6243
  app.kubernetes.io/part-of: myapp

migration.yml 的样子:

apiVersion: batch/v1
kind: Job
metadata:
  name: database-migration
  labels:
    app.kubernetes.io/name: database-migration
    app.kubernetes.io/component: database-migration
spec:
  template:
    metadata:
      labels:
        app.kubernetes.io/name: database-migration
        app.kubernetes.io/component: database-migration
    spec:
      containers:
        - name: database-migration
          image: enterprise-server
          env:
            - name: CLOUD_ENVIRONMENT
              value: KUBERNETES
          envFrom:
            - configMapRef:
                name: database-config
            - secretRef:
                name: database-credentials
          command: ['sh', '-c', '/usr/local/app_enterprise/bin/databaseMigration || [ $? -eq 15 ]; exit $?']
      restartPolicy: Never

当我跑步时:

kubectl create ns appdb
kubectl -n appdb apply -k database-migration
kubectl -n appdb wait --for=condition=complete --timeout=10m job/database-migration

它只是挂了 10 分钟然后失败:

error: timed out waiting for the condition on jobs/database-migration

我想跟踪日志或只查看日志(即使在事后),但不确定如何获取失败作业的日志,或者如何跟踪正在进行的作业的日志。 有什么想法吗?

【问题讨论】:

    标签: kubernetes


    【解决方案1】:

    Job 创建用于执行的 pod。您可以只检查 pod(或所有元素)

    kubectl -n appdb get all

    然后请求 pod 的日志,例如

    kubectl -n appdb logs -f database-migration-xyz123

    【讨论】:

      【解决方案2】:

      关于Kustomization的几点说明

      • 如果您使用的是Kustomization,显然您也可以使用它来创建Namesapce
      • 将命名空间添加到您的 kustomization.yaml 文件中,以便将其添加到您的所有资源中

      我想跟踪日志或只查看日志

      为了查看或跟踪您的日志:

      # get the name of your Job Pod and get the logs
      kubectl logs -n <namespace> jox-xxxxx
      
      # To tail your logs (follow)
      kubectl logs -n <namespace> -f jox-xxxxx
      

      如何获取“崩溃”作业的日志?

      • 添加--previous 标志
      # Add the `--previous` flag to your logs command
      kubectl logs -n <namespace> jox-xxxxx --previous
      

      日志输出示例

      【讨论】:

        猜你喜欢
        • 2019-11-13
        • 1970-01-01
        • 1970-01-01
        • 2019-09-22
        • 2017-06-27
        • 2019-06-03
        • 1970-01-01
        • 2019-04-21
        • 1970-01-01
        相关资源
        最近更新 更多