摘要:klog.InitFlags(nil) flag.Parse() defer klog.Flush() cfg, err := clientcmd.BuildConfigFromFlags("", "/root/.kube/config") cfg.QPS = 10000 cfg.Burst = 2
阅读全文
摘要:ovn南向db leader中支持出方向和入方向trace。 # 查看南向逻辑流表 ovn-sbctl lflow-list # 查看port ovn-nbctl show # 追踪包 ovn-trace --detailed ovn-default 'inport == "coredns-5d78
阅读全文
摘要:Ubuntu 23.10 ECMP等价多路径,全称是Equal Cost Multi Path,支持目的IP相同而下一跳不同的路由。 # 172.17.0.2 docker run --name test1 -itd nginx:1.9 # 172.17.0.3 docker run --name
阅读全文
摘要:alias k=kubectl 操作kubeconfig # 查看context k config get-contexts # 切换context k config use-context contextName # 使用context访问 k --context=contextName get
阅读全文
摘要:默认读模式线性读。串行读模式可能读到老数据,适用于数据一致性要求低的场景。因为Followe节点收到Leader节点同步的写请求后,异步更新日志条目到自己的状态机,本地状态机数据可能落后于Leader。线性读模式读取到最新数据,适用于数据一致性要求高的场景。Follower向Leader发送Read
阅读全文
摘要:map种类 map类型 特点 Hash Map BPF_MAP_TYPE_HASH hash map。 支持value并发更新。 BPF_MAP_TYPE_PERCPU_HASH per core的hash map。 BPF_MAP_TYPE_LRU_HASH map塞满之后,继续插入,自动删除最近
阅读全文
摘要:针对各种类型grpc请求耗时统计场景,etcd提供监控数据。 # etcd容器增加环境变量 env: - name: ETCD_METRICS value: extensive curl -s http://127.0.0.1:2381/metrics | grep grpc_server_hand
阅读全文
摘要:针对处理耗时超过100ms的grpc请求,etcd打印包含耗时长的阶段的trace日志。 # etcd容器增加环境变量 env: - name: ETCD_LOGGER value: zap trace日志举例 { "level": "info", "ts": "2024-05-13T14:16:4
阅读全文
摘要:虚拟机没有CPU模式。 CPU模式 含义 performance 性能模式,CPU当前主频是最高主频,代码执行效率高。 powersave 节能模式,CPU当前主频是最低主频,代码执行效率低。 查看当前CPU模式 cat /sys/devices/system/cpu/cpu0/cpufreq/sc
阅读全文
摘要:问题现象 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
阅读全文
摘要:通过kind部署3个etcd实例构成的k8s集群。 cat <<EOF | kind create cluster --name test --config - kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 networking: kubeProx
阅读全文
摘要:k8s v1.19.0 kube-apiserver配置 参数etcd-servers中地址可以填多个,填了多个地址后kube-apiserver会连上所有,不加https不影响。 停止etcd后,kube-apiserver容器会反复重启。
阅读全文
摘要:空指针获取首元素时出现段错误,子进程异常退出,父进程没有处理。 #include <stdio.h> #include <unistd.h> int main() { pid_t pid; pid = fork(); if (pid > 0) { printf("father process is
阅读全文
摘要:#include <stdio.h> #include <string.h> int main() { char url[2][20]; if (sscanf("https://www.baidu.com", "%[^//]//%s", url[0], url[1]) == -1) { printf
阅读全文
摘要:父子进程不能共享全局变量。父子进程中的任何一方修改了全局变量,只是修改了副本,只对自己可见,对另一方不可见。C语言中即使加了static也不行。 #include <stdio.h> #include <unistd.h> // 初始值是0 int flag; int main() { pid_t
阅读全文
摘要:kube-ovn # docker容器作为k8s node,容器里面通过containerd拉起Pod。 cat <<EOF | kind create cluster --name kube-ovn --config - kind: Cluster apiVersion: kind.x-k8s.i
阅读全文
摘要:ovs-ovn pod把ovs的db.sock暴露在宿主机上。 ovn-cni pod挂载该目录到容器中。 ovs db socket默认路径就在/run/openvswitch/db.sock。 # 拷贝ovn-cni pod中ovs-vsctl到pod所在宿主机上 kubectl cp -n k
阅读全文
摘要:内核态约束 1. 内核态eBPF无法使用C语言标准库。因为不支持malloc,所以无法扩展skb空间且无法直接从内核态拷贝整个报文到用户态。2. 内核态eBPF无法获取当前时间,bpf_ktime_get_ns函数返回系统启动后运行纳秒数,不包括系统暂停时间。 https://www.man7.or
阅读全文
摘要:kubelet调用二进制文件/opt/cni/bin/kube-ovn。 cmd/cni/cni.go创建和删除分别对应cmdAdd和cmdDel函数。pkg/request/cniserver.go二进制文件/opt/cni/bin/kube-ovn调用本地unix socket,把cni请求转发
阅读全文
摘要:dist/images/start-ovs.shovn-controller启动时,执行start-ovs.sh,会向南向db上报随机生成的system-id。 system-id保存到了容器本地db中。 cat /etc/openvswitch/conf.db | grep "bb65f74d-9
阅读全文
摘要:基于eBPF lpm map,icmp只有匹配上路由才能通。 最终目录结构 效果展示 启动应用前,可以ping通192.168.0.1和192.168.0.105。 启动应用后,无法ping通192.168.0.1,可以ping通192.168.0.105。 停止应用后,可以ping通192.168
阅读全文
摘要:CREATE TABLE teacher( `id` BIGINT(20) NOT NULL AUTO_INCREMENT PRIMARY KEY, `teacher_id` CHAR(30) NOT NULL UNIQUE KEY, `name` VARCHAR(30) NOT NULL )ENG
阅读全文
摘要:当容器化部署Tengine时,worker数量默认是cpu数量。 https://tengine.taobao.org/document_cn/core_cn.html 对应/etc/nginx/nginx.conf数量配置是4。 容器中cpu数量是节点cpu数量,Nginx不需要这么多worker
阅读全文
摘要:使用场景 物理机上GPU卡被挂载到容器中,容器中安装GPU驱动来管理GPU。 约束 k8s对GPU设备的管理只能处理设备个数这一种情况。GPU产品有AMD和NVIDIA,在k8s中对应amd.com/gpu和nvidia.com/gpu。GPU数量只能设置在limits,requests默认与lim
阅读全文
摘要:对于NVIDIA GPU,存在3种设备插件的实现。 官方NVIDIA GPU插件 要求1. 节点安装了NVIDIA驱动。2. 节点安装nvidia-docker 2.0。3. Docker的默认运行时必须设置为nvidia-container-runtime,而不是runc。4. NVIDIA 驱动
阅读全文
摘要:# 重命名/usr/bin/chown二进制文件为real_chown mv /usr/bin/chown /usr/bin/real_chown # 编写脚本来调用real_chown vim /usr/bin/chown chown_log="/var/log/chown.log" date >
阅读全文
摘要:问题现象 节点CPU间隔一段时间后会冲高。通过execsnoop捕捉到在创建网桥(删除网桥捕捉不到,因为删除时不需要确认状态)。 # 安装execsnoop git clone --depth 1 https://github.com/brendangregg/perf-tools ./perf-t
阅读全文
摘要:# 容器开启特权,设置文件不可删除 touch a chattr +a a 可以stop,但是无法rm。 去掉可读写层overlay2 upperdir中/a文件不可删除属性后,容器可以删除。
阅读全文
摘要:问题现象 now := time.Now() if err := kubeClient.CoreV1().Pods("default").Delete(context.Background(), "busybox-7879d986c8-q99t5", metav1.DeleteOptions{});
阅读全文
摘要:问题现象 package main import ( "flag" "gopkg.in/natefinch/lumberjack.v2" "k8s.io/klog/v2" ) func main() { klog.InitFlags(nil) flag.Set("logtostderr", "fal
阅读全文
摘要:默认vpc是ovn-cluster,默认subnet是ovn-default。ovn0是默认容器网关,ip是100.64.0.0/16网段。 为了打通主机和容器,kube-ovn-controller会通过建立peer端口把100.64.0.0/16网段即ls与ovn-cluster即lr关联在一起
阅读全文