gpt4 book ai didi

elasticsearch - 如何诊断 k8s pod 不断重启的原因?

转载 作者:行者123 更新时间:2023-12-05 01:32:28 25 4
gpt4 key购买 nike

我使用以下配置文件将 elasticsearch 部署到 minikube:

apiVersion: apps/v1
kind: Deployment
metadata:
name: elasticsearch
spec:
replicas: 1
selector:
matchLabels:
name: elasticsearch
template:
metadata:
labels:
name: elasticsearch
spec:
containers:
- name: elasticsearch
image: elasticsearch:7.10.1
ports:
- containerPort: 9200
- containerPort: 9300

我运行命令 kubectl apply -f es.yml 来部署 elasticsearch 集群。

$ kubectl get pod
NAME READY STATUS RESTARTS AGE
elasticsearch-fb9b44948-bchh2 1/1 Running 5 6m23s

elasticsearch pod 每隔几分钟就会重新启动一次。当我运行 kubectl describe pod 命令时,我可以看到这些事件:

Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 7m11s default-scheduler Successfully assigned default/elasticsearch-fb9b44948-bchh2 to minikube
Normal Pulled 3m18s (x5 over 7m11s) kubelet Container image "elasticsearch:7.10.1" already present on machine
Normal Created 3m18s (x5 over 7m11s) kubelet Created container elasticsearch
Normal Started 3m18s (x5 over 7m10s) kubelet Started container elasticsearch
Warning BackOff 103s (x11 over 5m56s) kubelet Back-off restarting failed container

最后一个事件是Back-off restarting failed 但我不知道为什么它会重启 pod。有什么方法可以检查为什么它不断重启?

最佳答案

您已经完成了第一步 ( kubectl describe pod)。作为下一步,我建议检查容器日志:kubectl logs <pod_name> .在这种情况下,99% 您可以从日志中找到原因(我打赌 bootstrap check 失败)。

当两者都不是describe pod日志也没有关于错误的任何信息,我使用“exec”进入容器:kubectl exec -it <pod_name> -c <container_name> sh .有了这个,您将在容器内获得一个 shell(当然,如果其中有一个 shell 二进制文件),您可以使用它手动调查问题。请注意,要使失败的容器保持事件状态,您可能需要更改 commandargs像这样:

command:
- /bin/sh
- -c
args:
- cat /dev/stdout

确保在执行此操作时禁用探测器。如果 liveness 探测失败,容器可能会重新启动,您将在 kubectl describe pod 中看到如果它发生了。由于您的代码段未指定任何探测,因此您可以跳过此部分。

关于elasticsearch - 如何诊断 k8s pod 不断重启的原因?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65476706/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com