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 

cluster api v1alpha2 之 cluster

因为最近工作需要,调研了 cluster api provider aws.整理调研过程中的知识如下: manager cluster 是一个注册了多个 crd 并运行三个 controller 的普通 k8s 集群。 三个 controller 分别是:cabpk-controller-manager 核心功能是用来生产集群证书统一签发,核心进程的参数下发。capa-controller-...

Posted on 

cloud provider node controller

node controller 是负责初始化/维护一个k8s node 在云上标识的信息,主要信息如下: 1: 初始化node的云相关的zone/region信息labels。2: 初始化 node 的云上的实例信息,比如说 type 和 szie。3: 获取 node 的网络地址信息和主机名称。4: 当客户通过云的虚拟机管理面板删除主机的时候需要从 k8s 中同步的删除...

Posted on 

cloud provider route controller

​ 当 pod 的 CIDR 和所属的 node 不属于同一个 cidr 上时候,在部分云上就会有 pod 和 node 网络互通的问题,而 route controller 就是被设计用来创建路由解决这个问题的方案。 ​ 如果计划让 k8s 启动的 pod 从指定的 cidr 中分配 ip 常见的方式是通过指定 KCM 的启动参数cluster-cidr来指定 POD CIDR,servi...

Posted on 
12347