k8s基本问题排查

2023-10-26

排查pod故障

#查看pod是否正常
kubectl get pods -n fronted
#常见pod排查命令
kubectl logs <pod name> 有助于检索 Pod 中容器的日志
kubectl describe pod <pod name>  对检索与 Pod 相关的事件列表很有用
kubectl get pod <pod name>  -o yaml 可提取 Kubernetes 中存储的 Pod 的 YAML 定义;
kubectl exec -ti <pod name> bash 可在 Pod 中的一个容器运行一个交互式命令
#常见错误
##启动时的错误包括:
ImagePullBackoff
ImageInspectError
ErrImagePull
ErrImageNeverPull
RegistryUnavailable
InvalidImageName
##运行中的错误包括:
CrashLoopBackOff
RunContainerError
KillContainerError
VerifyNonRootError
RunInitContainerError
CreatePodSandboxError
ConfigPodSandboxError
KillPodSandboxError
SetupNetworkError
TeardownNetworkError

#常见错误原因
#ImagePullBackOff  镜像拉取错误(无效的镜像,指定了不存在标签,registry凭据)
kubectl create secret docker-registry harbor-pull-secret-188-dev --docker-server=http://harbor.wuliuhub.com --docker-username=admin --docker-password=Harbor12345 -n ms

#CrashLoopBackOff  (应用程序中存在错误,容器配置错误,liveness探针失败)
kubectl logs podname --previous  (如果容器启动太快,打印前一个容器信息)
#RunContainerError(1.查看是否有不存在的卷,如configmap,secret 2.将只读挂在为读写) ---> kubectl describe pod <pod-name> 命令检查和分析这个错误
#pending状态  (1.没有足够的资源调度失败 2.当前命名空间具有ResourceQuota 对象,创建 Pod 将使命名空间超过配额  3.绑定了一个处于pending状态的pvc)
kubectl get events --sort-by=.metadata.creationTimestamp #如果ResouceQuota不足
#pod处于未就绪状态(“就绪”探针失败时,则 Pod 未连接到服务,并且没有流量转发到该实例)

排查service故障

