自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

柳清风的专栏

行者程序员

  • 博客(24)
  • 资源 (8)
  • 收藏
  • 关注

原创 kubernetes添加第三方存储(三)

前面两篇文章已经介绍了整体的内容,下面就已对青云的存储为例,先提供一个Provision的实现func (c *volumeProvisioner) Provision(options controller.VolumeOptions) (*v1.PersistentVolume, error) { glog.V(4).Infof("qingcloudVolumeProvisioner Pr

2017-12-27 13:05:44 37566

原创 kubernetes添加第三方存储(二)

上一篇介绍创建存储pv的流程,那个有个存储需要挂载到容器里面才能被使用,下面还需要一个通用的接口felx去将存储挂载到容器里面。 kubernetes存储的使用和协助需要分别实现挂载和解挂的接口 kubernetes下面pkg/volume/volume.gotype Attacher interface { // 挂载存储到主机 Attach(spec *Spec, nodeN

2017-12-27 12:20:25 37055

原创 kubernetes添加第三方存储(一)

kubernetes发展到1.7以后,就朝着平台去开发了,上一个讨论的点是kubernetes把metrics单独出去,成为一个kubernetes的监控标准,这个我们以后再慢慢说,先看存储这个孵化的项目。github.com/kubernetes-incubator/external-storage第三方存储对接。 它和上一篇介绍的custom-metrics-apiserver项目一样都是孵化

2017-12-27 09:55:41 37934 1

原创 golang 源码分析之URL编码规范

首先看一下url编码规范: backspace %08 tab %09 linefeed %0A creturn %0D space %20 ! %21 " %22 #

2017-12-26 15:27:13 39370

原创 kubernetes+ prometheus自动伸缩的设计与实现(三)

现在还剩下最后一东西没有解决了,就是一个查询的接口,提供一个prometheus转接的地方。第一篇blog已经介绍了通过自定义指标采集器调用custom-metrics接口。现在看看这个接口的实现,首先得有这样一个接口 这个是基于k8s的一个孵化项目: github.com/kubernetes-incubator/custom-metrics-apiserver 他就是提供一个自定义服务

2017-12-26 14:39:32 37672

原创 kubernetes+ prometheus自动伸缩的设计与实现(二)

上一篇介绍了

2017-12-25 17:05:42 37007

原创 kubernetes+ prometheus自动伸缩的设计与实现(一)

这篇blog名字起的搞得和我写论文一样,xxxx的设计与实现。其实这个东西原理很简单,kubernetes的hpa使用的是heapster,heapster是k8s那帮家伙在搞的,所以k8s还是喜欢自己搞的东西,所以k8s的hpa默认使用的heapster,但在业内,还有一个比heapster更好的监控方案,那就是prometheus。如果按照写论文的方式,我这边应该分别介绍一下k8s和promet

2017-12-25 17:04:20 39663 1

原创 解析kubernetes Aggregated API Servers

kubernetes的 Aggregated API是什么呢?它是允许k8s的开发人员编写一个自己的服务,可以把这个服务注册到k8s的api里面,这样,就像k8s自己的api一样,你的服务只要运行在k8s集群里面,k8s 的Aggregate通过service名称就可以转发到你写的service里面去了。 这个设计理念: 第一是增加了api的扩展性,这样k8s的开发人员就可以编写自己的API服务

2017-12-25 11:10:05 42082

原创 用golang写一个proxy

我复杂的网络环境中,proxy是个很有用的工具,我们可以通过proxy代理帮我们完成网络流量的转发。 这个proxy得先能接收请求,所以这里先启动一个tcp的监听,获取请求func (s *Server) Start() { var err error s.listener, err = net.Listen("tcp", s.addr) if err != nil {

2017-12-25 09:03:40 40748

原创 kubelet启动pod源码分析(三)

之前的blog分析了kubelet启动pod的流程,那么pod一旦启动了,谁去上报状态呢?还是回到之前代码syncLoopIteration,这个里面有四个输入源,第一次创建接受到configch add这个没有问题,然后是启动容器,此时会上报到容器正在创建的状态到apiserver,还会接收到收到configch reconcile。那么关键的来,什么时候上报成功的呢? pkg/kubelet

2017-12-19 11:07:47 39465

原创 给prometheus加一个export

prometheus有很多的export,本文先自己写一个export,再介绍一个官方提供的node export。 其实只要返回prometheus能够识别的标准的文本,prometheus就能兼容,这个就是接口的好处。 你首先得提供一个http的server去提供数据,本篇文章主要介绍一个http的监控,可以通过http、tcp等协议做服务监控。 http.HandleFunc("/p

2017-12-18 19:20:15 42727

原创 kubelet启动容器之存储挂载(三)

之前的两篇blog介绍了kubelet启动pod的过程,但没有介绍存储挂载的过程,这里还是补充说一下, 首先看kubelet启动时候// Start volume managergo kl.volumeManager.Run(kl.sourcesReady, wait.NeverStop)看Run启动方法,如下:func (vm *volumeManager) Run(sourcesReady

2017-12-18 11:38:43 38108

原创 kubelet启动pod源码分析(二)

上一篇blog讲解到到从apiserver获取需要更新的pod的信息,然后传入syncLoopIteration。那么需要变化的pod不是只有上面上面三个,因为本地的pod状态可能发生变化,譬如本地的容器退出,那么怎么去让本地退出的容器重新启动呢?答案在于另一个输入源码plegch这个channel中。 下面看看syncLoopIteration这几个输入源func (kl *Kubelet) s

2017-12-18 10:53:40 36689

原创 kubelet启动pod的源码分析

如果看过之前的blog,大家都肯定都已经知道kubelet是负责真正启动容器的干活的,其实k8s的代码里面最复杂的其实是kubelet,而不是无脑的大脑apiserver,它基本是依靠etcd完成很多工作。 那么kubelet怎么去启动pod,何时去启动pod呢?我先从kubelet启动的地方说起。 先看上面这张图,这张图详细的介绍了kubelet启动pod的三个来源,分别是apiserve

2017-12-18 09:14:47 37336

原创 kubernetes Sandbox删除详解

上一篇blog讲解了一下gc的整个流程。后面介绍了删除sandbox。但sandbox怎么删除还是没有讲清楚,在此详细展开说一下。

2017-12-14 10:12:50 42340

原创 kubelet gc源码分析

kubelet是负载干活的组件,它会定期的清理多余死掉的容器和镜像,这篇blog基于kubernetes1.7.6的代码,关于gc的深入源码分析 好了,先看gc是随着kubelet启动而启动的pkg/kubelet/kubelet.go,func (kl *Kubelet) StartGarbageCollection() { loggedContainerGCFailure := fal

2017-12-14 09:33:44 36871 1

原创 s3存储分段上传命令行和SDK使用

s3是亚马逊退出的对象存储服务。我之前blog介绍过什么是对象存储,这里普通的对象操作在此略过,如果大家感兴趣可以看aws官网,说的很详细,在此我想介绍的是分段上传的使用方式,先看下面我画的图 文件从分片,到初始化上传,再到逐一上传分片,最后合并组装,完成分片上传的整个过程。 其实如果你直接使用命令行或者SDK,它默认就是支持分段上传的,你默认使用的aws s3 cp它就是一个分段上传。

2017-12-12 10:48:25 41099 1

原创 怎样通过pprof监控docker

debug模式启动docker$ /usr/bin/docker daemon -D -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock通过socat端口转发$ socat -d -d TCP-LISTEN:8080,fork,bind=192.168.1.137 UNIX:/var/run/docker.sock测试[root@reg ppr

2017-12-11 17:34:40 38743

原创 filebeat源码分析之采集

上面说到是启动,下面接着说日志采集回到启动的地方filebeat/prospector/prospector.go。func (p *Prospector) Run() { // 初始化 prospector 启动 p.prospectorer.Run() // 如果只运行一次就返回 if p.Once { return } for {

2017-12-09 18:10:44 39636

原创 Docker容器的生命周期管理

通过docker的API或者docker event命令,我们都可以获取到容器生命周期内发生了那些事情。首先把结论放出来,然后在看实现过程。 这个是实验的结论,那我怎么获取到这些状态和事件的呢?很简单,就是通过上面的api watch。 通过docker go client很容易实现func (w *watcher) watch() { filters := filters.NewA

2017-12-08 14:42:51 41937

原创 filebeat源码分析服务启动

在开始源码分析之前先说一下filebeat是什么?beats是知名的ELK日志分析套件的一部分。它的前身是logstash-forwarder,用于收集日志并转发给后端(logstash、elasticsearch、redis、kafka等等)。filebeat是beats项目中的一种beats,负责收集日志文件的新增内容。当前的代码分支是最新的6.x的代码。 先看我们服务启动配置文件的一个例子,

2017-12-08 14:23:18 38530

原创 kubernetes1.8 源码分析之资源调度

之前1.4的源码分析已经讲过调度的过程,现在载对一些细节补充一下。首先是k8s会加载哪些资源调度算法呢,其实它支持两种,一种是配置文件,一种是默认代码中指定的,下面看看plugin/pkg/scheduler/algorithmprovider/defaults/defaults.go里面默认的调度算法,一个是筛选func defaultPredicates() sets.String {

2017-12-04 11:38:59 36746

原创 kubernetes 1.8 源码分析之kubelet资源上报

最近在给k8s 1.8添加磁盘调度的时候,又撸了一遍k8s的相关的源码,之前看过我源码分析的那个是k8s 1.4版本的,1.8版本还是有点变化的。 先看看kubelet上报机制,这个是kubelet的心跳机制,定时上报节点状态,默认是10s,时间可以设定 在kubelet创建的时候就已经创建了节点状态的收集方法 pkg/kubelet/kubelet.go里面NewMainKubelet方法k

2017-12-04 11:07:48 37991

原创 计算范式之并行计算

在说我的主题云计算之前,我还行拓展一个很老的知识点,就是并行计算,这个概念应该是四五十年的历史了,在计算机里面应该是算是old的了。 摩尔定律大家都知道,简单说每年翻一倍,但这个定律过去几年随着intel CEO的下跪,证实了这个规律的不可延续性,硬件的精度总是有限的,由于同样小的空间里集成越来越多的硅电路,产生的热量也越来越大,这种原本两年处理能力加倍的速度已经慢慢下滑。此外,还有更多更大的问题

2017-12-03 22:33:47 36913

kustomize_v4.2.0_darwin_amd64.tar.gz

kustomize_v4.2.0_darwin_amd64.tar.gz

2021-08-26

helm-v3.6.3-linux-amd64.tar.gz

linux helm 二进制

2021-08-26

helm-v3.6.3-darwin-amd64.tar.gz

mac helm 二进制

2021-08-26

go1.16.7.linux-amd64.tar.gz

go1.16.7.linux-amd64.tar.gz

2021-08-17

linux网络实现分析

linux操作系统网络实现

2016-07-27

pygame msi安装包

基于win64位 python2.7的pygame包,可以用于python音乐游戏开发

2016-07-27

zookeeper安装包

zookeeper安装,在linux环境下部署安装zookeeper

2014-12-24

CSS编辑器 TopStylePortable.exe

最实用CSS开发工具不仅有各个浏览器支持说明而且还有很多提示。非常实用

2013-04-13

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除