05 2024 档案

client-go创建完资源后不是立刻更新本地缓存
摘要:klog.InitFlags(nil) flag.Parse() defer klog.Flush() cfg, err := clientcmd.BuildConfigFromFlags("", "/root/.kube/config") cfg.QPS = 10000 cfg.Burst = 2 阅读全文

posted @ 2024-05-31 08:42 王景迁 阅读(45) 评论(0) 推荐(0)

ovn trace
摘要:ovn南向db leader中支持出方向和入方向trace。 # 查看南向逻辑流表 ovn-sbctl lflow-list # 查看port ovn-nbctl show # 追踪包 ovn-trace --detailed ovn-default 'inport == "coredns-5d78 阅读全文

posted @ 2024-05-26 11:23 王景迁 阅读(57) 评论(0) 推荐(0)

Linux使用ecmp
摘要: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 阅读全文

posted @ 2024-05-23 09:08 王景迁 阅读(213) 评论(0) 推荐(0)

k8s常用运维命令
摘要:alias k=kubectl 操作kubeconfig # 查看context k config get-contexts # 切换context k config use-context contextName # 使用context访问 k --context=contextName get 阅读全文

posted @ 2024-05-21 09:17 王景迁 阅读(105) 评论(0) 推荐(0)

Etcd线性读和串行读区别
摘要:默认读模式线性读。串行读模式可能读到老数据,适用于数据一致性要求低的场景。因为Followe节点收到Leader节点同步的写请求后,异步更新日志条目到自己的状态机,本地状态机数据可能落后于Leader。线性读模式读取到最新数据,适用于数据一致性要求高的场景。Follower向Leader发送Read 阅读全文

posted @ 2024-05-20 09:14 王景迁 阅读(149) 评论(0) 推荐(0)

eBPF常用map类型和操作
摘要: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塞满之后,继续插入,自动删除最近 阅读全文

posted @ 2024-05-19 16:58 王景迁 阅读(212) 评论(0) 推荐(0)

Etcd开启grpc请求耗时监控
摘要:针对各种类型grpc请求耗时统计场景,etcd提供监控数据。 # etcd容器增加环境变量 env: - name: ETCD_METRICS value: extensive curl -s http://127.0.0.1:2381/metrics | grep grpc_server_hand 阅读全文

posted @ 2024-05-13 22:40 王景迁 阅读(84) 评论(0) 推荐(0)

Etcd开启trace
摘要:针对处理耗时超过100ms的grpc请求,etcd打印包含耗时长的阶段的trace日志。 # etcd容器增加环境变量 env: - name: ETCD_LOGGER value: zap trace日志举例 { "level": "info", "ts": "2024-05-13T14:16:4 阅读全文

posted @ 2024-05-13 22:23 王景迁 阅读(95) 评论(0) 推荐(0)

Linux物理机常见CPU模式
摘要:虚拟机没有CPU模式。 CPU模式 含义 performance 性能模式,CPU当前主频是最高主频,代码执行效率高。 powersave 节能模式,CPU当前主频是最低主频,代码执行效率低。 查看当前CPU模式 cat /sys/devices/system/cpu/cpu0/cpufreq/sc 阅读全文

posted @ 2024-05-13 21:41 王景迁 阅读(529) 评论(0) 推荐(0)

经过dnat后访问kube-apiserver证书认证失败
摘要:问题现象 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 阅读全文

posted @ 2024-05-08 23:53 王景迁 阅读(64) 评论(0) 推荐(0)

使用kubeconfig报错localhost 8080 was refused
摘要:问题现象 使用kubeconfig时,报错the server localhost:8080 was refused。 问题分析 对比正常kubeconfig,缺少current-context。 解决问题 kubectl --kubeconfig=config config use-context 阅读全文

posted @ 2024-05-08 22:37 王景迁 阅读(37) 评论(0) 推荐(0)

非k8s Etcd集群单个实例无法连上其他2个后反复重启
摘要:通过kind部署3个etcd实例构成的k8s集群。 cat <<EOF | kind create cluster --name test --config - kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 networking: kubeProx 阅读全文

posted @ 2024-05-07 09:19 王景迁 阅读(29) 评论(0) 推荐(0)

kube-apiserver连不上etcd后会重启
摘要:k8s v1.19.0 kube-apiserver配置 参数etcd-servers中地址可以填多个,填了多个地址后kube-apiserver会连上所有,不加https不影响。 停止etcd后,kube-apiserver容器会反复重启。 阅读全文

posted @ 2024-05-07 08:54 王景迁 阅读(129) 评论(0) 推荐(0)

C语言 子进程段错误后变成僵尸进程
摘要:空指针获取首元素时出现段错误,子进程异常退出,父进程没有处理。 #include <stdio.h> #include <unistd.h> int main() { pid_t pid; pid = fork(); if (pid > 0) { printf("father process is 阅读全文

posted @ 2024-05-05 15:05 王景迁 阅读(34) 评论(0) 推荐(0)

C语言 根据子串切割字符串
摘要:#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 阅读全文

posted @ 2024-05-05 10:47 王景迁 阅读(21) 评论(0) 推荐(0)

C语言 父子进程不能共享全局变量
摘要:父子进程不能共享全局变量。父子进程中的任何一方修改了全局变量,只是修改了副本,只对自己可见,对另一方不可见。C语言中即使加了static也不行。 #include <stdio.h> #include <unistd.h> // 初始值是0 int flag; int main() { pid_t 阅读全文

posted @ 2024-05-05 10:10 王景迁 阅读(160) 评论(0) 推荐(0)

