0%

更加详细的操作方法请参考宋净超的github项目

1、准备工作

安装vagrant和virtualbox

vagrant官方下载地址(我使用的版本是2.2.6): https://www.vagrantup.com/downloads.html

virtualbox官方下载地址(我使用的版本是2.2.65.2.14 r123301): https://www.virtualbox.org/wiki/Download_Old_Builds_5_2

获取虚机镜像

centosvagrant镜像地址

http://cloud.centos.org/centos/7/vagrant/x86_64/images/

阅读全文 »

搜索相关

301. 删除无效的括号

题目

删除最小数量的无效括号,使得输入的字符串有效,返回所有可能的结果。

说明: 输入可能包含了除 ( 和 ) 以外的字符。

示例 1:

1
2
输入: "()())()"
输出: ["()()()", "(())()"]

示例 2:

1
2
输入: "(a)())()"
输出: ["(a)()()", "(a())()"]

示例 3:

1
2
输入: ")("
输出: [""]
阅读全文 »

我们知道,在kubernetes中,有5个主要的组件,分别是管理节点上的kube-apiserverkube-controller-managerkube-schedulernode节点上的kubeletkube-proxy。这其中kube-apiserver是对外和对内提供资源的声明式API的组件,其它4个组件都需要和它交互,在这个交互过程中,有一个非常关键的机制就是list-watch。我们知道kube-apiserver提供了一个kubernetes中各种资源的增删改查的接口,不对需要对内给这4个组件用,还需要给外外部的用户以及集群内可能安装的插件使用,因此它接收到的请求量是十分巨大的,为了减少这种请求量,降低kube-apiserver的压力,便设计出了list-watch机制。client端在跟server端长期进行交互时,并不是每次需要查询时都去调用server的接口,而是使用list+watch的方式来维护一个缓存将server端的数据缓存起来,当需要获取数据的时候直接从缓存中获取,一方面可以降低server端的压力,另一方面也可以减少自己获取数据的时间。当然,增删改还是需要调用server端的接口。

本文的目的是将list-watch的机制搞清楚,各位看官且往下看。

说明:本文使用的k8s代码为1.13版本,其他版本代码可能会有少许差异。

阅读全文 »

在同步代码或者升级社区开源组件的版本时候经常需要分析不同分支之间的差异,或者分析某一个开源组件中的自验代码的情况,这时候可以通过git工具来批量导出所有commit。

阅读全文 »

go-restful库是一个用go语言实现的REST风格的Web服务框架,

1 关键数据结构

对于任何代码,数据结构是基础,搞清楚了数据结构才能搞清楚代码运行的逻辑。借用钟大师的一段话:

数据结构是什么?数据结构就是舞台上的角色,而函数方法就是这些角色之间演出的一幕幕戏。对象是有生命的,从创建到数据流转,从产生到消亡。而作为开发者来说,首先是搞懂这些人物设定,是关公还是秦琼,是红脸还是黑脸?看懂了人,就看懂了戏。 ——摘自钟大师的博客

因此在分析go-restful这个库的功能和使用方法之前,我们先来了解一下这个库的几个关键数据结构。

阅读全文 »

1 关键数据结构

1.1 Master

Master包含了kube-apiserver中的所有参数

1
2
3
4
5
6
// Master contains state for a Kubernetes cluster master/api server.
type Master struct {
GenericAPIServer *genericapiserver.GenericAPIServer

ClientCARegistrationHook ClientCARegistrationHook
}

其中最关键的元素是GenericAPIServer *genericapiserver.GenericAPIServer

1.2 GenericAPIServer

阅读全文 »