02 2024 档案

go 同一个https端口实现多种认证方式
摘要:参考kube-apiserver,访问https端口时,-k允许跳过默认的证书认证,从而实现多种认证方式。 package main import ( "crypto/tls" "fmt" "net/http" klog "k8s.io/klog/v2" ) func healthCheck(w h 阅读全文

posted @ 2024-02-26 09:08 王景迁 阅读(72) 评论(0) 推荐(0)

分析kube-apiserver单次创建namespace耗时
摘要:日志输出 # 业务日志 I0220 22:12:39.149364 40965 multi_config_multi_clientset.go:63] begin to wait cache sync I0220 22:12:39.250461 40965 multi_config_multi_cl 阅读全文

posted @ 2024-02-21 23:37 王景迁 阅读(60) 评论(0) 推荐(0)

eBPF demo
摘要:ubuntu server 23.10 eBPF介绍 eBPF(Extended Berkeley Packet Filter,扩展的伯克利数据包过滤器)前身是BPF(Berkeley Packet Filter,伯克利数据包过滤器)。BPF合入linux kernel,在tcpdump中应用。eB 阅读全文

posted @ 2024-02-20 08:48 王景迁 阅读(187) 评论(0) 推荐(0)

编译调试kube-apiserver
摘要:k8s v1.19.0 cd kubernetes && make generated_filescd cmd/kube-apiserver && go build 报错app/server.go:467:87: undefined: openapi.GetOpenAPIDefinitionscd 阅读全文

posted @ 2024-02-15 19:19 王景迁 阅读(59) 评论(0) 推荐(0)

kube-apiserver限流配置
摘要:k8s v1.19.0 watch这种长时间运行请求不受限流影响。 普通限流 客户端访问kube-apiserver,限流参数有max-mutating-requests-inflight(默认值是200,对应操作类请求)和max-requests-inflight(默认值是400,对应查询类请求) 阅读全文

posted @ 2024-02-12 14:16 王景迁 阅读(479) 评论(0) 推荐(0)

client-go 分析Shutdown方法耗时长原因
摘要:k8s v1.19.0 Shutdown等待结束流程 第1步:reflector停止list/watch。 第2步:DeltaFifo队列关闭,元素全部取出,放入用户队列。 第3步:等待业务处理完成。 场景1:Shutdown方法等待EventHandler回调方法完成 klog.InitFlags 阅读全文

posted @ 2024-02-09 20:20 王景迁 阅读(36) 评论(0) 推荐(0)

关闭kubelet驱逐
摘要:/etc/sysconfig/kubelet末尾追加内容--eviction-hard=imagefs.available<1%,memory.available<1Mi,nodefs.available<1%,nodefs.inodesFree<1%重启kubelet 阅读全文

posted @ 2024-02-09 15:33 王景迁 阅读(53) 评论(0) 推荐(0)

手写实现cni插件
摘要:k8s v1.19.0 mycni配置文件 cat >> /etc/cni/net.d/mycni.json << EOF { "cniVersion": "0.1.0", "name": "mycni", "type": "mycni" } EOF type对应/opt/cni/bin目录下二进制 阅读全文

posted @ 2024-02-08 22:06 王景迁 阅读(81) 评论(0) 推荐(0)

为什么kube-controller-manager启动后https长连接数量是2
摘要:k8s v1.19.0 单节点集群2条长连接 编译二进制并调试 cd cmd/kube-controller-manager && go build # vscode launch.json { "name": "Launch", "type": "go", "request": "launch", 阅读全文

posted @ 2024-02-07 14:26 王景迁 阅读(24) 评论(0) 推荐(0)

为什么kube-scheduler启动后https长连接数量是2
摘要:k8s v1.19.0 单节点集群2条长连接 编译二进制并调试 cd cmd/kube-scheduler && go build # vscode launch.json { "name": "Launch", "type": "go", "request": "launch", "mode": 阅读全文

posted @ 2024-02-06 21:34 王景迁 阅读(42) 评论(0) 推荐(0)

Etcd读写性能测试
摘要:单节点etcd集群,etcd版本是3.4.9。 编译etcd benchmark git clone https://github.com/etcd-io/etcd.git cd etcd/ git checkout v3.4.9 rm -rf vendor go install -v ./tool 阅读全文

posted @ 2024-02-05 21:44 王景迁 阅读(300) 评论(0) 推荐(0)

client-go http trace分析耗时
摘要:klog.InitFlags(nil) flag.Parse() defer klog.Flush() cfg, err := clientcmd.BuildConfigFromFlags("", "/root/.kube/config") if err != nil { klog.Fatalf(" 阅读全文

posted @ 2024-02-05 18:39 王景迁 阅读(94) 评论(0) 推荐(0)

go ticker源码分析
摘要:结构体定义 Timer是一次性定时器,Ticker是周期性定时器,实现相同,系统协程处理所有定时器。 Ticker结构体 C是容量1的channel,如果里面数据没被取走,那么丢失下一个周期事件。 runtimeTimer结构体 这里的回调函数是,向C中存入当前时间。 timersBuckets 数 阅读全文

posted @ 2024-02-05 17:07 王景迁 阅读(38) 评论(0) 推荐(0)

go dns解析参数配置
摘要:// lookup_dns.go package main import ( "net" "time" "k8s.io/klog/v2" ) func main() { dns := "kubernetes.default" if _, err := net.LookupHost(dns); err 阅读全文

posted @ 2024-02-04 23:14 王景迁 阅读(135) 评论(0) 推荐(0)

informer增加过滤标签
摘要:labelOptions := informers.WithTweakListOptions(func(opts *metav1.ListOptions) { opts.LabelSelector = "a=b" }) informerFactory := informers.NewSharedIn 阅读全文

posted @ 2024-02-04 22:02 王景迁 阅读(74) 评论(0) 推荐(0)

导航