gpt4 book ai didi

amazon-web-services - Kubernetes:集群运行但对更改无响应,无法检索日志

转载 作者:行者123 更新时间:2023-12-02 12:10:43 25 4
gpt4 key购买 nike

我有一个运行 k8s 版本的现有集群 1.12.8在 AWS EC2 上。集群包含几个 Pod - 一些提供 Web 流量,另一些配置为计划的 CronJobs。集群在当前配置下运行良好至少 6 个月,CronJobs 每 5 分钟运行一次。
最近,CronJobs 干脆停止了。通过 kubectl 查看 pod显示所有计划的 CronJobs 上次运行大致在同一时间。发送到 AWS Cloudwatch 的日志显示没有错误输出,同时停止 kubectl显示最后一次运行。
在尝试诊断此问题时,我发现集群对更改无响应的更广泛模式,例如:我无法通过 kubectl 检索日志或节点。
我删除了副本集中的 Pod,它们再也没有回来。我已经在副本集上设置了自动缩放值,但没有任何 react 。
调查kubelet主实例上的日志显示重复错误,与第一次发现故障的时间一致:

I0805 03:17:54.597295 2730 kubelet.go:1928] SyncLoop (PLEG): "kube-scheduler-ip-x-x-x-x.z-west-y.compute.internal_kube-system(181xxyyzz)", event: &pleg.PodLifecycleEvent{ID:"181xxyyzz", Type:"ContainerDied", Data:"405ayyzzz"}
...
E0805 03:18:10.867737 2730 kubelet_node_status.go:378] Error updating node status, will retry: failed to patch status "{\"status\":{\"$setElementOrder/conditions\":[{\"type\":\"NetworkUnavailable\"},{\"type\":\"OutOfDisk\"},{\"type\":\"MemoryPressure\"},{\"type\":\"DiskPressure\"},{\"type\":\"PIDPressure\"},{\"type\":\"Ready\"}],"conditions\":[{\"lastHeartbeatTime\":\"2020-08-05T03:18:00Z\",\"type\":\"OutOfDisk\"},{\"lastHeartbeatTime\":\"2020-08-05T03:18:00Z\",\"type\":\"MemoryPressure\"},{\"lastHeartbeatTime\":\"2020-08-05T03:18:00Z\",\"type\":\"DiskPressure\"},{\"lastHeartbeatTime\":\"2020-08-05T03:18:00Z\",\"type\":\"PIDPressure\"},{\"lastHeartbeatTime\":\"2020-08-05T03:18:00Z\",\"type\":\"Ready\"}]}}" for node "ip-172-20-60-88.eu-west-2.compute.internal": Patch https://127.0.0.1/api/v1/nodes/ip-x-x-x-x.z-west-y.compute.internal/status?timeout=10s: context deadline exceeded (Client.Timeout exceeded while awaiting headers)
...
E0805 03:18:20.869436 2730 kubelet_node_status.go:378] Error updating node status, will retry: error getting node "ip-172-20-60-88.eu-west-2.compute.internal": Get https://127.0.0.1/api/v1/nodes/ip-172-20-60-88.eu-west-2.compute.internal?timeout=10s: context deadline exceeded (Client.Timeout exceeded while awaiting headers)
运行 docker ps在主节点上显示 k8s_kube-controller-manager_kube-controller-managerk8s_kube-scheduler_kube-scheduler容器是在 6 天前启动的,而其他 k8s 容器的启动时间是 8 个月以上。
tl;博士
我的主节点上的一个容器(可能是 kube-schedulerkube-controller-manager 或两者兼有)死了。容器已恢复但无法与现有节点通信 - 这会阻止任何计划的 CronJobs 或新部署得到满足。
如何在主节点上重新配置 kubelet 和相关服务以再次与工作节点通信?

最佳答案

来自 Troubleshoot Clusters 上的文档
深入挖掘集群需要登录相关机器。以下是相关日志文件的位置。 (请注意,在基于 systemd 的系统上,您可能需要使用 journalctl 来代替)
主节点 /var/log/kube-apiserver.log - API Server,负责服务API/var/log/kube-scheduler.log - 调度器,负责制定调度决策/var/log/kube-controller-manager.log - 管理复制 Controller 的 Controller
工作节点 /var/log/kubelet.log - Kubelet,负责在节点上运行容器/var/log/kube-proxy.log - Kube Proxy,负责服务负载均衡
另一种获取日志的方法是使用 docker ps获取 containerid然后使用 docker logs containerid如果您有(您应该)使用 prometheus 和 Grafana 设置监控系统,您可以检查 API Server pod 上的高 cpu 负载等指标

关于amazon-web-services - Kubernetes:集群运行但对更改无响应,无法检索日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63358844/

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