摘要:参考kube-apiserver,访问https端口时,-k允许跳过默认的证书认证,从而实现多种认证方式。 package main import ( "crypto/tls" "fmt" "net/http" klog "k8s.io/klog/v2" ) func healthCheck(w h
阅读全文
摘要:日志输出 # 业务日志 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
阅读全文
摘要:ubuntu server 23.10 eBPF介绍 eBPF(Extended Berkeley Packet Filter,扩展的伯克利数据包过滤器)前身是BPF(Berkeley Packet Filter,伯克利数据包过滤器)。BPF合入linux kernel,在tcpdump中应用。eB
阅读全文
摘要:k8s v1.19.0 cd kubernetes && make generated_filescd cmd/kube-apiserver && go build 报错app/server.go:467:87: undefined: openapi.GetOpenAPIDefinitionscd
阅读全文
摘要:k8s v1.19.0 watch这种长时间运行请求不受限流影响。 普通限流 客户端访问kube-apiserver,限流参数有max-mutating-requests-inflight(默认值是200,对应操作类请求)和max-requests-inflight(默认值是400,对应查询类请求)
阅读全文
摘要:k8s v1.19.0 Shutdown等待结束流程 第1步:reflector停止list/watch。 第2步:DeltaFifo队列关闭,元素全部取出,放入用户队列。 第3步:等待业务处理完成。 场景1:Shutdown方法等待EventHandler回调方法完成 klog.InitFlags
阅读全文
摘要:/etc/sysconfig/kubelet末尾追加内容--eviction-hard=imagefs.available<1%,memory.available<1Mi,nodefs.available<1%,nodefs.inodesFree<1%重启kubelet
阅读全文
摘要: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目录下二进制
阅读全文
摘要:k8s v1.19.0 单节点集群2条长连接 编译二进制并调试 cd cmd/kube-controller-manager && go build # vscode launch.json { "name": "Launch", "type": "go", "request": "launch",
阅读全文
摘要:k8s v1.19.0 单节点集群2条长连接 编译二进制并调试 cd cmd/kube-scheduler && go build # vscode launch.json { "name": "Launch", "type": "go", "request": "launch", "mode":
阅读全文
摘要:单节点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
阅读全文
摘要:klog.InitFlags(nil) flag.Parse() defer klog.Flush() cfg, err := clientcmd.BuildConfigFromFlags("", "/root/.kube/config") if err != nil { klog.Fatalf("
阅读全文
摘要:结构体定义 Timer是一次性定时器,Ticker是周期性定时器,实现相同,系统协程处理所有定时器。 Ticker结构体 C是容量1的channel,如果里面数据没被取走,那么丢失下一个周期事件。 runtimeTimer结构体 这里的回调函数是,向C中存入当前时间。 timersBuckets 数
阅读全文
摘要:// lookup_dns.go package main import ( "net" "time" "k8s.io/klog/v2" ) func main() { dns := "kubernetes.default" if _, err := net.LookupHost(dns); err
阅读全文
摘要:labelOptions := informers.WithTweakListOptions(func(opts *metav1.ListOptions) { opts.LabelSelector = "a=b" }) informerFactory := informers.NewSharedIn
阅读全文