xfsquota:一个便捷的管理xfs磁盘配额的命令行工具 源码地址:https://github.com/silenceper/xfsquota动机在Linux有一个xfs_quota(在xfsprogs工具包下)命令行工具,为什么还用golang实现了?最近要实现磁盘quota的控制,同时觉得看了docker内的源码,都是利用cgo的方式来实现的,如果直接用xfs_quota的方式查看配额,无法直观的看到某一个目录下的配额,只...
emptyDir 通过xfs_quota强制限制大小 emptyDir支持三种类型的,通过设置 medium 字段 :文件:默认情况Memory:占用内存资源HugePagessizeLimit默认行为同时支持通过sizeLimit设置限制...
Kubernetes CSI(二):如何编写一个CSI插件 这里以csi-driver-host-path作为例子,来看看是如何实现一个csi插件的?目标:支持PV动态创建,并且能够挂载在POD中volume来自本地目录,主要是模拟volume产...
Kubernetes CSI(一):介绍 容器存储接口(CSI)是用于将任意块和文件存储系统暴露给诸如Kubernetes之类的容器编排系统(CO)上的容器化工作负载的标准。使用CSI的第三方存储提供商可以编写和部署在Kuber...
源码分析:KEDA内部是如何工作的? 文章中源码是基于KEDA 2.0( 50bec80)来进行分析keda 2.0 安装要求k8s集群版本 >=1.16KEDA 在2020年11月4号release了2.0版本,包含...
使用keda完成基于事件的弹性伸缩 文章中使用的是keda 1.5版本,2.0目前是beta版本。1.5版本支持deployment,job两种资源。而在2.0增加了StatefulSet以及自定义资源keda 是一个支持...
将镜像tar包通过API直接push到registry仓库 为了实现docker tar包能够直接通过页面上传,调研了一下registry的api,以及如何解析tar包(其实就是docker daemon程序实现的部分)。要想实现,首先要了解do...
在x86_64机器上构建arm64镜像 有几种办法可以打包出arm64的镜像直接在arm机器上执行编译和打包通过qemu模拟arm环境利用docker提供的buildx(需要启用试验性特性)我没有arm的机器~,所以我主要试了...
如何在K8S中创建一个自定义Controller? 目的CRD资源定义代码生成Controller编写目的Custom Resource是扩展Kubernetes的一种方式(另外一种就是通过聚合层API apiserver-aggrega...
用vim保存文件和echo命令到底有什么不同? 现象最近在调试一个filebeat程序时需要制造一些log,我是直接使用vim直接对文件打开然后直接保存的。但是有个奇怪的现象:每次写入一行新的日志,filebeat都会将整个文件的内容...
postgres入门 最近需要将mysql数据库切换到pg数据库,所以对pg进行基本学习了下,总体感觉相差不大,在一些细节以及需要上可能需要注意。安装我这里是以docker的方式来进行安装的。这种安装方式只能...
记一次问题排查:为什么在POD无法通过Service访问自己? 问题现象创建一个nginx pod,并配置了service访问,service后端指向pod。进入pod中使用service ip 或者service 域名,无法访问。一开始以为是环境配...
推荐一个Go包:singleflight使用以及原理 singleflight 包主要是用来做并发控制,整个包的核心代码不到100行,充分利用到了map和WaitGroup的特性。常见的场景比如防止 缓存击穿 ,我们可以...
分析kubernetes中的事件机制 我们通过 kubectl describe [资源] 命令,可以在看到Event输出,并且经常依赖event进行问题定位,从event中可以分析整个POD的运行轨迹,为服务的客观测性提供数据来源,由此可见,event在Kubernetes中起着举足轻重的作用。event并不只是kubelet中都有的,关于event的操作被封装在client-go/tools/record包,我们完全可以在写入...
利用Kubernetes中的leaderelection实现组件高可用 在Kubernetes中,通常kube-schduler和kube-controller-manager都是多副本进行部署的来保证高可用,而真正在工作的实例其实只有一个。这里就利用到 leaderelection的选主机制,保证leader是处于工作状态,并且在leader挂掉之后,从其他节点选取新的leader保证组件正常工作。不单单只是k8s中的这两个组件用到,在其他服务中也可以看到这个包...
利用Kubernetes中的leaderelection实现组件高可用 在Kubernetes中,通常kube-schduler和kube-controller-manager都是多副本进行部署的来保证高可用,而真正在工作的实例其实只有一个。这里就利用到 leaderelection的选主机制,保证leader是处于工作状态,并且在leader挂掉之后,从其他节点选取新的leader保证组件正常工作。不单单只是k8s中的这两个组件用到,在其他服务中也可以看到这个包...
Go的http包中默认路由匹配规则 一、执行流程首先我们构建一个简单http server:package mainimport ( "log" "net/http")func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { w.Write([]byte("hello wor...
介绍一款Go项目热编译工具-gowatch 使用场景在golang项目编写过程中,需要对项目不断的进行构建go build并调试以快速发现问题,而我们每次进行手动的进行go build又太重复,所以写了这么一个工具gowatch来实时的监听文件的改动并编译。快速入门安装使用go get github.com/silenceper/gowatch安装完成之后,在main包目录下执行gowatch命令:高级用法支持的命令行参...
介绍一款Go项目热编译工具-gowatch 使用场景在golang项目编写过程中,需要对项目不断的进行构建go build并调试以快速发现问题,而我们每次进行手动的进行go build又太重复,所以写了这么一个工具gowatch来实时的监听文件的改动并编译。快速入门安装使用go get github.com/silenceper/gowatch安装完成之后,在main包目录下执行gowatch命令:高级用法支持的命令行参...
如何在Go项目中输出版本信息? 我们经常在使用CLI工具的时候,都会有这样的参数输出:➜ ~ docker versionClient: Docker Engine - Community Version: 18.09.2 API version: 1.39 Go version: go1.10.8 Git commit: 6247962 Built: ...