how to build apisix@MacBookM2

this script will download the deps of apisix, and build the new openresty to /usr/local/openresty 1brew install openresty-openssl111 go lua@5.1 pcre2 pcre compile the openrestythe new openresty wi...

Posted on 

blkio 源码分析

背景之前在发现线上 blkio cgroup 层级关系中 io_merged 文件内容不符合预期,所以才有这一篇源码分析。 4.9 kernel初始化我们都知道 blkio 是基于 IO 的 scheduler 的实现的, 基于线上的唯一的一块SATA盘的且调度算法是 cfq, 读一下 cfq 实现 blkio 的相关代码,首先到 cfq 的模块的入口函数 cfq_init()移除了一些错误...

Posted on 

blkio cgroup 异常

blkio cgroup 异常线上集群 pod 的磁盘监控数据丢失,经过其他同学的诊断发现是 cgroup 异常 blkio 源码分析 k8s 对 cgroup 的支持https://www.youtube.com/watch?v=u8h0e84HxcE historyblk-group-support.png 123456789101112131415161718192021root@x...

Posted on 

kubelet 是如何使用 containerd

梳理这个目的是为了以后 containerd 上线提前储备相关知识,预设问题还是之前的 POD 是如何创建,以此来摸索他的调用链路。 kubelet-create-pod 参数对比对比一下 kubelet 使用 dockerd 和 cotnainerd 参数的对比,最核心的地方就是 --container-runtime=remote --container-runtime-endpoi...

Posted on 

kubelet 是如何启动 POD

出于 containerd 上线需求,走读线上组件的代码确定现有 POD 创建流程,主要关注的是组件之间是如何交互沟通的进行 POD 创建的。 kubelet-create-pod kubelet kubelet 如何创建 POD dockershim dockerd 接口 /containers/{name:.*}/start contain...

Posted on 

aws nlb 使用 full nat 遇到的 tcp rest 问题

背景业务要使用 k8s service 将集群内部的业务暴露出来,对外提供 tcp/udp 的接入方式,两个传输层的协议使用相同的端口号。 而我们在 aws 上自己建的集群使用的是 aws cloud provider 来实现和 aws 内部资源互联互通调用,而截止 20200810 aws cloud provider 还不支持创建 service 支持tcp/udp使...

Posted on 

kubelet 是如何配合 CNI 删除容器网络

这周协助同事解决线上CNI插件删除POD但是报错信息说 network namespace 为空,具体错误信息如下图 cni network namespace not found 看了一眼代码感觉不是我一时半会能搞定的事情,就借这个问题为契机阅读一下kubelet的部分代码,熟悉一下kubelet是如何删除POD网络,如果以后又要处理这样问题就可以有的放矢。 在线上分析可以看到kubel...

Posted on 

kube-proxy 配置不当导致 service 异常

之前调研 nlb 后端获取真实 ip 的特性,发现当 kube-proxy 报错如下的时候就会发生生成的 iptables 规则不符合预期,即丢弃当前 service node port 的流量。 1-A KUBE-XLB-HCMTY43AHEJZZDHI -m comment --comment "2048-game/service-2048: has no local endp...

Posted on 

service externalTrafficPolicy 探究

因为业务需要在POD中获取客户端的正式地址,通过调研发现只要创建service的是spec.externalTrafficPolicy 字段指定为Local即可。 这片文章探究一下Local这个字段是如何实现的。 创建一个 service 展示如下,之所以使用 nlb 是因为 aws 的 nlb是可以透传客户端原地址。 12345678910111213141516apiVersion: v...

Posted on 

amzon aws cni 踩坑 2

目前业务上准备试用 aws vpc cni 方案,之前遇到了一些 cni 的使用问题发现还有一些细节不了解。 遂去尝试使用它提供的一些特性开关,在试用 AWS_VPC_K8S_CNI_EXTERNALSNAT 开关,重建了 aws node ds, 发现 ec2 节点的 网卡被 deattach 了,继而导致了使用了绑定在这个网卡上的浮动 ip 的 pod 失联了。 结论:是 ipamd d...

Posted on 
12