博客
csi-driver-host-path安装
集群 v1.19.0 安装 https://github.com/kubernetes-csi/csi-driver-host-path/blob/master/docs/deploy-1.17-and-later.md VolumeSnapshot CRDs and snapshot controller installation # Apply VolumeSnapshot CRDs version:v2.0.1 kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/v2.0.1/config/crd/snapshot.storage.k8s.io_volumesnapshotclasses.yaml kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/v2.0.1/config/crd/snapshot.storage.k8s.io_volumesnapshotcontents.yaml kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/v2.0.1/config/crd/snapshot.storage.k8s.io_volumesnapshots.yaml # Create snapshot controller kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/v2.0.1/deploy/kubernetes/snapshot-controller/rbac-snapshot-controller.yaml kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/v2.0.1/deploy/kubernetes/snapshot-controller/setup-snapshot-controller.yaml Deployment 代码地址:https://github.com/kubernetes-csi/csi-driver-host-path
November 28, 2020
如何编写一个CSI插件
这里以csi-driver-host-path作为例子,来看看是如何实现一个csi插件的? 目标: 支持PV动态创建,并且能够挂载在POD中 volume来自本地目录,主要是模拟volume产生的过程,这样就不依赖于某个特定的存储服务 预备知识 在上一篇文章中,已经对CSI概念有个了解,并且提出了CSI组件需要实现的RPC接口,那我们为什么需要这些接口,这需要从volume要被使用经过了以下流程:
November 27, 2020
CSI - 容器存储接口
容器存储接口(CSI)是用于将任意块和文件存储系统暴露给诸如Kubernetes之类的容器编排系统(CO)上的容器化工作负载的标准。 使用CSI的第三方存储提供商可以编写和部署在Kubernetes中公开新存储系统的插件,而无需接触核心的Kubernetes代码。 具体来说,Kubernetes针对CSI规定了以下内容:
November 26, 2020
源码分析:KEDA是如何工作的?
文章中源码是基于KEDA 2.0( 50bec80)来进行分析 keda 2.0 要求k8s集群版本 >=1.16 KEDA 在2020年11月4号release了2.0版本,包含了一些新的比较有用的特性,比如ScaledObject/ScaledJob中支持多触发器、支持HPA原始的CPU、Memory scaler等。 具体的安装使用请参考上一篇文章使用keda完成基于事件的弹性伸缩,这篇文章主要深入的看下KEDA内部机制以及是如何工作的。
November 4, 2020
KEDA - 一个基于事件驱动的伸缩控制器
keda是一个基于事件驱动的伸缩控制器,可以实现应用缩容至0,以及从0开始扩容。目前已支持像CPU/Memroy、Mysql、Prometheus、Redis等20多种事件来源(Scaler)。
November 4, 2020
使用keda完成基于事件的弹性伸缩
文章中使用的是keda 1.5版本,2.0还未release 1.5版本支持deployment,job两种资源。而在2.0增加了StatefulSet以及自定义资源
September 14, 2020
将镜像tar包通过API直接push到registry仓库
为了实现docker tar包能够直接通过页面上传,调研了一下registry的api,以及如何解析tar包(其实就是docker daemon程序实现的部分)。
July 10, 2020
如何在Kubernetes中创建一个自定义Controller?
#crd#controller#kubernetes#operator
Custom Resource是扩展Kubernetes的一种方式(另外一种就是通过聚合层API apiserver-aggregation),而controller对指定的resource进行监听和执行对应的动作(watch,diff,action)。
May 18, 2020
k8s网络组件:calico
前提已经安装好k8s集群 安装calico 安装其实很简单,已经集成在两个yaml文件中 calico 版本: v3.2.3 安装必看 如果安装过flannel组件,需要先去除docker启动项中 $DOCKER_NETWORK_OPTIONS参数 删除已有的/etc/cni/net.d,/opt/cni/bin文件 kubelet和kube-apiserver启动项中需要加上--allow-privileged=true,保证calico-node需要以特权模式运行 这里calico文件采用了CrossSubnet模式 指定k8s使用CNI插件 在kubelet启动参数中加入以下参数:
October 12, 2018
k8s网络组件:flannel
Flannel是一个专门为k8s定制的网络解决方案,主要解决POD跨主机通信问题,这里主要讲述Flannel是如何实现的。 安装集成在k8s上有两种方式,一种是利用etcd存储整个集群的网络配置,另外一种是利用kubernetes的api 获取网络配置信息,分别如下:
September 26, 2018
聊聊连接池
以下主要使用Golang作为编程语言 为什么需要连接池我觉得使用连接池最大的一个好处就是减少连接的创建和关闭,增加系统负载能力, 之前就有遇到一个问题:TCP TIME_WAIT连接数过多导致服务不可用,因为未开启数据库连接池,再加上mysql并发较大,导致需要频繁的创建链接,最终产生了上万的TIME_WAIT的tcp链接,影响了系统性能。
November 20, 2016
开源项目:wechat sdk
一直很想自己用golang写个微信的sdk,目标是简单好用,所以利用闲暇时间(周末,中秋😁),就做出来。 项目地址:https://github.com/silenceper/wechat 目前实现了消息管理,微信网页授权,菜单管理,素材管理几个接口,看下他的基本使用:
September 16, 2016
dcmp
Distributed Configuration Management Platform 提供了一个etcd的管理界面,可通过界面修改配置信息,借助confd可实现配置文件的同步。 GITHUB:https://github.com/silenceper/dcmp API采用的是Gin Framework,写起api应用来非常方便,前端尝试了一下react。
August 2, 2016
Golang中http包默认路由匹配规则阅读笔记
一、执行流程构建一个简单http server: package main import ( "log" "net/http" ) func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { w.Write([]byte("hello world")) }) log.Fatal(http.ListenAndServe(":8080", nil)) } 使用http://127.0.0.1:8080/ 就可以看到输出了
May 28, 2016