V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
proxytoworld
V2EX  ›  Kubernetes

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

  •  
  •   proxytoworld · 2023-03-08 15:09:13 +08:00 · 1972 次点击
    这是一个创建于 618 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    12 条回复    2023-03-09 21:44:09 +08:00
    hwdef
        1
    hwdef  
       2023-03-08 15:11:00 +08:00
    通过 docker 看 apiserver 的日志
    proxytoworld
        2
    proxytoworld  
    OP
       2023-03-08 15:14:05 +08:00
    @hwdef k8s 默认运行时不是 containerd 吗,docker 也可以看日志?
    JQ
        3
    JQ  
       2023-03-08 15:21:11 +08:00
    试试 crictl logs
    keenking
        4
    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
        5
    nixum  
       2023-03-08 15:34:30 +08:00
    kube logs 和 describe 看看有没有什么有价值的信息
    Frankcox
        6
    Frankcox  
       2023-03-08 15:36:28 +08:00
    登录到 master 上 journalctl -u kube-apiserver
    JQ
        7
    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
        8
    hwdef  
       2023-03-08 16:52:21 +08:00
    @proxytoworld 忘记了。。那就在 containerd 看看日志。。
    bbbb
        9
    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
        10
    nixum  
       2023-03-08 17:28:18 +08:00
    @nixum 尴尬了,没注意看是 kube-apiserver 有问题。。。那上 kube-apiserver 那台机器看看对应容器日志
    proxytoworld
        11
    proxytoworld  
    OP
       2023-03-09 10:54:20 +08:00
    @bbbb 感谢,我加了这个也没错了
    redsun368573607
        12
    redsun368573607  
       2023-03-09 21:44:09 +08:00 via Android
    @JQ 你这 ChatGPT 生成的吧
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2551 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 15:48 · PVG 23:48 · LAX 07:48 · JFK 10:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.