kind部署k8s集群
摘要:kube-ovn # docker容器作为k8s node,容器里面通过containerd拉起Pod。 cat <<EOF | kind create cluster --name kube-ovn --config - kind: Cluster apiVersion: kind.x-k8s.i 阅读全文

posted @ 2024-05-05 09:29 王景迁 阅读(135) 评论(0) 推荐(0)

kube-ovn中ovn-cni如何访问ovs
摘要: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 阅读全文

posted @ 2024-05-05 09:09 王景迁 阅读(75) 评论(0) 推荐(0)

eBPF约束
摘要:内核态约束 1. 内核态eBPF无法使用C语言标准库。因为不支持malloc,所以无法扩展skb空间且无法直接从内核态拷贝整个报文到用户态。2. 内核态eBPF无法获取当前时间,bpf_ktime_get_ns函数返回系统启动后运行纳秒数,不包括系统暂停时间。 https://www.man7.or 阅读全文

posted @ 2024-05-05 08:18 王景迁 阅读(157) 评论(0) 推荐(0)

kube-ovn cni处理流程
摘要:kubelet调用二进制文件/opt/cni/bin/kube-ovn。 cmd/cni/cni.go创建和删除分别对应cmdAdd和cmdDel函数。pkg/request/cniserver.go二进制文件/opt/cni/bin/kube-ovn调用本地unix socket,把cni请求转发 阅读全文

posted @ 2024-05-04 17:05 王景迁 阅读(56) 评论(0) 推荐(0)

kube-ovn南向db chassis id
摘要:dist/images/start-ovs.shovn-controller启动时,执行start-ovs.sh,会向南向db上报随机生成的system-id。 system-id保存到了容器本地db中。 cat /etc/openvswitch/conf.db | grep "bb65f74d-9 阅读全文

posted @ 2024-05-04 16:34 王景迁 阅读(51) 评论(0) 推荐(0)

eBPF基于LPM实现路由匹配
摘要:基于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 阅读全文

posted @ 2024-05-04 11:26 王景迁 阅读(197) 评论(0) 推荐(0)

MySQL分页查询优化
摘要: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 阅读全文

posted @ 2024-05-03 21:18 王景迁 阅读(44) 评论(0) 推荐(0)

容器化部署Tengine worker数量问题
摘要:当容器化部署Tengine时,worker数量默认是cpu数量。 https://tengine.taobao.org/document_cn/core_cn.html 对应/etc/nginx/nginx.conf数量配置是4。 容器中cpu数量是节点cpu数量,Nginx不需要这么多worker 阅读全文

posted @ 2024-05-03 20:28 王景迁 阅读(41) 评论(0) 推荐(0)

使用GPU
摘要:使用场景 物理机上GPU卡被挂载到容器中,容器中安装GPU驱动来管理GPU。 约束 k8s对GPU设备的管理只能处理设备个数这一种情况。GPU产品有AMD和NVIDIA,在k8s中对应amd.com/gpu和nvidia.com/gpu。GPU数量只能设置在limits,requests默认与lim 阅读全文

posted @ 2024-05-03 16:30 王景迁 阅读(64) 评论(0) 推荐(0)

GPU插件介绍
摘要:对于NVIDIA GPU,存在3种设备插件的实现。 官方NVIDIA GPU插件 要求1. 节点安装了NVIDIA驱动。2. 节点安装nvidia-docker 2.0。3. Docker的默认运行时必须设置为nvidia-container-runtime,而不是runc。4. NVIDIA 驱动 阅读全文

posted @ 2024-05-03 15:25 王景迁 阅读(135) 评论(0) 推荐(0)

增加调用链来获取chown的调用方
摘要:# 重命名/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 > 阅读全文

posted @ 2024-05-03 15:00 王景迁 阅读(18) 评论(0) 推荐(0)

execsnoop排查ovs短时进程导致CPU升高
摘要:问题现象 节点CPU间隔一段时间后会冲高。通过execsnoop捕捉到在创建网桥(删除网桥捕捉不到,因为删除时不需要确认状态)。 # 安装execsnoop git clone --depth 1 https://github.com/brendangregg/perf-tools ./perf-t 阅读全文

posted @ 2024-05-03 14:27 王景迁 阅读(59) 评论(0) 推荐(0)

容器因存在不可删除文件而无法删除
摘要:# 容器开启特权,设置文件不可删除 touch a chattr +a a 可以stop,但是无法rm。 去掉可读写层overlay2 upperdir中/a文件不可删除属性后,容器可以删除。 阅读全文

posted @ 2024-05-03 10:40 王景迁 阅读(35) 评论(0) 推荐(0)

Etcd因磁盘IO高而写操作慢
摘要:问题现象 now := time.Now() if err := kubeClient.CoreV1().Pods("default").Delete(context.Background(), "busybox-7879d986c8-q99t5", metav1.DeleteOptions{}); 阅读全文

posted @ 2024-05-02 17:08 王景迁 阅读(98) 评论(0) 推荐(0)

klog在日志文件中error级别日志重复打印2次
摘要:问题现象 package main import ( "flag" "gopkg.in/natefinch/lumberjack.v2" "k8s.io/klog/v2" ) func main() { klog.InitFlags(nil) flag.Set("logtostderr", "fal 阅读全文

posted @ 2024-05-02 09:57 王景迁 阅读(161) 评论(0) 推荐(0)

kube-ovn 默认vpc和默认subnet 主机和容器互通
摘要:默认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关联在一起 阅读全文

posted @ 2024-05-01 16:47 王景迁 阅读(92) 评论(0) 推荐(0)

导航