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 

容器中 glibc 兼容问题

今天同事在线上做Debain版本升级遇到问题 123456# kubectl exec -it fqh-realserver-01-69586d7c74-dd9cl bashcommand terminated with exit code 139# apt-get updateE: Method http has died unexpectedly!E: Sub-process http ...

Posted on 

cgo 交叉编译

日常工作是写 golang,在 mac 上开发代码,通过 GOOS 指定操作系统进行交叉编译发布到 Linux 环境。 但是在这一次的需求中在 golang 的项目中引用了 C 代码,带来的后果就是指定 GOOS 进行交叉编译失败。 C 代码是 inline 的方式引入的,形式如下 1234567891011121314package testimport ( "fmt"...

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 

amzon aws cni 踩坑

最近要把 aws vpc cni 适配到 cluster api 已经适配完成了,发现节点重启过后 aws-node 在重启的节点上不能正常 running 导致节点上的 pod 不能正常运行。 而且使用过在 master 上使用 kubectl logs 获取 pod 运行信息失败。 12root@ip-10-0-10-69:/home/admin# kubectl -n kube-sys...

Posted on 
12348