摘要:/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":
阅读全文
摘要:klog.InitFlags(nil) flag.Parse() defer klog.Flush() cfg, err := clientcmd.BuildConfigFromFlags("", "/root/.kube/config") if err != nil { klog.Fatalf("
阅读全文
摘要:labelOptions := informers.WithTweakListOptions(func(opts *metav1.ListOptions) { opts.LabelSelector = "a=b" }) informerFactory := informers.NewSharedIn
阅读全文
摘要:k8s v1.19.0 staging/src/k8s.io/apiserver/pkg/storage/cacher/cacher.go List方法(client-go Lister的List方法在找不到时不会报错not found) staging/src/k8s.io/apiserver/p
阅读全文
摘要:informer cache默认通过namespace/name作为key把对象保存到map中。条件查询时一般通过labels.Selector来过滤,但这需要遍历所有元素,informer cache可以类似于MySQL那样建立索引,来提高查询速度。 // map根据指定的key来给对象分类 //
阅读全文
摘要:k8s v1.19.0 默认情况下,k8s不支持多个cni插件混用。在/etc/cni/net.d存在多个cni配置时,dockershim只会加载按字母顺序排序的第1个插件。 cmd/kubelet/app/options/container_runtime.goNewContainerRunti
阅读全文
摘要:func addListWatchCfgAndClient() { cfg, err := clientcmd.BuildConfigFromFlags("", "/root/.kube/config") if err != nil { klog.Fatalf("Error building kub
阅读全文
摘要:k8s v1.19.0 场景1:同步时连不上kube-apiserver会一直阻塞 WaitForCacheSync一直阻塞,直到成功或者控制器停止。 W0115 13:01:55.329881 18339 reflector.go:535] pkg/mod/k8s.io/client-go@v0.
阅读全文
摘要:单节点k8s集群 v1.19.0 服务创建的https连接数量 client-go用于访问kube-apiserver,可以list/watch k8s资源。 组件名称 访问kube-apiserver方式 单个实例的https连接数 kube-scheduler 本机ip 2 kube-contr
阅读全文
摘要:go.mod module lumberjack go 1.19 require ( gopkg.in/natefinch/lumberjack.v2 v2.2.1 k8s.io/klog/v2 v2.100.1 ) require github.com/go-logr/logr v1.2.0 //
阅读全文
摘要:k8s v1.19.0 pkg\kubeapiserver\options\serving.goNewInsecureServingOptions函数 启动参数insecure-port设为0,不再开启非安全端口。staging\src\k8s.io\apiserver\pkg\server\opt
阅读全文
摘要:kubelet与cni插件交互流程 kubelet调用cni走二进制接口,与cri和csi走rpc不同。cri plugin创建pod net ns->cni plugin创建容器网卡并分配ip->cri plugin创建pause容器并加入pod net ns flannel cni插件工作流程
阅读全文
摘要:计数器 在固定时间间隔内,处理请求有上限,请求超出部分丢弃。 package main import ( "sync" "time" klog "k8s.io/klog/v2" ) type counterRateLimiter struct { m sync.Mutex startPartTime
阅读全文
摘要:k8s v1.19.0 请求处理的多个阶段 阶段 含义 RequestReceived 收到请求 ResponseStarted 已发送响应头,但未发送响应正文。 ResponseComplete 完成响应正文,流程结束。 Panic 内部处理出错,未完成请求。 审核级别level 级别 含义 No
阅读全文
摘要:go.mod module use-k8s-queue go 1.19 require k8s.io/client-go v0.28.2 require ( github.com/go-logr/logr v1.2.4 // indirect golang.org/x/time v0.3.0 //
阅读全文
摘要:1. kube-scheduler调度时参考requests.cpu。2. cpu不足时,requests.cpu越大,cpu.shares越大,越容易抢占cpu。
阅读全文
摘要:k8s v1.19.0 透过kube-apiserver缓存,从etcd中根据label来获取数据。 staging\src\k8s.io\apiserver\pkg\registry\generic\registry\store.goList方法 staging\src\k8s.io\apiser
阅读全文