- 博客(29)
- 收藏
- 关注
原创 calico ipBlocks 未释放
bug:当前版本接收到node删除的事件时,不会清理etcd中分配的内存块,导致ippool块分配之后就会一直处于被占用的状态,当集群的块被占用完以后,就无法再分配ippool块,导致集群节点添加失败。修复方式:代码在版本3.13.0版本中修复了这个问题,但是直接升级影响太大,采用保留3.6.0版本的方式来解决问题。组件:calico-kube-controllers。
2024-12-13 10:01:40
222
原创 ipam.go 1054: Failed to get IPAM host error=resource does not exist: IPAMHostKey(host=yonsuite-test-
【代码】ipam.go 1054: Failed to get IPAM host error=resource does not exist: IPAMHostKey(host=yonsuite-test-
2024-11-26 17:23:08
222
原创 panic: interface conversion: interface {} is nil, not *v3.Node (calico-kube-controllers)
calico-kube-controllers 低版本v3.6.0,集群主机删除,会导致kube-controllers重启报错
2024-11-21 11:16:25
466
原创 exec /docker-entrypoint.sh: argument list too long
一、问题描述:当我们的启动一个容器,发现容器启动失败,查看容器日志报错为“exec /docker-entrypoint.sh: argument list too long”,但是查看我们的容器启动的配置参数也不多;通过docker inspect 发现,通过kubelet启动的容器被带入了大量的环境变量,这些变量有几千个,定位到了问题所在,这些变量并不是我们直接引入的,那它是从哪里来的呢?通过kubectl describe pod 发现容器的失败的原因是Error,没有什么可以信息;
2024-11-15 11:02:52
221
原创 磁盘io飙升分析
这个现象在MySQL上更为常见,在5.6(performance_schema提供io instrument)之前,我们通常只能猜到是MySQL导致的高IO,但是没法定位具体是哪个文件带来的负载。在一般运维工作中经常会遇到这么一个场景,服务器的IO负载很高(iostat中的util),但是无法快速的定位到IO负载的来源进程和来源文件导致无法进行相应的策略来解决问题。通过ps aux|grep mysqld 找到 mysqld进程对应的进程号,通过pt-ioprofile查看哪个文件的IO占用时间最多。
2024-01-08 13:42:01
484
原创 registry数据清理的巨坑
最好不要做registry的数据清理,最好不要做registry的数据清理,最好不要做registry的数据清理!由于后端registry多年未做镜像的清理,倒是底层镜像的数据巨大,达到了1.2P的数据量,每月的存储费用巨高,所以想要通过镜像标记删除的方式,来清理镜像,释放磁盘空间。操作之前,查询了网上的诸多文章,发现都千遍一律,没有什么问题,也没有任何的坑的记录,所以开始做数据的标记及清理。重新搭建registry仓库,将用的的镜像push到新的镜像仓库,并行一段时间,切换镜像仓库。
2023-07-11 19:32:00
342
原创 k8s业务故障集锦
通过观察问题主机的参数,发现net.netfilter.nf_conntrack_tcp_timeout_established的阈值为300,即5分钟后tcp_established的信息将不在记录,从而被nf_conntrack回收。2)当建立的tcp链接,在等待8分钟之后,再发送数据,却迟迟没有收到数据库的返回包,导致java服务端一直在进行包的重传,重传多次,也没有收到数据库的回包。1)数据库在于java服务端建立了tcp链接之后,在立即发送数据包的情况下,可以收到从java服务端发送来的数据包。
2023-07-06 17:09:38
596
1
原创 calico启动NodeName获取的顺序
2、如果1为false,则判断NODENAMEFromFile,默认文件路径为/var/lib/calico/nodename,如果不为空,则只用NODENAMEFromFile的内容作为NODENAME。3、如果2为false,则或者环境变量HOSTNAME,如果为true,则HOSTNAME作为NODENAME。2、如果2为false,则或者环境变量HOSTNAME,如果为true,则HOSTNAME作为NODENAME。3、如果3为false,则自动获取主机名称,作为NODENAME。
2023-06-07 16:38:45
214
原创 redis-cluster 概念介绍
3、节点从正常状态到fail状态,需要收集每个节点对不正常节点(B)的确认:1)当节点(A)发送的ping包没有返回,此时将B节点的状态信息标记为(PFAIL)状态,然后将信息发送到集群的其它节点,同理当A收集本地有关B状态的信息,当大多数主节点认为B节点是PFAIL状态时,节点A将标记B的状态为FAIL状态,然后向所有的可达节点发送这个消息。8)之后,节点A会将节点B的信息通过Gossip协议传播给集群中的其他节点,让其他节点也与节点B进行握手,最终,经过一段时间后,节点B会被集群中的所有节点认识。
2023-03-28 18:08:17
1023
原创 升级kubeadm安装部署的kubernetes集群
升级calico操作:找到calico的安装方式的yaml文件,准备一份老的版本的配置和新的版本的calico的配置文件,直接删除老的calico的配置,kubectl delete -f calico-old.yaml && kubectl apply -f calico-new.yaml,观察calico相关的pod,整个过程不会对线上的服务的访问路由造成影响。2、一般情况下,我们都会有多个控制节点,从代理层上摘除一个控制节点,然后进行升级操作,我们从1.19 升级到1.20。
2023-03-23 14:52:27
362
原创 nginx-ingress蓝绿部署权重测试
3、要求:所有带有“version:canary”请求头的请求,都打到灰度的pod上面。结果:压测500次,所有请求都打到了灰度的pod上面。2、正式pod1个/canary 2个 ,canary权重占比 30%发送1000个请求,canary占139 + 138 = 277个。结果:压测500次,所有请求都打到了灰度的pod上面。发送500个请求,canary占71+72=143个。发送500个请求 ,canary占147个。发送1000个请求,canary占293个。
2023-03-20 18:45:23
369
1
原创 根据etcd备份文件,重建etcd,恢复k8s
4)为每台机器配置外接etcd的前期配置,安装参考文档:https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/setup-ha-etcd-with-kubeadm/5) 由于etcd为外接集群,所以当我们更换集群时,我们的kubadm-config在初始化时添加的etcd集群的配置无法更新,需要我们手动更新,更新的configmaps为kubeadm-config。4)观察所有的pod对于一些失败的pod,删除重建即可。
2023-03-15 15:51:32
643
原创 k8s外接etcd更换节点
把开始加入的两个etcd1和etcd2的member的数量在initial-cluster中跟etcd3保持一致,从而保持member一致。将老的etcd的ca.crt和ca.key同步到3个新的etcd节点,给新的etcd生成证书。创建优先于kubeadm提供的kubelet单位文件的优先级的新单位文件来覆盖服务优先级。为新的3个etcd节点生成kubeadm-config.yaml文件,文件内容如下。同理,将第二个和第三个节点的etcd都增加到集群当中。更新新的etcd的证书为10年。
2023-03-10 17:10:27
738
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人