GCP GKE:查看终止的作业/窗格的日志

时间:2019-07-04 06:29:43

标签: kubernetes google-cloud-platform google-kubernetes-engine

我在GKE上有一些cron职位。

其中一个吊舱确实终止了,现在我正在尝试访问日志。

➣ $ kubectl get events
LAST SEEN   TYPE      REASON             KIND      MESSAGE
23m         Normal    SuccessfulCreate   Job       Created pod: virulent-angelfish-cronjob-netsuite-proservices-15622200008gc42
22m         Normal    SuccessfulDelete   Job       Deleted pod: virulent-angelfish-cronjob-netsuite-proservices-15622200008gc42
22m         Warning   DeadlineExceeded   Job       Job was active longer than specified deadline
23m         Normal    Scheduled          Pod       Successfully assigned default/virulent-angelfish-cronjob-netsuite-proservices-15622200008gc42 to staging-cluster-default-pool-4b4827bf-rpnl
23m         Normal    Pulling            Pod       pulling image "gcr.io/my-repo/myimage:v8"
23m         Normal    Pulled             Pod       Successfully pulled image "gcr.io/my-repo/my-image:v8"
23m         Normal    Created            Pod       Created container
23m         Normal    Started            Pod       Started container
22m         Normal    Killing            Pod       Killing container with id docker://virulent-angelfish-cronjob:Need to kill Pod
23m         Normal    SuccessfulCreate   CronJob   Created job virulent-angelfish-cronjob-netsuite-proservices-1562220000
22m         Normal    SawCompletedJob    CronJob   Saw completed job: virulent-angelfish-cronjob-netsuite-proservices-1562220000

所以至少要进行一次CJ奔跑。

我想看豆荚的日志,但是那里什么也没有

➣ $ kubectl get pods
No resources found.

鉴于在我的cj定义中,我有:

failedJobsHistoryLimit: 1
successfulJobsHistoryLimit: 3

我不应该至少有一个吊舱供我进行取证吗?

2 个答案:

答案 0 :(得分:0)

您可以使用--previous标志获取上一个容器的日志。

因此,您可以使用:

kubectl logs --previous virulent-angelfish-cronjob-netsuite-proservices-15622200008gc42

获取该容器之前的容器的日志。

答案 1 :(得分:0)

您的广告连拍崩溃或不健康

首先,查看当前容器的日志:

kubectl logs ${POD_NAME} ${CONTAINER_NAME}

如果您的容器以前曾崩溃过,则可以通过以下方式访问先前容器的崩溃日志:

kubectl logs --previous ${POD_NAME} ${CONTAINER_NAME}

或者,您可以使用exec在该容器内运行命令:

kubectl exec ${POD_NAME} -c ${CONTAINER_NAME} -- ${CMD} ${ARG1} ${ARG2} ... ${ARGN}

注意:-c ${CONTAINER_NAME}是可选的。您可以为仅包含一个容器的Pod忽略它。

例如,要查看正在运行的Cassandra窗格中的日志,可以运行:

kubectl exec cassandra -- cat /var/log/cassandra/system.log

如果这些方法都不起作用,则可以找到运行Pod的主机并通过SSH进入该主机。

最后,选中“登录Google StackDriver”。

调试豆荚

调试Pod的第一步就是看一下它。使用以下命令检查窗格的当前状态和最近的事件:

kubectl describe pods ${POD_NAME}

查看容器中容器的状态。他们都在跑步吗?最近有重启吗?

根据Pod的状态继续调试。

调试ReplicationControllers

ReplicationControllers非常简单。他们可以创建广告连播,也可以不创建。如果他们无法创建Pod,请参考上面的说明调试Pod。

您还可以使用kubectl describe rc ${CONTROLLER_NAME}检查与复制控制器有关的事件。

希望它可以帮助您找到确切的问题。