roc

Results 104 issues of roc

https://imroc.cc/k8s/troubleshooting/java/ 相同镜像在部分机器上跑有问题 现象: 经常会有人说,我的 java 容器镜像,在 A 机器上跑的好好的,在 B 机器上就有问题,都是用的同一个容器镜像啊。 根因:java 类加载的顺序问题,如果有不同版本的重复 jar 包,只会加载其中一个,并且不保证顺序。 解决方案:业务去掉重复的 jar 包。 类似 case 的分析文章:https://www.jianshu.com/p/dcad5330b06f java 默认线程池的线程数问题 现象:java 应用创建大量线程。 根因:jdk1.8 212 版本以前,无法正确识别 cgroup 的 limit,所以...

Gitalk
baee49d53fab48a4e6896d86d555b9f9

https://imroc.cc/k8s/troubleshooting/analysis-exitcode/ 使用 kubectl describe pod 查看异常 pod 的状态: Containers: kubedns: Container ID: docker://5fb8adf9ee62afc6d3f6f3d9590041818750b392dff015d7091eaaf99cf1c945 Image: ccr.ccs.tencentyun.com/library/kubedns-amd64:1.14.4 Image ID: docker-pullable://ccr.ccs.tencentyun.com/library/kubedns-amd64@sha256:40790881bbe9ef4ae4ff7fe8b892498eecb7fe6dcc22661402f271e03f7de344 Ports: 10053/UDP, 10053/TCP, 10055/TCP Host Ports: 0/UDP, 0/TCP, 0/TCP Args: --domain=cluster.local. --dns-port=10053...

Gitalk
b4e219b8f240e4c79428ab8a9d9766a2

https://imroc.cc/k8s/troubleshooting/disk-full-causes-high-cpu/ 问题描述 某服务的其中两个副本异常,CPU 飙高。 排查 查看 container_cpu_usage_seconds_total 监控,CPU 飙升,逼近 limit。 查看 container_cpu_cfs_throttled_periods_total 监控,CPU 飙升伴随 CPU Throttle 飙升,所以服务异常应该是 CPU 被限流导致。 查看 container_cpu_system_seconds_total 监控,发现 CPU 飙升主要是 CPU system 占用导致,容器内 pidstat -u -t...

Gitalk
7dc5cdecfbe88ec42b1195e306c68e7a

https://imroc.cc/k8s/troubleshooting/pod/ Pod 一直处于 Pending 状态 Pending 状态说明 Pod 还没有被调度到某个节点上,需要看下 Pod 事件进一步判断原因,比如: $ kubectl describe pod tikv-0 ... Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning FailedScheduling...

Gitalk
6b5d51ba17c49752e0f50621f46a7c21

https://imroc.cc/learning-kubernetes/best-practice/ 腾讯云高级工程师

Gitalk
329413bb48875ef5b24c51bd81626f3c

https://imroc.cc/learning-kubernetes/troubleshooting/dns-lookup-5s-delay/ 延时现象 客户反馈从 pod 中访问服务时,总是有些请求的响应时延会达到5秒。正常的响应只需要毫秒级别的时延。 抓包 通过 nsenter 进入容器 netns ,然后使用节点上的 tcpdump 抓 pod 中的包,发现是有的 DNS 请求没有收到响应,超时 5 秒后,再次发送 DNS 请求才成功收到响应。 在 kube-dns pod 抓包,发现是有 DNS 请求没有到达 kube-dns pod,在中途被丢弃了。 为什么是...

Gitalk
b76f4db7a3e3bb9bd693ec57fa8f9e04

https://imroc.cc/k8s/ref/kubectl/raw/ 获取节点 cadvisor 指标 kubectl get --raw=/api/v1/nodes/11.185.19.215/proxy/metrics/cadvisor # 查看有哪些指标名 kubectl get --raw=/api/v1/nodes/11.185.19.215/proxy/metrics/cadvisor | grep -v "#" | awk -F '{' '{print $1}' | awk '{print $1}' | sort | uniq...

Gitalk
ff3830d1fe1fe09304d94d9cdc2f5943

https://imroc.cc/k8s/troubleshooting/iowait/ 概述 系统如果出现 IO WAIT 高,说明 IO 设备的速度跟不上 CPU 的处理速度,CPU 需要在那里干等,这里的等待实际也占用了 CPU 时间,导致系统负载升高,可能就会影响业务进程的处理速度,导致业务超时。 如何判断 ? 使用 top 命令看下当前负载: top - 19:42:06 up 23:59, 2 users, load average: 34.64, 35.80, 35.76...

Gitalk
c303708fc17086b36e2c264afcca571d

https://imroc.cc/k8s/troubleshooting/timeout/ cpu 被限制了 (throttled) 如果 Pod 使用的 CPU 超过了 limit,或者容器内线程数太多,发生 CPU 争抢,会触发 cgroup 的 CPU throttle,限制 Pod 使用 CPU,自然也就可能导致服务超时 (进程分配的 CPU 时间片少了,处理就变慢了,就容易发生超时)。 如果确认?可以查 Promehtues 监控,PromQL 查询语句: cpu 被限制比例: sum by...

Gitalk
4b2833a90a1ca616571c36591d969454

https://imroc.cc/k8s/ref/bug/ kubelet 与 apiserver 断连后仍然使用旧连接导致连接失败 (1.16-1.18) 相关 issue: #87615 原因: golang http 包的 bug,参考 #34978 和 #40213 解决方案: 临时: 重启 kubelet 彻底: 升级 K8S 版本到 1.19+

Gitalk
9cfdf2811a91e577a0d56d8b6d1ff8e0