Kubernetes 常见问题排查与解决方案!(纯干货)

毫无疑问,Kubernetes 是个伟大的开源作品,给作者所在团队中极大地提高了生产力,但在使用过程中,相信很多人跟作者一样,会遇到各种各样的问题,有时候解决的过程也是非常享受,某些问题还可能反复遇到。本篇文章记录了本人在使用开始接触 Kubernetes 至今遇到的各类问题及解决方案, 希望对其它同学有所帮助。

不定期更新

CRD spec.versions: Invalid value

原因: CRD yaml 文件中 apiVersion 与 versions 中的版本不对应

参考: https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definition-versioning/

删除 namespaces 时 Terminating,无法强制删除且无法在该 ns 下创建对象

原因: ns 处于 terminating 时 hang 住了,使用 --grace-period=0 --force 强制删除也无效

解决:

# 导出K8s访问密钥
echo $(kubectl config view --raw -oyaml | grep client-cert  |cut -d ' ' -f 6) |base64 -d > /tmp/client.pem
echo $(kubectl config view --raw -oyaml | grep client-key-data  |cut -d ' ' -f 6 ) |base64 -d > /tmp/client-key.pem
echo $(kubectl config view --raw -oyaml | grep certificate-authority-data  |cut -d ' ' -f 6  ) |base64 -d > /tmp/ca.pem
# 解决namespace Terminating,根据实际情况修改<namespaces>
curl --cert /tmp/client.pem --key /tmp/client-key.pem --cacert /tmp/ca.pem -H "Content-Type: application/json" -X PUT --data-binary @/tmp/temp.json https://xxx.xxx.xxx.xxx:6443/api/v1/namespaces/<namespaces>/finalize

Docker 启动时提示 no sockets found via socket activation

解决: 在启动 Docker 前先执行 systemctl unmask Docker.socket 即可

Prometheus opening storage failed: invalid block sequence

原因: 这个需要排查 Prometheus 持久化目录中是否存在时间超出设置阈值的时间段的文件,删掉后重启即可

Kubelet 提示: The node was low on resource: ephemeral-storage

原因: 节点上 Kubelet 的配置路径超过阈值会触发驱逐,默认情况下阈值是 85%

解决: 或者清理磁盘释放资源,或者通过可修改 Kubelet 的配置参数imagefs.available来提高阈值,然后重启 Kubelet.

参考: https://cloud.tencent.com/developer/article/1456389

kubectl 查看日志时提示: Error from server: Get https://xxx:10250/containerLogs/spring-prod/xxx-0/xxx: dial tcp xxx:10250: i/o timeout

原因: 目地机器的 iptables 对 10250 这个端口进行了 drop,如下图

iptables-save -L INPUT –-line-numbers

解决: 删除对应的规则

iptables -D INPUT 10

Service 解析提示 Temporary failure in name resolution

原因: 出现这种情况很奇怪,现象显示就是域名无法解析,全格式的域名能够解析是因为在 pod 的/etc/hosts 中有全域名的记录,那么问题就出在于 CoreDNS 解析上,CoreDNS 从日志来看,没有任何报错,但是从 pod 的状态来看,虽然处于 Running 状态,但是 0/1 可以看出 CoreDNS 并未处于 ready 状态.

可以查看 ep 记录,会发现 Endpoint 那一栏是空的,这也就证实了 K8s 把 CoreDNS 的状态分为了 notready 状态,所以 ep 才没有记录,经过与其它环境比较后发现跟配置有关,最终定位在 CoreDNS 的配置文件上,在插件上需要加上 ready

解决: 在 cm 的配置上添加 read 插件,如下图

