首页 > 其他分享 >kubernetes集群故障排查的几种方法

kubernetes集群故障排查的几种方法

时间:2024-02-07 12:33:07浏览次数:22  
标签:kubectl master231 kubernetes get 排查 集群 pod root Pod

1.kubectl describe

查看资源的详细信息,根据事件信息获取当前资源的状态,从而给出解决方案。
[root@master231 pod]# kubectl get pods
NAME                        READY   STATUS    RESTARTS   AGE
image-resources-stress-04   0/1     Pending   0          2m13s
[root@master231 pod]# 

	三种查看方式:
[root@master231 pod]# kubectl describe -f 06-pods-resources.yaml 
[root@master231 pod]# kubectl describe pod image-resources-stress-04 
[root@master231 pod]# kubectl describe pod/image-resources-stress-04 
...
Events:
  Type     Reason            Age                  From               Message
  ----     ------            ----                 ----               -------
  Warning  FailedScheduling  24s (x3 over 2m32s)  default-scheduler  0/3 nodes are available: 1 node(s) had taint {node-role.kubernetes.io/master: }, that the pod didn't tolerate, 2 Insufficient memory.
[root@master231 pod]# 





[root@master231 pod]# kubectl get pods -o wide
NAME                        READY   STATUS    RESTARTS   AGE   IP       NODE      NOMINATED NODE   READINESS GATES
image-resources-stress-04   0/1     Pending   0          23s   <none>   work232   <none>           <none>
[root@master231 pod]# 
[root@master231 pod]# kubectl describe pod image-resources-stress-04 
Name:         image-resources-stress-04
Namespace:    default
Priority:     0
# 观察当前的Node字段名称,和"kubectl get nodes "的NAME是否相同。
Node:         work232/
Labels:       <none>
Annotations:  <none>
Status:       Pending
....
# 如下所示,没有发现时间,此时可能是调度的节点不存在,请对比Node名称是否正确。
Events:                      <none>
[root@master231 pod]# 
[root@master231 pod]# kubectl get pods -o wide
NAME                        READY   STATUS    RESTARTS   AGE   IP       NODE      NOMINATED NODE   READINESS GATES
image-resources-stress-04   0/1     Pending   0          27s   <none>   work232   <none>           <none>
[root@master231 pod]# 
[root@master231 pod]# 
[root@master231 pod]# kubectl get nodes 
NAME        STATUS   ROLES                  AGE   VERSION
master231   Ready    control-plane,master   26h   v1.23.17
worker232   Ready    <none>                 26h   v1.23.17
worker233   Ready    <none>                 26h   v1.23.17
[root@master231 pod]# 

2.kubectl logs


kubectl logs <pod-name> -c <container-name>

将`<pod-name>`替换为要查看其日志的Pod的实际名称,并选择性地将`<container-name>`替换为要查看其日志的特定容器的名称(如果Pod中有多个容器)。

假设有一个名为`my-pod`的Pod,其中包含一个名为`my-container`的容器,可以使用以下命令查看该容器的日志:

kubectl logs my-pod -c my-container

3.kubectl exec

[root@master231 pod]#kubectl exec --help

连接到指定容器查看
[root@master231 pod]# kubectl get pods
NAME           READY   STATUS    RESTARTS   AGE
linux-web    1/1     Running   0          102s
linux-wp   2/2     Running   0          50s
[root@master231 pod]# 
[root@master231 pod]# kubectl exec -it linux-web -- sh  # 当一个Pod内只有一个容器时,无需使用-c选项。


[root@master231 pod]# kubectl exec -it linux-wp -c wp -- bash  # 当Pod内有多个容器时,可以使用-c选项连接到指定的容器。若不指定,默认连接到第一个容器。

4.kubectl get

kubectl get命令用于获取Kubernetes集群中的资源信息。通过该命令,可以列出各种资源的状态、名称、标签和其他详细信息。要使用kubectl get命令,需要指定要获取的资源类型。

1. 列出所有Pods:
kubectl get pods

2. 列出所有Services:
kubectl get services

3. 列出所有Deployments:
kubectl get deployments

4. 列出所有Nodes:
kubectl get nodes

还可以通过添加选项来进一步筛选和查看资源。例如使用`-n`选项指定命名空间,或使用`-l`选项按标签进行过滤。

5.kubectl cp

kubectl cp命令用于在本地计算机和Kubernetes Pod之间复制文件或目录。这个命令很有用,可以轻松地从Pod中复制文件到本地计算机,或者将本地文件复制到Pod中。

以下是kubectl cp命令的基本语法:
kubectl cp <source> <destination>

