摘要:k8s.io/client-go v0.31.2 问题现象 package main import ( "context" "test/signals" "time" core_v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/
阅读全文
摘要:安装nerdctl wget https://github.com/containerd/nerdctl/releases/download/v2.0.0-rc.3/nerdctl-full-2.0.0-rc.3-linux-amd64.tar.gz tar Cxzvvf /usr/local ne
阅读全文
摘要:rbac基于角色的权限控制针对namespace粒度,user-rolebinding-role或者user-group-rolebinding-role;针对cluster粒度,user-clusterrolebinding-clusterrole或者user-group-clusterroleb
阅读全文
摘要:k8s v1.15.0 k8s驱逐pod,一般发生在pod无法容忍节点污点,例如节点上产生磁盘压力。 防止驱逐粒度 方法 kubelet kubelet配置文件/etc/sysconfig/kubelet(低版本)末尾追加内容 --eviction-hard=imagefs.available<1%
阅读全文
摘要:k8s v1.25.0 扩展点 作用 queueSort 待调度队列pod排序 preFilter 预选前预处理 filter 预选 postFilter 预选后处理(可修改pod为可调度) preScore 预打分 score 优选 reserve 资源预留给pod permit 阻止或延迟pod
阅读全文
摘要:bird v0.3.3 问题现象 针对calico bgp peer+ipip模式,单个节点重启,等待4分钟以上,pod跨节点流量才通。 问题分析 calico必须指定bgp模式,通过bird来获取pod ip所在主机ip,bgp建连后在节点上增加目的ip是pod小子网、下一跳是pod所在节点ip、
阅读全文
摘要:针对已删除对象Obj,删除事件因与apiserver断连而丢失,DeletedFinalStateUnknown只会在relist时可能出现,缓存了已被删除对象,放入DeltaFIFO,删除本地缓存对象。 relist场景1:watch超时时间内没有收到事件。2:watch指定的resourceVe
阅读全文
摘要:k8s v1.19.0 pod ip不是由cni告诉kubelet的,而是kubelet pleg基于nsenter进入network namespace+ip命令查询网卡得到。 pkg/kubelet/pleg/generic.go Start -> relist -> updateCache(更
阅读全文
摘要:kind: ConfigMap apiVersion: v1 metadata: name: redis namespace: default labels: app: redis data: redis.conf: |- port 6379 bind 0.0.0.0 dir /data appen
阅读全文
摘要:k8s v1.19.0以deployment controller为例pkg/controller/deployment/deployment_controller.gorun函数处理enqueueDeployment函数写入队列的key namespace/name,与pkg/controller
阅读全文
摘要:因为status是cr的subresource,所以不支持使用kubectl直接更新cr status,由controller来更新status。在KubeBuilder框架中,使用xxx.Status().Update(xxx)方式来更新status。在ClientSet中,通过UpdateSta
阅读全文
摘要:安装环境 cat <<EOF | kind create cluster --name test --config - kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 networking: kubeProxyMode: iptables disab
阅读全文
摘要:问题现象 一般cronjob执行时间会比预期晚8小时。 问题分析 cronjob执行时区以kube-controller-manager为准,而kube-controller-manager默认是0时区。 解决问题 解决方式1kube-controller-manager容器挂载宿主机timezon
阅读全文
摘要:apiVersion: batch/v1 kind: Job metadata: name: test spec: template: metadata: name: test spec: containers: - name: test image: busybox:1.35.0 restartP
阅读全文
摘要:ovs流表刷在br-int网桥上。容器网卡eth0另一端在ovs br-int网桥上。容器网关gw在br-int网桥上,ip地址是从pod网段中分配。br-int网桥上有vxlan类型ovs端口,用于封包和解包。 同节点 主机->容器 路由判断->iptables OUTPUT->iptables
阅读全文
摘要:问题现象 k8s集群外节点192.168.0.112创建路由,可以访问到k8s集群内节点pod ip。 ip route add 10.16.0.0/16 via 192.168.0.105 dev ens33 目的网段是容器网段,下一跳是k8s节点ip 192.168.0.105,相当于flann
阅读全文
摘要:klog.InitFlags(nil) flag.Parse() defer klog.Flush() cfg, err := clientcmd.BuildConfigFromFlags("", "/root/.kube/config") cfg.QPS = 10000 cfg.Burst = 2
阅读全文
摘要:alias k=kubectl 操作kubeconfig # 查看context k config get-contexts # 切换context k config use-context contextName # 使用context访问 k --context=contextName get
阅读全文
摘要:问题现象 iptables -t nat -I OUTPUT -d 10.10.10.10 -p tcp --dport 443 -j DNAT --to-destination 192.168.0.105:6443 # 报错requested domain name does not match
阅读全文
摘要:问题现象 使用kubeconfig时,报错the server localhost:8080 was refused。 问题分析 对比正常kubeconfig,缺少current-context。 解决问题 kubectl --kubeconfig=config config use-context
阅读全文