故障排查
Kubernetes 集群 troubleshooting
· ☕ 6 分钟
FailedCreatePodSandBox 错误 Error response from daemon: OCI runtime create failed: container_linux.go:380: starting container process caused: process_linux.go:402: getting the final child's pid from pipe caused: EOF: unknown 处理 清理 cache 1 echo 3 > /proc/sys/vm/drop_caches 原因 内存碎片过多 calico-node 不停重启 increase max user 错误 runtime: failed to create new OS thread (have 11 already; errno=11),runtime: may need to increase max user processes (ulimit -u) 处理 增加 ulimit 限制额度 1 ulimit -u unlimited 原因 用户进程数耗尽 calico-node BIRD is not ready 错

如何修复变更 IP 之后的 Kubernetes 集群
· ☕ 4 分钟
记录一次因为 IP 变更导致集群故障的修复过程。有两个集群,一个是单节点(allinone),另一个是四节点(3 master 1 node)的集群。 1. 更新 Etcd 证书 【在每个 Etcd 节点】备份 Etcd 证书 1 cp -R /etc/ssl/etcd/ssl /etc/ssl/etcd/ssl-bak 查看 Etcd 证书中的域 1 2 3 openssl x509 -in /etc/ssl/etcd/ssl/node-node1.pem -noout -text|grep DNS DNS:etcd, DNS:etcd.kube-system, DNS:etcd.kube-system.svc, DNS:etcd.kube-system.svc.cluster.local, DNS:localhost, DNS:node1, IP Address:127.0.0.1, IP Address:0:0:0:0:0:0:0:1, IP Address:x.x.x.1 需要

拉取大镜像报错
· ☕ 3 分钟
1,接上一回,共享存储优化海外镜像的拉取 在基于 Harbor 和 Registry 的镜像管理分发方案的基础上,最近又做了一个优化。 之前的方案是,在每个区域,使用一台低配大磁盘的机器,部署一个 Mirror Cache 缓存镜像。这样带来一个问题,就是每个区域都需要拉取一个镜像,如果有 N 个区域,

OpenEBS 证书过期导致服务不可用
· ☕ 2 分钟
1. 安装方式 1 2 kubectl apply -f https://openebs.github.io/charts/openebs-operator.yaml kubectl patch storageclass openebs-hostpath -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}' OpenEBS 主要用来给 Tekton 流水线作为默认的存储使用。之前,我也试过 Longhorn,但是高峰期扛不住,流水线 Pending。而卸载 Longhorn 之后有残留,导致 kube-apiserver 一直报错,最后花了很大力气才删除。 2. Kubernetes 集群证书过期之后,OpenE

使用 Linux TC 进行流量限制
· ☕ 3 分钟
1. Linux 下的流量控制原理 通过对包的排队,我们可以控制数据包的发送方式。这种控制,称之为数据整形,shape the data,包括对数据的以下操作: 增加延时 丢包 重新排列 重复、损坏 速率控制 在 qdisc-class-filter 结构下,对流量进行控制需要进行三个步骤: 创建 qdisc 队列 上面提到 Linux 是