- `<source>` 是源路径,可以是本地文件或目录,也可以是Pod中的文件或目录。
- `<destination>` 是目标路径,指定要将文件或目录复制到哪里,同样可以是本地文件或目录,也可以是Pod中的文件或目录。


1. 从Pod中复制文件到本地计算机:
kubectl cp <namespace>/<pod-name>:<path/to/file> <local/destination/path>

2. 将本地文件复制到Pod中:
kubectl cp <local/source/path> <namespace>/<pod-name>:<path/inside/pod>

标签:kubectl,master231,kubernetes,get,排查,集群,pod,root,Pod
From: https://www.cnblogs.com/liuzhonghua1/p/18010824

相关文章

  • 使用kubeadm部署kubernetes1.23(学习使用)
    注释:此次操作使用VMwareWorkstationPro17虚拟机进行本次使用单master节点,双worker节点组成的最小化单主节点的学习环境1.K8S所有节点环境准备xshell发送所用会话,包括harbor仓库虚拟机操作系统环境准备参考链接:https://kubernetes.io/zh/docs/setup/production-environmen......
  • 使用 Etcd 快照文件恢复 Etcd 数据:应对单节点及高可用集群情况
    1、概述在Kubernetes集群中,所有操作的资源数据都存储在Etcd数据库上。为了确保在节点故障、集群迁移或其他异常情况下能够尽快恢复集群数据,我们需要定期对Etcd数据进行容灾备份操作。在Kubernetes集群中,可以非常方便的针对Etcd数据进行备份,通常,只需在一个节点......
  • liunx环境下部署JMeter压测集群
    一、java环境安装与配置官网下载jdk-15.0.1_linux-x64_bin.tar.gz,上传到liunx服务器(官网跳转)解压文件:tar-xzfjdk-15.0.1_linux-x64_bin.tar.gz,生成文件夹jdk-15.0.1在/usr/目录下创建java文件夹,将jdk-15.0.1移动到java文件夹下注意:移动文件夹需要处于文件存在位......
  • 在K8S中,集群相关组件有哪些?
    在Kubernetes(K8s)中,集群相关的组件主要分为两类:控制平面组件和节点组件。控制平面组件(MasterComponents):kube-apiserver:它是整个系统的入口,提供RESTfulAPI接口供用户和内部组件与集群进行交互。所有资源的增删改查操作都通过它来完成,并将状态持久化存储在etcd中。etcd......
  • nginx+keepalived组成高可用集群
    注意:用keepalived将多台nginx组成高可用集群时,nginx不能用docker启动1下载keepalived:yum-yinstallkeepalived2查看网卡:ipaddr,有eth0,en33这种的就是网卡名,inet后面是ip地址,一个网卡还可以绑定多个ip地址,比如给eth0网卡添加192.168.0.150ip命令:ipaddradd192.168......
  • kubelet 组件内存高排查方法
    1、查看服务进程,并跟踪程序系统调用pgrep kubelet#查看资源占用情况top-p 95786strace-cp95786#显示时间戳strace-tt-p95786 2、用pprof性能分析工具排查#安装go环境#启动代理kubectlproxy--port=8001--address=0.0.0.0curl-sK-vhttp://127.0.0.1:8001/......
  • 服务器-Kubernetes (K8S)单机部署实战 -- 001
       本篇博文是centos7系统安装kubernetes单机master节点操作。一:查看服务器配置信息   1.执行命令查看服务器cpu信息。安装kubernetes服务,cpu核心数必须大于2,内存大于2G。lscpu   2. 修改服务器设置信息,避免安装出现问题。    a.......
  • prometheus监控告警多个es集群
    exporter安装   分别在两个集群中的任一节点安装elasticsearch_exporter   节点1安装     nohup./elasticsearch_exporter--es.all--es.indices--es.cluster_settings--es.indices_settings--es.shards--es.snapshots--es.timeout=10s--web.list......
  • Kubernetes 服务类型详解
    Kubernetes服务类型详解如今,Kubernetes已成为管理和扩展云原生应用程序的强大工具。组织需要利用高度可扩展且始终可用的功能来保持零停机时间,快速部署他们的软件。随着越来越多的应用程序被容器化和部署,容器的管理也变得越来越复杂。因此,软件的扩展成为一个问题,而这正是Kuber......
  • rancher中的集群删除不掉
    1.在rancher中查看集群的yaml找到对应的集群id 2.在安装rancher的服务器上查看接入的集群idkubectlgetclusters.management.cattle.io然后找到相应的集群id编辑yamlkubectleditclusters.management.cattle.ioc-vr87h在编辑模式下删除finalizers下的内容,将finalizers......