摘要:参考项目https://github.com/alibaba/open-local v0.7.1 NodeLocalStorage定义 NodeLocalStorage cr表示每个k8s节点本地存储资源信息。controller创建后由节点上agent更新status,从而维护存储信息。 apiV
阅读全文
摘要:InClusterConfig方法 package main import ( "context" "test/signals" "time" "os" core_v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1
阅读全文
摘要:k8s v1.19.0 结论 pv-controller创建pv,完成pvc与pv的绑定。无论是WaitForFirstConsumer还是Immediate,挑选pv时都是选择满足pvc的accessMode和容量前提下最接近容量要求的pv。 1. 如果StorageClass中volumeBin
阅读全文
摘要:k8s 1.19.0 默认从unschedulableQ出来,说明已经退避完成。 pkg/scheduler/scheduler.goRun方法 pkg/scheduler/internal/queue/scheduling_queue.goRun方法 上次调度失败时间+2^(尝试调度次数-1)s小
阅读全文
摘要:6种namespace Namespace弊端 最主要的问题就是隔离得不彻底。首先,多个容器之间共享内核。其次,有很多资源是不能被Namespace化的,例如时间。 Network Namespace 进入Docker的network namespace docker把所有容器的Network Na
阅读全文
摘要: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
阅读全文