#如果pod已经就绪,忍让无法收到程序响应,则查看service是否正确.
#Service 会根据 Pod 的标签将流量路由到 Pod。因此,应该先检查 Service 定位了多少个 Pod,检查service对应的endpoint
[root@k8s-master-01 ~]# kubectl  describe svc serviceName -n 空间名称
Name:              h5sdk
Namespace:         fronted
Labels:            <none>
Annotations:       kubectl.kubernetes.io/last-applied-configuration:
                     {"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"name":"h5sdk","namespace":"fronted"},"spec":{"ports":[{"port":80,"target...
Selector:          app=h5sdk
Type:              ClusterIP
IP:                10.1.103.142
Port:              <unset>  80/TCP
TargetPort:        80/TCP
Endpoints:         10.244.3.180:80,10.244.3.181:80,10.244.4.110:80
Session Affinity:  None
Events:            <none>

#加入endpoint为空
1.pod没有正确的标签是否在正确的命名空间
2.service的selector标签错误
#如果不为空,则看下targetPort是否错误
kubectl port-forward service/php-fpm 9000:9000 -n lnmp
[root@k8s-master-01 ~]# kubectl port-forward service/h5sdk 3000:80 -n fronted  (3000是你想在计算机上打开的端口,80是service暴露端口)
Forwarding from 127.0.0.1:3000 -> 80
Forwarding from [::1]:3000 -> 80

ingress故障排查

#1.0如果到这个地方,那就意味着pod运行正常且service可以正常分发流量到pod,开始排查ingress故障
[root@k8s-master-01 ~]# kubectl  describe ingress h5sdk -n fronted
Name:             h5sdk
Namespace:        fronted
Address:          
Default backend:  default-http-backend:80 (<none>)
Rules:
  Host                Path  Backends
  ----                ----  --------
  h5game.xxxx.com  
                      /   h5sdk:80 (10.244.3.180:80,10.244.3.181:80,10.244.4.110:80)
Annotations:
  kubectl.kubernetes.io/last-applied-configuration:  {"apiVersion":"networking.k8s.io/v1beta1","kind":"Ingress","metadata":{"annotations":{},"name":"h5sdk","namespace":"fronted"},"spec":{"rules":[{"host":"h5game.xxx.com","http":{"paths":[{"backend":{"serviceName":"h5sdk","servicePort":80},"path":"/"}]}}]}}

Events:  <none>

#2.0如果ingress能够看到endpoint,仍然无法使用 (1.将ingress暴露到公网的方式  2.将集群暴露到公网的方式)
#2.1检索ingress端口
[root@k8s-master-01 ~]# kubectl  get pods -n ingress-nginx
NAME                             READY   STATUS    RESTARTS   AGE
nginx-ingress-controller-24m74   1/1     Running   0          20d
nginx-ingress-controller-qtgjw   1/1     Running   1          156d
nginx-ingress-controller-wldp7   1/1     Running   1          156d

[root@k8s-master-01 new2]# kubectl  describe pod ingress-nginx-controller-gdck8 -n ingress-nginx|grep Ports
    Ports:         80/TCP, 443/TCP, 8443/TCP
    Host Ports:    0/TCP, 0/TCP, 0/TCP
    
#2.2如果还没有解决,则可以查看ingress controller日志 

查看已存在的secret

kubectl get secret -n namespace

secret查看具体条目的key

kubectl describe secret mysql-pass -n namespace

查看具体的value

kubectl edit secret mysql-pass -n namespace

# 然后进行base64反编码
echo -n 编码的内容 | base64 --decode

获取deployment

kubectl get deployment

滚动重启

kubectl restart deployment deployment-name -n 命令空间
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

k8s基本问题排查 的相关文章

随机推荐

  • [17]AWK记录、字段、模式、跨平台移植及正则表达式

    一 记录与字段 1 记录分隔符 默认行输入和输出的分隔符都是回车 保存在RS和ORS内部变量中 变量 0 awk每次一行取得整条记录 0随之改变 同时内部变量NF 字段的总数 也随之变化 变量NR 每条记录的行号 处理完一行将会加1 所以全
  • InnoDB undo log解析(二)

    在 上一篇中已经介绍了InnoDB undo log的组织结构 并通过一个示例并结合InnoSQL来分析insert undo log记录格式 本篇中介绍update undo log的记录格式 update undo log有以下三种类型
  • cocoeval 解析

    1 COCO目标检测比赛中的模型评价指标介绍 dulingwen的博客 CSDN博客 2 COCO目标检测测评指标 简书 1 Params类 对于COCO格式的数据检测 我们主要分为不同的IoU阈值 不同的面积范围 单张图片的最大检测数量
  • PAT 5 猴子吃桃问题(递归)

    猴子吃桃问题 15 分 一只猴子第一天摘下若干个桃子 当即吃了一半 还不过瘾 又多吃了一个 第二天早上又将剩下的桃子吃掉一半 又多吃了一个 以后每天早上都吃了前一天剩下的一半加一个 到第N天早上想再吃时 见只剩下一个桃子了 问 第一天共摘了
  • Nuxt 项目引入外部Js的正确姿势 ,问题描述:打包构建之后引入的外部 js失效,构建之后的 .nuxt 文件夹下的js文件中,引入 js 的script标签凭空消失!

    首先先说我遇到的问题描述 我是用vue nuxt项目 项目中使用了阿里播放器 于是我在vue页面中直接引入了阿里播放器的 css和js文件 然后运行没有任何问题 如下图所示 但是 当我打包以后 发现这个页面竟然报错 我打开 打包好的 nux
  • Debugger problem "The breakpoint will not currently be hit. No symbols have been loaded for this doc...

    网上收集到的相关解决办法 1st Start debugging Now select Debug gt Windows gt Modules In the modules window taht now appears check wha
  • 解决Windows缺少d3dcompiler_37.dll文件

    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题 如果是新手第一时间会认为是软件或游戏出错了 其实并不是这样 其主要原因就是你电脑系统的该dll文件丢失了或者损坏了 这时你只需下载这个d3dcompiler 37 dll文件进行安装
  • VSCode选择远程服务器的虚拟环境

    方式一 选择服务器虚拟环境conda Ctrl Shift P 选择需要使用的虚拟环境即可 方式二 选择Terminal 点击 通过命令行切换即可 参考 Work on Python in VSCode remotely over ssh
  • 不就是G2O嘛

    从零开始一起学习SLAM 理解图优化 一步步带你看懂g2o代码 SLAM的后端一般分为两种处理方法 一种是以扩展卡尔曼滤波 EKF 为代表的滤波方法 一种是以图优化为代表的非线性优化方法 不过 目前SLAM研究的主流热点几乎都是基于图优化的
  • jmeter压测实战包括cpu性能检测

    1 录制测试计划 1 打开jmeter 创建测试计划 线程组 sampler HTTP请求 监听器 查看结果树 聚合报告 2 服务器参数端口做了个参数化管理 3 对于请求数据也做一个参数化管理 4 最后运用参数化思想传参 HTTP请求 填写
  • Java程序设计——注解(Java高级应用)

    目录 一 基本注解 1 Override注解 2 Deprecated注解 3 SuppressWarnings注解 4 SafeVarargs注解 5 FunctionalInterface注解 二 定义注解 三 使用注解 四 元注解 1
  • 简单的实现页面点击切换(非路由方式)

    html import React Component from react class index extends Component constructor props super props this state curr zero
  • org.springframework.cloud:spring-cloud-starter-eureka :unknown 报错解决;

    Spring Cloud Eureka是对Netflix Eureka的二次封装 Eureka服务端 Eureka就是注册中心 同时它也是一个客户端 Eureka server Eureka服务端 同是也是Eureka Client Eur
  • CSS技巧

    CSS技巧 背景图片居中 background size cover 图片可能会被拉伸 background position center 图片尺寸不变 只是移动至正中间 button的边框 一般浏览器会给button默认边框 borde
  • 网页上ajax异步加载数据,网页的异步请求(Ajax)

    JS原生Ajax操作 XMLHttpRequest GET请求 var xmld new XMLHttpRequest xmld open GET wan php dd1 dong11 dd2 dong22 打开页面 xmld setReq
  • 如何成为优秀的管理者?(摘自《代码之道》第9章)

    婚礼 旅行和管理者之间有什么共同之处吗 跟任何一个成年人谈论这些话题 你肯定会听到一个可怕的故事 在婚礼上 那是关于喝醉的客人 糟糕的天气或者不合时宜的失言 在旅行过程中 那是关于丢失的行李 混乱的乘客或者慌乱的转机 至于管理者 那是关于你
  • Redis缓存击穿、雪崩、穿透!(超详细)

    缓存的击穿 穿透和雪崩应该是再熟悉不过的词了 也是面试常问的高频试题 不过 对于这三大缓存的问题 有很多人背过了解决方案 却少有人能把思路给理清的 而且 网络上仍然充斥着 大量不太靠谱的解决方案 难免误人子弟 我的这篇文章 则会对这三大缓存
  • mobaxterm的linux安装教程,MobaXterm详尽使用教程系列一

    常用SSH客户端介绍 SSH 为 Secure Shell 的简写 是目前较可靠 专为远程登入会话和其他网路服务提供安全性的合同 利用 SSH 协议可以有效避免远程管理过程中的信息泄漏问题 我们做估算的人 每天都须要与linux服务器打交道
  • html元素data属性设置变量,在VUE style中运用data中的变量的要领详解_WEB前端开发...

    近来项目中的大众组件 在复用的时刻 针对差别的场景 须要不停变动CSS里款式的值 而且已经有了全局的大众组件款式了 假如用vue传统的动态绑定class和style的体式格局去修正款式 文末会提到 须要分外写许多变量和模块class 那假如
  • k8s基本问题排查

    排查pod故障 查看pod是否正常 kubectl get pods n fronted 常见pod排查命令 kubectl logs