我是Kubernetes的新手,正在努力学习,但我遇到了一个无法解释的错误。我在集群中运行Pod和Deployment,它们运行得很好,如CLI所示,但过了一段时间后,它们一直崩溃,Pod需要重新启动。
在这里发帖之前,我做了一些研究来解决我的问题,但根据我的理解,我必须进行部署,这样我的replicaSets才能管理我的Pod生命周期,而不是独立部署Pod。但正如您所看到的,部署中的Pod也正在崩溃。
kubectl获取pod
operator-5bf8c8484c-fcmnp 0/1 CrashLoopBackOff 9 34m
operator-5bf8c8484c-phptp 0/1 CrashLoopBackOff 9 34m
operator-5bf8c8484c-wh7hm 0/1 CrashLoopBackOff 9 34m
operator-pod 0/1 CrashLoopBackOff 12 49mkubectl describe pods运算符
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled <unknown> default-scheduler Successfully assigned default/operator-pod to workernode
Normal Created 30m (x5 over 34m) kubelet, workernode Created container operator-pod
Normal Started 30m (x5 over 34m) kubelet, workernode Started container operator-pod
Normal Pulled 29m (x6 over 34m) kubelet, workernode Container image "operator-api_1:java" already present on machine
Warning BackOff 4m5s (x101 over 33m) kubelet, workernode Back-off restarting failed container部署yaml文件:
apiVersion: apps/v1
kind: Deployment
metadata:
name: operator
labels:
app: java
spec:
replicas: 3
selector:
matchLabels:
app: call
template:
metadata:
labels:
app: call
spec:
containers:
- name: operatorapi
image: operator-api_1:java
ports:
- containerPort: 80有没有人能帮我,我怎么调试?
发布于 2020-07-06 22:34:07
原因很可能是运行在容器中的进程完成了任务,并在一段时间后被容器操作系统终止。然后,kubelet正在重新启动pod。
我建议你解决这个问题,请检查容器中正在运行的进程,并尽量让它永远存活。您可以在container中创建一个循环来运行此进程,也可以在deployment.yaml上对container使用一些命令
这里是您了解和调试pod失败原因的参考。https://kubernetes.io/docs/tasks/debug-application-cluster/determine-reason-pod-failure/
发布于 2020-07-06 22:47:27
有几种方法可以调试这样的场景,我建议您查看Kubernetes文档以了解最佳实践。我通常使用以下两种方法取得成功:
kubectl logs -l app=java如果该pod中有多个容器,则可以对其进行过滤:
kubectl logs -l app=java -c operatorapikubectl get events --sort-by='.metadata.creationTimestamp'请随意分享这两个文件的输出,我可以帮助您进一步调试。
https://stackoverflow.com/questions/62757691
复制相似问题