- 博客(240)
- 资源 (51)
- 问答 (1)
- 收藏
- 关注

原创 CNCF随笔
1、kustomizekustomize和helm一样是k8s的yaml包管理工具,相较于Helm不需要学习一套特定领域配置语言,且是k8s官方的并集成进了kubectl。常见的术语:kustomization 指的是 kustomization.yaml 文件,或者指的是包含 kustomization.yaml 文件的目录以及它里面引用的所有相关文件路径;base 指的是一个 kustomization , 任何的 kustomization 包括 overlay,都可以作为另一个 kusto
2022-05-04 22:15:30
539

原创 K8s随笔
1、CRD.yaml编写:CRD的type:integer类型--reconcile的int类型,CRD的format:float64 type:number类型--reconcile的float64类型
2021-10-22 13:49:00
521
原创 k8s-List机制及resourceVersion语义
kube-apiserver 核心职责提供Restful API;代理集群组件,如dashboard、流式日志、kubectl exec 会话;缓存全量的etcd 数据且无状态服务可水平扩展。
2022-11-20 22:57:14
323
原创 k8s之滚动更新及pod流量分析
Pod 被删除后,状态被 endpoint-controller 和 kubelet 订阅,并分别执行移除 Endpoint 和删除 Pod 操作,但是两个操作并非我们预期的先移除 Endpoint 后再删除 Pod,而是是同时进行的,因此有可能会出现在 Pod 已经接收到了 SIGTERM 信号但仍然有流量进入的情况。
2022-11-06 21:43:02
864
原创 Golang之mysql
github.com/jinzhu/gorm 是Gorm v1的地址;gorm.io/gorm 是Gorm v2的地址;
2022-10-22 20:55:42
468
原创 k8s之三大探针
livenessProbe存活性探针,用于判断容器是不是健康,如果不满足健康条件,那么 Kubelet 会杀死容器,并根据restartPolicy重启策略(Always,OnFailure,Never)来判断Pod 是否要进行重启操作;readinessProbe 就绪性探针,用于判断容器内的程序是否存活,如果不满足健康条件,那么会自动从Service的 EndPoint 列表中去除该pod的 IP:Port;startupProbe启动探针,k8s1.16新增,主要解决在慢启动程序或复杂程序中rea
2022-09-20 21:25:13
1072
原创 k8s之从internal version到runtime.codec
介绍k8s internal version 和 runtime.serializer 以及 runtime.codec
2022-09-03 18:28:49
220
原创 DevOps随笔
GitOps是将Git作为CI/CD流水线的核心,将应用程序和应用部署计划都存放在Git版本库中,每个开发人员都可以使用Git来加速和简化应用程序部署和运维任务。
2022-07-23 17:36:43
137
原创 k8s之删除机制
1、finalizers: 对象终结器,列表内的键为空时资源才可被删除。当我们删除带有 finalizers 字段的对象时,该对象首先会被添加 deletionTimestamp(删除时间戳)字段,并一直处于预删除只读状态(删除终结器键更新除外),直到某些控制器删除或使用 Kubectl 删除该对象终结器之前,真正的删除都不会完成,同时一旦终结器列表为空,k8s gc就会回收该对象,将其放入要从注册表中删除的队列中。2、owner references: 所有者引用,即父资源对象是谁...
2022-05-30 10:52:59
904
1
原创 k8s之认证鉴权准入控制
k8s认证,Authentication,检查用户是否为合法用户。认证方式有很多,常用的是 X509 Client Certs(用于外部用户如kubectl)和Service Accout Tokens(用于pod中进程),kubeconfig使用X509 Client Certs方式。同时ServiceAccount Resource中主要包含了三个内容:namespace、token和ca.crt,其中namespace表示当前管理的命名空间;ca.crt用于校验服务端的的证书信息,即apiserve
2022-04-29 16:57:09
512
原创 社区的代码规范及e2e测试
golangci-lint静态代码检查工具,是对golint、gofmt的集成,速度更快。1、安装go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.38.0golangci-lint run [目录]/[文件]最新的版本是1.42.0,社区使用的是1.38.0,总体来说是规则越来越严,和社区保持一致;Lintersdeadcode,未使用函数和方法的检查; errcheck,未处理错误,例子+1;
2022-03-13 17:26:24
1211
原创 Golang之cuelang.org/go/cue包
1111111package mainimport ( "cuelang.org/go/cue" "encoding/json" "fmt" "github.com/oam-dev/kubevela/apis/core.oam.dev/common" "github.com/oam-dev/kubevela/apis/core.oam.dev/v1alpha1")type EnvConfig struct { Gender string
2022-03-04 10:14:52
460
原创 k8s之VelaQL简单理解
Application对象对底层资源进行封装,屏蔽了底层基础架构,但是这样对Application创建资源状态的监控,只能依赖Application的状态透出,但状态信息简略、状态实时反馈性差,VelaQL就是为了提升Application的可观测性,用于查询应用级别的资源状态。velaQL 对标的是 PromQL ,我们期望能够成为应用监控领域的 Prometheus
2022-02-28 11:15:00
243
原创 k8s之cue模板
CUE能够安全地更改可修改配置中成千上万个对象的值。1、数据类型:int、float、bool、string、array、struct、null2、运算符#定义变量: #abc: string3、运算符...定义开放的结构体和数组: 数组对象[...string],说明该对象可以容纳多个字符串元素结构体对象{abc: string ...}说明结构体可以包含未知字段4、运算符 | 表示两种类型的值。a: string | int说明变量 a 表示类型可以是字......
2022-02-12 16:43:02
741
原创 Golang之理解错误输出
第一行是panic 错误描述;第二行是触发panic的UNIX信号的信息,包括内存地址、程序计数器等;后边是:栈帧信息触发panic的go代码行栈帧信息触发panic的go代码行
2022-02-10 21:37:46
209
原创 K8s之ControllerRateLimiter简单理解
1、RateLimiter实现了对于队列元素的重试规则,包括三个函数When获取某个元素应该等待的时间,Forget释放某个元素不再监测,NumRequeues返回该元素已经失败重试的次数。2、RateLimiter主要有四种类型:主要行为表现在当某一事件元素失败后,等待时间的计算规则不一致。BucketRateLimiter令牌桶算法,可以控制在一定频率来执行; ItemExponentialFailureRateLimiter根据失败次数按指数延时; ItemFastSlowRate
2022-02-10 09:38:13
600
1
原创 k8s之kubebuilder简单理解
kubebuilder流程1、创建manager,ctrl.NewManager,包括设置 shemme和端口、选主信息等配置、NewCluster(用来访问k8s,主要包括newCache和New读写client)、newEventRecorder。1.1、newCache包括创建informerMap,分为structured、unstructured与metadata,其实最终都是调用newSpecificInformersMap,在newSpecificInformersMap中通过creat
2022-01-29 17:04:57
2213
原创 Golang之pprof使用
1、配置import_ "net/http/pprof"go func() {http.ListenAndServe("0.0.0.0:8899", nil)}()访问http://127.0.0.1:8899/debug/pprof/2、采样频率3、下载profile的接口1、/debug/pprof/profile?seconds=30:访问这个链接会自动进行 CPU profiling,持续 30s,并生成一个文件供下载2、/debug/...
2022-01-25 16:57:35
898
原创 k8s之listwatch与informer简单理解
informer简介Informer是一个能够缓存apiserver的对象到本地、具有索引机制、并可以注册 EventHandler 的 client。使用 informer 的目的是为了减轻 apiserver 数据交互的压力,其中本地缓存被称为 Store,索引被称为 Index。Informer流程:informer的listandwatch机制,默认是每10h从apiserver中整体list一次,有add、delete等事件时会通过watch机制把这个事件+对象放到deltaFIFO中,然后
2022-01-18 19:53:40
1403
原创 Golang之函数选项模式
仅做记录/* Functional Options函数选项模式(简称FOP模式) 既保持了兼容性,而且每增加1个新属性只需要1个With函数即可,大大减少了修改代码的风险*/package mainimport "fmt"/* Functional Options函数选项模式(简称FOP模式) 既保持了兼容性,而且每增加1个新属性只需要1个With函数即可,大大减少了修改代码的风险*/type Student struct { Name string Age .
2022-01-05 11:19:20
177
原创 无缓冲channel的内存泄漏问题
无缓冲channel的内存泄漏问题:无缓冲channel在go程里done <- hardWork(job)时,如果外层执行完了后,done <- hardWork(job)写操作<- 会一直阻塞func requestWork(ctx context.Context, job interface{}) error { ctx, cancel := context.WithTimeout(ctx, time.Second*2) defer cancel()
2021-12-27 20:54:36
201
原创 Golang之Go Module使用
(1)gomod命令命令 作用go mod init 生成 go.mod 文件go mod download 下载 go.mod 文件中指明的所有依赖go mod tidy 整理现有的依赖go mod graph 查看现有的依赖结构go mod edit 编辑 go.mod 文件go mod vendor 导出项目所有的依赖到vendor目录go mod verify 校...
2021-12-22 20:10:54
504
加密算法类描述.zip
2020-08-12
基于用户的协同过滤算法py3.x
2018-05-03
简单的python创建读写文件脚本
2017-11-14
IM-fourier.rar
2020-10-26
redis+消息队列_20200728.docx
2020-07-28
大学计算机作业爬虫+matplotlib.rar
2019-06-21
元学习论文Optimization as a model for few-shot learning的简单理解_详细注释
2019-02-26
One-shot learning with Memory-Augmented Neural Networks
2019-01-21
hadoop2.6提交jar包时卡在Running job
2017-10-23
TA创建的收藏夹 TA关注的收藏夹
TA关注的人