09 2024 档案

go结构体组合
摘要:go没有继承。类似于Java继承,SecurityGroup类继承了SecurityGroupRule列表类。 type SecurityGroup struct { Id string Name string Rules []SecurityGroupRule } type SecurityGro 阅读全文

posted @ 2024-09-28 16:52 王景迁 阅读(22) 评论(0) 推荐(0)

go mod vendor问题
摘要:问题:执行go mod vendor后,项目中增加了import依赖,不会增加go:generate go run后面依赖。解决:为了避免每次go mod拉取依赖,先import它,然后执行go mod vendor,最后删除该import。 阅读全文

posted @ 2024-09-28 16:27 王景迁 阅读(95) 评论(0) 推荐(0)

在线网站工具链接
摘要:功能 地址 不同版本Linux内核代码(支持跳转) https://elixir.bootlin.com/linux/v6.5/source 正则表达式验证 https://www.regexp.cn/Regex json展开 https://www.json.cn ip和主机字节序整数互转 htt 阅读全文

posted @ 2024-09-28 16:19 王景迁 阅读(92) 评论(0) 推荐(0)

go logrus输出json日志并转储
摘要:相比于klog,logrus支持输出json日志,但是默认time不在最前面,而在最后,因为日志输出时按照key字母顺序排序。 go get github.com/sirupsen/logrus go get github.com/natefinch/lumberjack package main 阅读全文

posted @ 2024-09-26 21:47 王景迁 阅读(57) 评论(0) 推荐(0)

go json配置
摘要:问题1:被序列化的结构体首字母必须大写 type Student struct { sex string age int } 如果被序列化的结构体首字母不大写,那么序列化结果是空。 告警内容 struct type 'test/json_config.Student' doesn't have an 阅读全文

posted @ 2024-09-26 20:39 王景迁 阅读(27) 评论(0) 推荐(0)

go panic interface conversion interface {} is float64, not int
摘要:package main import ( "encoding/json" "log" ) type Student struct { Sex string `json:"sex"` Age int `json:"age"` } func main() { s1 := &Student{ Sex: 阅读全文

posted @ 2024-09-26 20:23 王景迁 阅读(67) 评论(0) 推荐(0)

kube-ovn ovn-cni维护主机路由
摘要:kube-ovn v1.10.10 在subnet发生变化时,例如删除pod,ovn-cni更新主机路由,保证节点上只有目的网段ovn-default和join,指向ovn0。 pkg/daemon/controller.go runSubnetWorker ->1 从队列中获取变化的subnet 阅读全文

posted @ 2024-09-25 20:42 王景迁 阅读(33) 评论(0) 推荐(0)

C语言 使用goto语句
摘要:goto语句可以直接完成跳转,在Linux内核代码中频繁出现。匹配上goto的代码块,最后需要加个return,不然会执行后面的代码块。 #include <stdio.h> int main() { printf("1\n"); goto case1; printf("2\n"); case1: 阅读全文

posted @ 2024-09-20 08:28 王景迁 阅读(45) 评论(0) 推荐(0)

kubelet获取pod ip
摘要:k8s v1.19.0 pod ip不是由cni告诉kubelet的,而是kubelet pleg基于nsenter进入network namespace+ip命令查询网卡得到。 pkg/kubelet/pleg/generic.go Start -> relist -> updateCache(更 阅读全文

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

kube-ovn打通节点和容器通信
摘要:kube-ovn v1.12.22 在kube-ovn中,ls是subnet,lr是vpc,ovn0是ovn-default才有的容器网关,即自定义vpc没有ovn0,自定义vpc不支持和k8s节点主机网络互通。 步骤中参数值只是类比,不和截图完全相同。 步骤1:veth和ovn0作为ovs por 阅读全文

posted @ 2024-09-16 12:06 王景迁 阅读(151) 评论(0) 推荐(0)

go-redis写入和读取结构体
摘要:package main import ( "context" "encoding" "encoding/json" "fmt" "log" "github.com/go-redis/redis/v8" ) var _ encoding.BinaryMarshaler = &Student{} va 阅读全文

posted @ 2024-09-15 16:19 王景迁 阅读(100) 评论(0) 推荐(0)

k8s部署单机redis pod
摘要: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 阅读全文

posted @ 2024-09-15 11:14 王景迁 阅读(47) 评论(0) 推荐(0)

ginkgo编写测试用例
摘要:安装依赖 go get github.com/onsi/ginkgo/v2/ginkgo go install github.com/onsi/ginkgo/v2/ginkgo go get github.com/onsi/gomega 运行用例 mkdir test cd test ginkgo 阅读全文

posted @ 2024-09-08 16:24 王景迁 阅读(166) 评论(0) 推荐(0)

MySQL 函数查询返回NULL
摘要:create table user(id bigint primary key auto_increment, age int); gorm使用函数查询时,通过IFNULL来确保查询不到记录时有默认值。 max函数 select max(age) from user; select IFNULL(m 阅读全文

posted @ 2024-09-08 15:31 王景迁 阅读(26) 评论(0) 推荐(0)

kube-controller-manager如何处理多种cr变更
摘要:k8s v1.19.0以deployment controller为例pkg/controller/deployment/deployment_controller.gorun函数处理enqueueDeployment函数写入队列的key namespace/name,与pkg/controller 阅读全文

posted @ 2024-09-08 12:13 王景迁 阅读(25) 评论(0) 推荐(0)

Etcd集群备份失败问题
摘要:问题现象 k8s中etcdctl备份etcd时第2步卡住。 export ETCDCTL_API=3 etcdctl --endpoints 172.18.0.2:2379 snapshot save snapshot.db 问题分析 k8s中执行etcdctl命令时没有指定证书文件路径。 解决问题 阅读全文

posted @ 2024-09-07 18:42 王景迁 阅读(118) 评论(0) 推荐(0)

Etcd集群备份恢复
摘要:安装Etcd集群 docker pull quay.io/coreos/etcd:v3.3.1 docker run -d --name etcd1 quay.io/coreos/etcd:v3.3.1 etcd -name etcd1 -advertise-client-urls http://1 阅读全文

posted @ 2024-09-07 17:48 王景迁 阅读(28) 评论(0) 推荐(0)

curl命令更新k8s cr status
摘要:因为status是cr的subresource,所以不支持使用kubectl直接更新cr status,由controller来更新status。在KubeBuilder框架中,使用xxx.Status().Update(xxx)方式来更新status。在ClientSet中,通过UpdateSta 阅读全文

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

go 使用grpc和grpcurl
摘要:安装依赖和工具 # ubuntu安装protobuf apt install libprotobuf-dev protobuf-compiler protoc-gen-go protoc-gen-go-grpc -y # 查看protobuf版本 protoc --version # 安装grpcu 阅读全文

posted @ 2024-09-07 10:12 王景迁 阅读(248) 评论(0) 推荐(0)

multus实现自定义网卡名字
摘要:安装环境 cat <<EOF | kind create cluster --name test --config - kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 networking: kubeProxyMode: iptables disab 阅读全文

posted @ 2024-09-03 09:18 王景迁 阅读(59) 评论(0) 推荐(0)

导航