# ... 省略
data:
  Corefile: |
    .:53 {
        errors
        health
        ready  # 加上该行后问题解决
        kubernetes cluster.local in-addr.arpa ip6.arpa {
          pods insecure
          upstream /etc/resolv.conf
          fallthrough in-addr.arpa ip6.arpa
        }
       # ... 省略

关于 CoreDNS 的 ready 插件的使用,可以参考????这里

总结起来就是使用 ready 来表明当前已准备好可以接收请求,从 codedns 的 yaml 文件也可以看到有livenessProbe

使用 Kubectl 命令行时提示: Unable to connect to the server: x509: certificate relies on legacy Common Name field, use SANs or temporarily enable Common Name matching with GODEBUG=x509ignoreCN=0

原因: 这个跟本地的 go 环境有关

解决: 在使用 kubectl 前使用命令export GODEBUG=x509ignoreCN=0即可

namespaces "kube-system" is forbidden: this namespace may not be deleted

原因: kube-system 是集群中受保护的 ns, 被禁止删除,主要是防止误操作,如果需要删除的话,可以使用 --force

参考: https://github.com/kubernetes/kubernetes/pull/62167/files

unknown field volumeClaimTemplates

原因: 提示这个错误的原因是资源对象是 Deployment, 而 Deployment 本就是无状态的, 所以也就没有使用 pv 这一说法了,可以参考 api

参考: ????Deploymentspec-v1-apps

CoreDNS 提示 Loop (127.0.0.1:38827 -> :53) detected for zone "."

原因: CoreDNS 所在的宿主机上 /etc/resolv.conf 中存在有 127.0.xx 的 nameserver,这样会造成解析死循环。

解决: 修改宿主机 /etc/resolv.conf 或者将 CoreDNS 的 ConfigMap 中的 forward 修改为一个可用的地址, 如 8.8.8.8

hostPath volumes are not allowed to be used

原因: 集群中存在 psp 禁止 pod 直接挂载 hostpath.

解决: 通过添加以下的 psp 规则来允许或者删除存在的 psp 都可

apiVersion: extensions/v1beta1
kind: PodSecurityPolicy
metadata:
  name: auth-privilege-psp
spec:
  allowPrivilegeEscalation: true
  allowedHostPaths:
  - pathPrefix: /
  fsGroup:
    ranges:
    - max: 65535
      min: 1
    rule: RunAsAny
  hostNetwork: true
  hostPID: true
  hostPorts:
  - max: 9796
    min: 9796
  privileged: true
  requiredDropCapabilities:
  - ALL
  runAsUser:
    rule: RunAsAny
  seLinux:
    rule: RunAsAny
  supplementalGroups:
    ranges:
    - max: 65535
      min: 1
    rule: RunAsAny
  volumes:
  - configMap
  - emptyDir
  - projected
  - secret
  - downwardAPI
  - persistentVolumeClaim
  - hostPath

container has runAsNonRoot and image has non-numeric user (grafana), cannot verify user is non-root

原因: 这是由于在 deploy 中设置了 securityContext: runAsNonRoot: true,在这种情况下,当 pod 启动时,使用的默认用户。比如上面的 grafana,K8s 无法确定他是不是 root 用户

解决: 指定 securityContext:runAsUser: 1000,随便一个 id 号即可,只要不是 0(0 代表 root)。

参考: https://stackoverflow.com/questions/51544003/using-runasnonroot-in-kubernetes

OCI runtime create failed: no such file or directory

原因: /var/lib/Kubelet/pod 下的数据目录已经损坏.

解决: 删除对应的目录即可

镜像拉取时出现 ImageInspectError

原因: 这种情况下一般都是镜像损坏了

解决: 把相关的镜像删除后重新拉取

Kubelet 日志提示: node not found

原因: 这个报错只是中间过程,真正的原因在于 apiserver 没有启动成功,导致会一直出现这个错误

解决: 排查 Kubelet 与 apiserver 的连通是否正常

OCI runtime create failed: executable file not found in PATH

原因: 在 path 中没有 nvidia-container-runtime-hook 这个二进制文件,可能跟本人删除 nvidia 显卡驱动有关.

解决: nvidia-container-runtime-hook 是 Docker nvidia 的 runtime 文件,重新安装即可.

Nginx Ingress Empty address

# kubectl get ingress
NAME         HOSTS                                       ADDRESS   PORTS   AGE
Prometheus   Prometheus.1box.com                                   80      31d

会发现 address 中的 ip 是空的,而查看生产环境时却是有 ip 列表的.

原因: 这个其实不是一个错误,也不影响使用,原因在于测试环境中是不存在 LoadBalancer 类型的 svc, 如果需要 address 中显示 ip 的话需要做些额外的设置

解决:

  1. 在 nginx controller 的容器中指定启动参数-report-ingress-status

  2. 在 nginx controller 引用的 ConfigMap 中添加external-status-address: "10.164.15.220"

这样的话,在 address 中变会显示 10.164.15.220

参考:

https://github.com/nginxinc/kubernetes-ingress/issues/587

https://docs.nginx.com/nginx-ingress-controller/configuration/global-configuration/reporting-resources-status/

Kubelet: but volume paths are still present on disk

原因: 这种 pod 已经被删除了,但是 volume 还存在于 disk 中

解决: 删除对应的目录/var/lib/Kubelet/pods/3cd73...

参考: https://github.com/longhorn/longhorn/issues/485

PLEG is not healthy

原因: 宿主机上面跑的容器太多,导致 pod 无法在 3m 钟内完成生命周期检查

解决: PLEG(Pod Lifecycle Event Generator) 用于 kublet 同步 pod 生命周期,本想着如果是因为时间短导致的超时,那是不是可以直接调整这个时间呢? 查看 Kubelet 的源码发现不太行,3m 时间是写在代码里的因此无法修改,当然修改再编译肯定没问题,但成本太大,所以只得优化容器的调度情况.

参考: https://developers.redhat.com/blog/2019/11/13/pod-lifecycle-event-generator-understanding-the-pleg-is-not-healthy-issue-in-kubernetes/

metrics-server: 10255 connection refused

unable to fully collect metrics: [unable to fully scrape metrics from source Kubelet_summary:K8s-node-49: unable to fetch metrics from Kubelet K8s-node-49 (xxx.xxx.xxx.49): Get http://xxx.xxx.xxx.49:10255/stats/summary?only_cpu_and_memory=true: dial tcp xxx.xxx.xxx.49:10255: connect: connection refused

原因: 现在的 K8s 都默认禁用了 Kubelet 的 10255 端口,出现这个错误是因此在 Kubelet 启动命令中启用了该端口

解决:- --Kubelet-port=10255 注释

metrics-server: no such host

unable to fetch metrics from Kubelet K8s-node-234 (K8s-node-234): Get https://K8s-node-234:10250/stats/summary?only_cpu_and_memory=true: dial tcp: lookup K8s-node-234 on 10.96.0.10:53: no such host

解决: 使用 Kubelet-preferred-address-types=InternalIP,Hostname,InternalDNS,ExternalDNS,ExternalIP 参数

参考: https://github.com/kubernetes-sigs/metrics-server/blob/master/README.md

pod 无法解析域名

集群中新增了几台机器用于部署 clickhouse 用于做大数据分析,为了不让这类占用大量资源的 Pod 影响其它 Pod,因此选择给机器打 taint 的形式控制该类 Pod 的调度, 创建 Pod 后发现这些 Pod 都会出现 DNS 解析异常,

原因;要注意容器网络,比如这里使用的是 flannel 是否容忍了这些机器的 taint,不然的话,flannel 是无法被调度到这些机器的,因此容器间的通信会出现问题,可以将类似 flannel 这些的基础 POD 容忍所有的 NoScheule 与 NoExecute

解决: flannel 的 ds yaml 中添加以下 toleration,这样适用任何的场景

      tolerations:
      - effect: NoSchedule
        operator: Exists
      - effect: NoExecute
        operator: Exists

Are you tring to mount a directory on to a file

原因: Yaml 文件中使用了 subPath, 但是 mountPath 指向了一个目录

解决: mountPath 需要加上文件名

Kubernetes 启动后提示 slice: no such file ro directory

原因: yum 安装的 Kubelet 默认的是 cgroupfs,而 Docker 一般默认的是 systemd。但是 kubernetes 安装的时候建议使用 systemd, Kubelet 跟 Docker 的不一致, 要么修改 Kubelet 的启动参数 , 要么修改 dokcer 启动参数

解决:

  • Docker 的启动参数文件为: /etc/Docker/daemon.json: "exec-opts": ["native.cgroupdriver=systemd”]

  • Kubelet 的启动参数文件为: /var/lib/Kubelet/config.yaml: cgroupDriver: systemd

"cni0" already has an IP address different from xxx.xxxx.xxx.xxx

原因: 使用 kubeadm reset 重复操作过, reset 之后,之前 flannel 创建的 bridge device cni0 和网口设备 flannel.1 依然健在

解决: 添加之前需要清除下网络

kubeadm reset
systemctl stop Kubelet
systemctl stop Docker
rm -rf /var/lib/cni/
rm -rf /var/lib/Kubelet/*
rm -rf /etc/cni/
ifconfig cni0 down
ifconfig flannel.1 down
ifconfig Docker0 down
ip link delete cni0
ip link delete flannel.1
systemctl start Docker
systemctl start Kubelet

kubeadm 初始化时提示 CPU 小于 2

[preflight] Running pre-flight checks
error execution phase preflight: [preflight] Some fatal errors occurred:
    [ERROR NumCPU]: the number of available CPUs 1 is less than the required 2
[preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...`

原因: kubeadm 对资源一定的要求,如果是测试环境无所谓的话,可忽略

解决:

使用 --ignore-preflight-errors 忽略

Unable to update cni config: no network found

原因: 还未部署网络插件容器,导致在 /etc/cni 下还没有文件

解决: 根据实际情况部署网络插件

while reading 'google-Dockercfg' metadata

原因: 从其它机器访问上述这些 url 确实出现 404

解决: 由于是在 RKE 上部署 K8s, 所以可能会去访问 google 相关的 url, 不影响业务,可以忽略

no providers available to validate pod request

原因: 在 api-server 的启动参数 enable-admission 中设置了 PodSecrityPolicy, 但是集群中又没有任何的 podsecritypolicy,因此导致整个集群都无法新建出 pod

解决: 删除相应的 podsecritypolicy 即可

unable to upgrade connection: Unauthorized

原因: Kubelet 的启动参数少了 x509 认证方式

解决: 配置证书的路径, 加上重启 Kubelet 即可

kubectl get cs 提示<unknown>

原因: 这是个 kubectl 的 bug, 跟版本相关,kubernetes 有意废除 get cs 命令

解决: 目前对集群的运行无影响, 可通过加 -o yaml 查看状态

安装 kubeadm 时提示 Depends 错误

原因: 跟 kubeadm 没多大关系, 系统安装的有问题

解决: 执行以下命令修复

apt --fix-broken install
apt-get update

访问 service 时提示 Connection refused

现象: 从另一环境中把 yaml 文件导入到新环境后有些 service 访问不通

telnet mongodb-mst.external 27017
Trying 10.97.135.242...
telnet: Unable to connect to remote host: Connection refused

首先排除了域名、端口的配置问题。

会发现提示连接拒绝.可以确定的是集群内的 DNS 是正常的.

那么就是通过 clusterIP 无法到达 realserver. 查看 iptables 规则

发现提示default has no Endpoints --reject-with icmp-port-unreachable

很奇怪, 提示没有 Endpoints, 但是使用kubectl get ep又能看到 ep 存在且配置没有问题

而且这个 default 是怎么来的.

为了方便部署, 很多配置是从别的环境导出的配置, 有些 service 访问是没问题的, 只有少部分 connection refused

结比一下发现一个很有趣的问题,先来看下不正常的 yaml 文件:

由于服务在集群外部署的, 因此这里使用了 subset 方式, 开始怀疑问题在这里, 但是后来知道这个不是重点

乍一看这个配置没什么问题, 部署也很正常, 但是对比正常的 yaml 文件,发现一个区别:

如果在 services 中的端口指定了名字, 那么在 subsets 中的端口也要带名字, 没有带名字的就会出现 connection refused,这个确实之前从来没有关注过, 一个端口的情况下也不会指定名字

而且这面 iptalbes 中提示的 default 刚好就是这里的 port name,虽然不敢相信,但是也只能试一试这个方法: 在 subsets 中也加了 port name

重新部署一个,再次查看 iptalbes 规则

iptables-save|grep mongodb-mst

OMG, 居然可行, 再看下 telnet 的结果:

Trying 10.105.116.92...
Connected to mongodb-mst.external.svc.cluster.local.
Escape character is '^]'.

访问也是没问题, 那么原因就在于:

在 service 中指定了 port name 时, 也需要在 ep 中指定 port name

error converting fieldPath: field label not supported

今天遇到一个部署 Deployment 出错的问题, yaml 文件如下:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: demo-Deployment
  namespace: 4test
  labels:
    app: config-demo-app
spec:
  replicas: 1
  selector:
    matchLabels:
      app: config-demo-app
  template:
    metadata:
      labels:
        app: config-demo-app
      annotations:
        # The field we'll use to couple our ConfigMap and Deployment
        configHash: 4431f6d28fdf60c8140d28c42cde331a76269ac7a0e6af01d0de0fa8392c1145
    spec:
      containers:
      - name: config-demo-app
        image: gcr.io/optimum-rock-145719/config-demo-app
        ports:
        - containerPort: 80
        envFrom:
        # The ConfigMap we want to use
        - configMapRef:
            name: demo-config
        # Extra-curricular: We can make the hash of our ConfigMap available at a
        # (e.g.) debug Endpoint via a fieldRef
        env:
        - name: CONFIG_HASH
          #value: "4431f6d28fdf60c8140d28c42cde331a76269ac7a0e6af01d0de0fa8392c1145"
          valueFrom:
            fieldRef:
              fieldPath: spec.template.metadata.annotations.configHash

提示以下错误:

会提示 Unsupported value:spec.template.metadata.annotations.configHash

目的很简单: container 中的环境变量中引用 configHash 变量, 这个值是当 ConfigMap 变更时比对两个不同的 sha 值以此达到重启 pod 的目的, 但 fieldPath 显然不支持 spec.template.metadata.annotations.configHash

从报错提示来看, 支持列表有 metadata.name, metadata.namespace, metadata.uid, spec.nodeName,spec.serviceAccountName, status.hostIp, status.PodIP, status.PodIPs

这些值用于容器中需要以下信息时可以不从 K8s 的 apiserver 中获取而是可以很方便地从这些变量直接获得。

参考:

  • https://www.magalix.com/blog/kubernetes-patterns-the-reflection-pattern

  • https://kubernetes.io/docs/tasks/inject-data-application/downward-api-volume-expose-pod-information/

参考文章:

  • https://www.ibm.com/docs/en/cloud-private/3.2.0?topic=console-namespace-is-stuck-in-terminating-state

  • https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definition-versioning/

  • https://github.com/kubernetes/kubernetes/issues/19317

  • http://www.xuyasong.com/?p=1725

  • https://kubernetes.io/

  • https://fuckcloudnative.io/

  • https://www.cnblogs.com/breezey/p/8810039.html

  • https://ieevee.com/tech/2018/04/25/downwardapi.html

  • https://www.magalix.com/blog/kubernetes-patterns-the-reflection-pattern

  • https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.19/#Deploymentspec-v1-apps

  • https://kubernetes.io/docs/tasks/inject-data-application/downward-api-volume-expose-pod-information/

  • https://github.com/kubernetes/kubernetes/pull/62167/files

  • https://github.com/kubernetes-sigs/metrics-server/blob/master/README.md

KubeSphere 社区活动预告

“CIC 2021 云计算峰会”正式启动啦!CIC 2021 是一场 Top 级行业盛会,将汇聚上千家青云QingCloud 企业客户信息化负责人,采取线上线下相结合的方式,与会规模将超过 10000 人。

大会的主题为“预见·数字自由”,将有技术大牛分享前沿成果,行业大咖带来实战经验。本次大会除了主论坛,还设置了多个分论坛。云原生 Meetup 将作为其中一个分论坛,延续之前上海、杭州、成都三站的 “KubeSphere & Friends” 的主题,为大家带来技术的交流和碰撞。

北京站目前已经开启招募,若您希望获取经验,期待和各位极客交流,那就抓紧报名吧!位置有限,先到先得!

扫描下方海报中的二维码进入到报名页面,填写个人信息,选择 “KubeSphere & Friends 2021 Meetup - 北京站”,即可报名。

关于 KubeSphere

KubeSphere (https://kubesphere.io)是在 Kubernetes 之上构建的开源容器混合云,提供全栈的 IT 自动化运维的能力,简化企业的 DevOps 工作流。

KubeSphere 已被 Aqara 智能家居、杭州数跑科技、本来生活、新浪、华夏银行、四川航空、国药集团、微众银行、紫金保险、中通、中国人保寿险、中国太平保险、中移金科、Radore、ZaloPay 等海内外数千家企业采用。KubeSphere 提供了开发者友好的向导式操作界面和丰富的企业级功能,包括多云与多集群管理、Kubernetes 资源管理、DevOps (CI/CD)、应用生命周期管理、微服务治理 (Service Mesh)、多租户管理、监控日志、告警通知、审计事件、存储与网络管理、GPU support 等功能,帮助企业快速构建一个强大和功能丰富的容器云平台。

 ✨ GitHub:https://github.com/kubesphere

 ???? 官网(中国站):https://kubesphere.com.cn

 ????‍????‍ 微信群:请搜索添加群助手微信号 kubesphere

米开朗基杨
关注 关注
  • 4
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
K8S集群中Pod资源调度失败的故障排查思路
江晓龙的博客
08-25 1850
2、ApiServer将创建Pod的请求告知Scheduler组件,Scheduler组件会通过某种计算方式,将请求的资源进行调度分配,将Pod与Node的调度关系进行绑定并告知ApiServer。在K8S集群中,Pod资源是最小的单元,任何服务都是以Pod的形式部署运行的,Pod资源需要调度到具体的Node节点中运行,在日常运维中,可能会遇到Pod资源无法调度的问题。3)Node节点上的确是存在污点,当Node节点关机无响应后,K8S会为Node节点自动添加一个不可调度的污点,从而使Pod资源无法调度。
Kubernetes 节点磁盘故障排查
NewTyun的博客
07-26 704
新钛云服已累计为您分享667篇技术干货通过本文,您将了解有关Kubernetes节点遇到磁盘压力时的正确处理方式,包括磁盘压力的原因以及故障排除的每一个步骤。无论您运行的是什么应用程序,都需要一些基本的资源。CPU、内存和磁盘空间是通用的,将用于所有应用程序。大多数工程师都对如何处理CPU和内存有着正确的理解,但并不是每个人都会花时间来理解如何正确使用磁盘。在Kubern...
K8S 常见问题排查思路,你都知道几个?
mengmeng_921的博客
12-22 1098
2、使用kubectlexec-it [pod_name]-n [namespace_name]–/bin/bash命令进入该Pod 所在的容器,使用top或htop命令查看容器内部进程的CPU和内存使用情况,找出可能存在的瓶颈。2、使用kubectl exec -it [pod_name]-n [namespace_name] --/bin/bash命令进入 Pod 所在的容器,尝试使用1s和cat等命令访问挂载的文件系统,判断是否存在读写错误。
vmware 搭建k8s无法ping通子节点_一波四折 —— 记一次K8S集群应用故障排查
weixin_39914975的博客
12-06 551
一波四折——记一次K8S集群应用故障排查Part1 初露端倪一个周四的下午,客户的报障打破了微信群的平静。“我们部署在自建K8S集群上的应用突然无法正常访问了,现在业务受到了影响!”收到客户的报障,我们立刻响应,向客户了解了问题现象和具体报错信息。客户反馈K8S集群部署在云主机上,K8S的应用pod example-app通过访问外部域名example-api.com调用接口,同时访问云...
pod被驱逐追溯根因
最新发布
MyySophia的博客
09-13 925
收到pod报警,看到其状态是error,新的pod又在另外一台机器上起来了。
k8s故障排查
zuo84526076的博客
08-06 1073
问题一:报错 cannot allocate memory 或者 no space left on device ,修复K8S内存泄露问题 问题描述 一. 当k8s集群运行日久以后,有的node无法再新建pod,并且出现如下错误,当重启服务器之后,才可以恢复正常使用。查看pod状态的时候会出现以下报错。 applying cgroup … caused: mkdir …no space left on device 或者在describe pod的时候出现cannot allocate memory 这时候
k8s集群5个故障案例分析
GGB_GG的博客
02-20 1322
最近看到了一份收集Kubernetes故障案例的资料,资料由ZalandoTech的高级首席工程师Henning Jacobs加以维护。这个由社区驱动的项目全面介绍了Kubernetes反模式以及为何导致Kubernetes运行错误的原因。k8s.af上的案例由工程师和实施者编写,描述了许多糟糕的经历:比如导致高延迟的CPU限制、阻止自动扩展的IP上限、应用程序日志丢失、pod被终止、502 错误、部署缓慢和生产环境故障等。愿通过分析这些失败案例,大家可以学会如何更好地配置和改进K8s环境。
k8s常见故障
ss810540895的博客
10-09 1245
问题出现不可怕, 重要的是加好监控及时报警, 我们之前一直对 kube-system 的监控没有做到很好, flannel 一直启动不成功的问题是我检查时发现的,使用别人提供的yaml文件前, 要注意下资源设置的, 类似 Prometheus 也有这种问题的, 它对内存的要求很高预算充足就不要自建集群了, 有不少运维问题的, 万一出现一个解决不了的就很麻烦, 类似上次那篇文章: 记一次Kubernetes机器内核问题排查[1]希望我们的经验能帮助到使用 K8s 的各位读者.
使用华为USG与S5720流量统计功能排查网络丢包问题
NewTyun的博客
06-23 1999
说明防火墙与交换机直连 ping 有问题,每次只通前两个包,有时完全 ping 不通,但正常业务未受影响,通过使用流量统计的方法找到了问题,是中间串了一台深信服的行为管理的原因。如果事先...
java 杀死僵死的线程_神奇的Java僵尸(defunct)进程问题排查过程
weixin_42300721的博客
02-26 683
点击上方"IT牧场",选择"设为星标"技术干货每日送达! 原文链接:https://www.jianshu.com/u/21add3dce532现象描述大概1个月多以前 在启动脚本中增加了tail -f用来启动后追踪日志判断是否启动成功后发现无法执行shutdown.sh(卡住 利用curl) 然后无奈使用kill -9但通过ps -el 发现此时进程变为defunct 即僵尸进程当时的解决办法无...
K8s Scheduler 在调度 pod 过程中遗漏部分节点的问题排查
吉小白的博客
05-13 289
问题现象 在TKE控制台上新建版本为v1.18.4(详细版本号 < v1.18.4-tke.5)的独立集群,其中,集群的节点信息如下: 有3个master node和1个worker node,并且worker 和 master在不同的可用区。 node 角色 label信息 ss-stg-ma-01 master label[failure-domain.beta.kubernetes.io/region=sh,failure-domain.beta.kubernetes.io/zone
容器网络防火墙状态异常导致丢包排查记录
吉小白的博客
09-03 2080
0.导语 K8s容器网络涉及诸多内核子系统,IPVS,Iptable,3层路由,2层转发,TCP/IP协议栈,这些复杂的内核子系统在特定场景下可能会遇到设计者最初也想不到的问题。 本文分享了iptable防火墙状态异常导致丢包的排查记录,这个排查过程非常曲折,最后使用了在现在的作者看来非常落伍的工具:systemtap,才得以排查成功。其实依作者现有的经验,此问题现在仅需一条命令即可找到原因,这条命令就是作者之前分享过文章使用 ebpf 深入分析容器网络 dup 包问题中提到的skbtracker。时隔7个
K8S常见异常事件与解决方案
qq_36864672的博客
05-04 2903
比如容器的内存限制值配置了1Gi,而容器的内存随着容器内进程内存使用量的增加超过了1Gi,就会导致容器被操作系统Cgroup Kill。发生容器被Kill之后,容器已经被停止,所以后续会出现应用实例被重启的情况。集群中的coredns组件发生重启(重新创建),一般是由于coredns组件压力较大导致oom,请检查业务是否异常,是否存在应用容器无法解析域名的异常。检查应用进程内存配置,如Java的jvm参数,对比应用监控-基础监控中的内存指标,判断是否是参数设置低导致进程内存不够用,适当进行参数优化。
k8s基本问题排查
吴广智的博客
05-20 675
排查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 -t
20个 K8S集群常见问题总结,建议收藏
虫虫的博客
03-04 2424
20个 K8S集群常见问题总结,建议收藏
Kubernetes 集群 5 个故障案例分析
qq_53322225的博客
03-14 617
最近看到了一份收集Kubernetes故障案例的资料,资料由ZalandoTech的高级首席工程师Henning Jacobs加以维护。这个由社区驱动的项目全面介绍了Kubernetes反模式以及为何导致Kubernetes运行错误的原因。 k8s.af上的案例由工程师和实施者编写,描述了许多糟糕的经历:比如导致高延迟的CPU限制、阻止自动扩展的IP上限、应用程序日志丢失、pod被终止、502 错误、部署缓慢和生产环境故障等。 愿通过分析这些失败案例,大家可以学会如何更好地配置和改进K8s环境。 1、
error: unable to upgrade connection: Unauthorized在k8s实现kubectl exec -it pod_ID sh出错解决
chang_rj的博客
03-30 9931
在创建pod时,进入pod失败 kubectl exec -it nginx-deployment-d55b94fd-xcrtg sh 检查问题,一直找不到答案,通过logs发现,同样不能实现 查其原因,是kubelet的配置问题,这里修改node节点的kubelet.json配置, 在node中分别修改 vi /opt/kubernetes/cfg/kubelet.config -----...
【k8s】error: unable to upgrade connection: Unauthorized
weixin_45066823的博客
12-22 776
我这里遇到的情况是,master节点的/etc/kubernetes/pki/apiserver-kubelet-client.crt 证书文件过期导致的无法验证的问题,将该证书更新后就恢复正常了。在执行kubectl exec命令时遇到了报错,所有的pod都无法exec进入。
kubernetes/k8s源码分析】calico node源码分析
zhonglinzhang
07-28 5443
calico node 工作内容 镜像命令 start_runit #!/bin/sh # From https://github.com/faisyl/alpine-runit env > /etc/envvars /etc/rc.local retval=$? if [ $retval -ne 0 ]; then echo >&2 "Calico node ...
写文章

热门文章

  • Docker 大势已去,Podman 万岁 104489
  • AdGuard Home 安装使用教程 73520
  • Envoy 中文指南系列:Envoy 介绍 25061
  • 跨平台构建 Docker 镜像新姿势,x86、arm 一把梭 22402
  • Podman 使用指南 21128

分类专栏

  • 云原生 付费 1篇
  • 黑科技 2篇
  • Service Mesh 2篇
  • envoy 2篇
  • linux 9篇
  • Kubernetes 22篇
  • Cloud Native 19篇
  • Docker 8篇
  • Prometheus 1篇
  • 监控 2篇
  • DevOps 1篇

最新评论

  • 使用电信 TR069 内网架设 WireGuard 隧道异地组网

    qq_38602316: 我用爱快组的网,测速始终突破不了200Mbps.不知道什么原因

  • 施主,AI 算卦了解一下,可一键生成高颜值卦象图,算的贼准!

    guoyuanzhi_0102: 图片不知道为什么没有生成出来

  • Wintun:一款惊艳的 WireGuard 虚拟网卡接口驱动

    Erkigsnek: 6,这篇文章,论坛上不下3篇是一样的了

  • 如何正确计算 Kubernetes 容器 CPU 使用率

    mathemagics: 那文章最开始的问题,回答是什么?(使用 Prometheus 配置 kubernetes 环境中 Container 的 CPU 使用率时,会经常遇到 CPU 使用超出 100%的原因是什么?)

  • 让 M1 芯片的 MacBook Pro 同时支持两个 4k 显示器

    2401_86265456: 这个有后配的连接线吗,原装线坏了

大家在看

  • python+flask计算机毕业设计高校智慧平台(程序+开题+论文) 436
  • 微信外跳转小程序【教程】 859
  • 通过github创建自己网页链接的方法 1788
  • IEC104规约的秘密之十五----文件传输慢的原因 2
  • JAVA继承 638

最新文章

  • 一键生成黑神话悟空小红书封面+文案,抓住流量,狠狠赚一笔!
  • 还在使用昂贵的虚拟机?来试试 Devbox,便宜 6 倍!
  • 不要慌,FastGPT 告诉我这是技术性调整,利好大 A!
2024
10月 7篇
09月 6篇
08月 10篇
07月 13篇
06月 14篇
05月 7篇
04月 23篇
03月 16篇
02月 5篇
01月 17篇
2023年135篇
2022年252篇
2021年257篇
2020年151篇
2019年67篇

目录

目录

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家辽宁玻璃钢雕塑企业景观园林玻璃钢人物雕塑定做亳州玻璃钢雕塑造型模压法玻璃钢雕塑生产湖州户内玻璃钢雕塑曲阳玻璃钢青蛙雕塑湖南广场不锈钢玻璃钢景观雕塑吕梁玻璃钢雕塑厂家绵阳人物玻璃钢雕塑造型丽水多彩玻璃钢雕塑定做价格玻璃钢莲藕形象卡通娃娃雕塑生产玻璃钢雕塑厂家贵不贵镂空玻璃钢雕塑公司河南玻璃钢浮雕学校抽象雕塑青岛玻璃钢花盆销售商场装饰玻璃钢卡通雕塑代理价格河南室外玻璃钢仿铜雕塑小品玻璃钢仿铜雕塑工单安徽彩绘玻璃钢雕塑四川玻璃钢广场雕塑菏泽校园玻璃钢彩绘雕塑厂家玻璃钢雕塑效果制作方法福建公园玻璃钢雕塑制作扬州景观玻璃钢雕塑深圳人物雕像玻璃钢雕塑工业惠州会发光的玻璃钢雕塑摆件安丘玻璃钢雕塑园中山玻璃钢抽象雕塑重庆美陈商场青浦商场美陈香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化