cloud provider Service Controller

​ service controller 负责观察 k8s 中 service 资源的创建,更新和删除事件。并基于当前 k8s 中的 service 状态去云上配置负载均衡,保证云上的负载均与 serivce 资源描述相一致。 ​ service controller 在 cloud contorller 中的一个模块随 cloud controller 启动,可以通过启动 new serv...

Posted on 

cloud provider summary

​ cloud controller manager 是可插拔的,它运行新的 cloud provider 简单方便的与 Kubernetes 集成。 ​ cloud provider 启动从 new 一个 cloud manager command 开始 12345func main() {... command := app.NewCloudControllerManag...

Posted on 

openvpn 链接问题分析

​ 到新环境熟悉内部接口,postman 去调试内部服务接口发现接口没有返回,换个电脑调用正常。初步怀疑是自己电脑问题,遂打开 wireshark 根据目标主机 ip 结合路由信息判断的走的utun1接口出流量。 tcp-follow-all ​ 上图通过 wireshark 看到我获取 cube 接口GET请求发出去,多次尝试依然都是http的 response 的没有被用户进程收到,w...

Posted on 

NTP

​ 之前和同事聊天,同事问我服务器有网络延迟存在是如何同步时间的?鉴于之前知识背景我只能说参考一下 NTP(Synchronization Approaches for Packet-Based Networks [^Clock_Synchronization])服务。认真想一想就该发现时间服务作为现代社会的基础设施应该有相当一段历史了。 ​ 还是先关注计算机,在计算机中时钟是振荡器 + 计...

Posted on 

kube-scheduler pod cidr bugfix

​ 之前写一个需求需要做容器网络的规划,发现kuberntes在调度的时候不会把 ip 地址作为一个调度的参考项。也就是手当node上规划出来的子网中的 ip 用光且 cpu 和 mem 以及其他调度参考项都满足的时候 pod 还是会被分配到这个节点上,并且kubelet会伴随着如下报错: 1NetworkPlugin kubenet failed to set up pod "f...

Posted on 

kube-proxy iptables 规则生成

​ 做容器也有半年了,写需求的过程中发现当我创建LoaderBalancer类型的service时候kube-proxy iptables模式会产生一条公网规则的同步到集群中的全部节点上。当时我就很奇怪为啥公网 lb 还要生成iptables规则。 ​ 在梳理 iptables 规则之前先看一下loadBalancer类型的kuberntes service的流量链路,以腾讯云为例看一下腾讯...

Posted on 

the issue of netlink hang

我以为我以后用不到 netlink 了呢,今天又踩坑了。 公司的基础架构监控进程的一个线程通过 netlink 去获取内核数据,阻塞 IO 不返回,导致数据丢点。 1234567891011121314151617goroutine 18735 [syscall, 42 minutes]:syscall.Syscall6(0x2d, 0x15, 0xc4206be000, 0x1000, 0...

Posted on 

quick install ShadowsocksR + tcp_bbr

昨天凌晨到今天早上上班前梯子挂了,这里重新搭建一个。 DO 上入了一个$5/M 的 Ubuntu 17.04 x32,下面就是刷脚本的事情。 安装 shadowsocksR,需要注意的事情就是不要选客户端不支持的 obfs,一开始选错了可以在/etc/shadowsocks.json 中修改,保持和客户端兼容。重启在/etc/init.d/shadowsocks restart 1...

Posted on 

Linux kernel tcp overview

一直想找机会梳理一下 kernel 的网络子系统,不如现在开始动手做,在梳理 kernel 前,先回顾一下操作系统提供的网络编程 API。 0x00 用户如何使用想了解一下 Linux 下的 tcp 个人认为 socket API 是肯定要介绍的,自 bsd 4.2 引入到如今已经 30 多年了,核心 api 是非常稳定见如下表格 C/S API 服务器端: socke...

Posted on 

to explore c va arg

之前写 go 语言时候发现 go 语言支持可变长参数,且写法与 c 语言类似,就好奇了 c 语言是如何实现可变长参数的。这里参考了[^this]。 C 语言可变参数通过三个宏(va_start、va_end、va_arg)和一个类型(va_list)实现的, void va_start(va_list ap, paramN);参数:ap: 可变参数列表地址paramN: 确定的参数功能:初...

Posted on 
123457