k8s 的 kube-apiserver 异常退出,怎么排查

2023-03-08 15:09:13 +08:00
 proxytoworld

k8s 的 apiserver 监听在 6443 端口,现在 kubeadm init 之后,会自己退出,不知道为什么,有什么办法能排查退出原因吗

2006 次点击
所在节点    Kubernetes
12 条回复
hwdef
2023-03-08 15:11:00 +08:00
通过 docker 看 apiserver 的日志
proxytoworld
2023-03-08 15:14:05 +08:00
@hwdef k8s 默认运行时不是 containerd 吗,docker 也可以看日志?
JQ
2023-03-08 15:21:11 +08:00
试试 crictl logs
keenking
2023-03-08 15:33:19 +08:00
当您运行 kubeadm init 后,它会启动 Kubernetes 集群的各个组件,并在启动完毕后自动退出。如果 kubeadm init 无法启动 Kubernetes 组件,则它可能会在启动过程中退出。

要查看 kubeadm init 为什么会退出,您可以查看其输出以查找任何错误或警告消息。您还可以检查 Kubernetes 组件的日志以查看是否存在任何问题。在大多数情况下,kubelet 、kube-proxy 、apiserver 、controller-manager 和 scheduler 日志应该能够提供有关出现问题的原因的线索。

以下是一些可能会导致 kubeadm init 失败的常见问题:

6443 端口已被占用:请确保没有其他进程在使用 6443 端口。
配置文件中的错误:请检查 kubeadm init 命令中的配置文件是否正确,特别是与网络配置相关的部分。
镜像拉取问题:请确保您的节点可以从 Kubernetes 镜像仓库中拉取所需的镜像。可以尝试手动拉取这些镜像并查看是否存在问题。
没有足够的资源:请确保您的节点具有足够的资源(例如 CPU 、内存和磁盘空间)来运行 Kubernetes 组件。
如果您无法确定问题的原因,请考虑在 kubeadm init 命令中使用 --v=10 标志以获取更详细的日志信息。您还可以在运行 kubeadm init 命令时添加 --dry-run 标志以模拟初始化过程,以便检查配置文件是否正确。
nixum
2023-03-08 15:34:30 +08:00
kube logs 和 describe 看看有没有什么有价值的信息
Frankcox
2023-03-08 15:36:28 +08:00
登录到 master 上 journalctl -u kube-apiserver
JQ
2023-03-08 15:40:46 +08:00
出现 kube-apiserver 异常退出可能是由多种原因引起的,以下是一些可能的排查步骤:

1. 查看日志:kube-apiserver 的日志信息保存在 /var/log/messages 中,可以使用以下命令查看:

```
$ sudo journalctl -u kube-apiserver.service
```

2. 检查 kube-apiserver 的配置:检查 kube-apiserver 的配置文件是否正确,并确保其与其他组件的配置相匹配。

3. 检查资源使用情况:kube-apiserver 作为集群控制平面的一部分,可能因为资源不足导致其异常退出,可以使用以下命令检查资源使用情况:

```
$ top
$ kubectl top node
$ kubectl top pod
```

4. 检查 kube-apiserver 的状态:可以使用以下命令检查 kube-apiserver 的运行状态:

```
$ kubectl get componentstatuses
```

5. 升级版本:kube-apiserver 的异常退出可能是由于版本不兼容等原因造成的,可以考虑升级其版本。升级可以使用 kubeadm upgrade 等方式进行。

6. 重新启动 kube-apiserver:可以尝试重新启动 kube-apiserver 服务以解决问题:

```
$ sudo systemctl restart kube-apiserver.service
```

以上是一些可能的排查步骤,具体排查方法需要根据实际情况进行分析和调整。
hwdef
2023-03-08 16:52:21 +08:00
@proxytoworld 忘记了。。那就在 containerd 看看日志。。
bbbb
2023-03-08 17:01:30 +08:00
我之前遇到的一个情况:coredns 一直都是 Containercreating 状况没发现,导致部署的时候一直失败,后面看用 describe 看到是连接出现问题,查了资料,加上:`--pod-network-cidr`整体就没错了。
``kubeadm init \
--image-repository registry.aliyuncs.com/google_containers \
--apiserver-advertise-address 172.16.85.158 \
--pod-network-cidr=10.122.0.0/16 \
--token-ttl 0
```
nixum
2023-03-08 17:28:18 +08:00
@nixum 尴尬了,没注意看是 kube-apiserver 有问题。。。那上 kube-apiserver 那台机器看看对应容器日志
proxytoworld
2023-03-09 10:54:20 +08:00
@bbbb 感谢,我加了这个也没错了
redsun368573607
2023-03-09 21:44:09 +08:00
@JQ 你这 ChatGPT 生成的吧

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/922261

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX