Kubectl概念解读(六)-Describer-v1.5.2

什么是Describer

Describer是Kubectl上用来描述对象具体信息的,和kubectl describe配合使用。

阅读全文

Kubectl概念解读(五)-Printer-v1.5.2

什么是Printer

Printer可以对Kubernetes中的资源按一定格式进行打印输出,Printer主要供Kubectl get命令使用。目前Kubectl主要实现了JsonPrinter, YAMLPrinter, NamePrinter, TemplatePrinter, JSONPathPrinter, CustomColumnsPrinter, VersionedPrinter, HumanReadablePrinter。

阅读全文

Kubectl概念解读(四)-Mapper-v1.5.2

什么是Mapper

这里的Mapper是指kubectl中的Mapper,是对ObjectTyper, RESTMapper, ClientMapper和Decoder的封装。Mapper定义在/pkg/kubectl/resource/mapper.go中:

1
2
3
4
5
6
7
8
type Mapper struct {
runtime.ObjectTyper
meta.RESTMapper
//***定义在/pkg/kubectl/resource/interfaces.go中***//
//***ClientMapper可以根据config和mapping通过调用ClientForMapping()生成RESTClient***//
ClientMapper
runtime.Decoder
}

阅读全文

Kubectl概念解读(三)-Info,Result,Helper-v1.5.2

Info

什么是Info

之前我们说过,Visitor可以生成Info或处理Info。那么到底什么是Info呢?Info定义在/pkg/kubectl/resource/visitor.go中,与Visitor定义在一个文件中。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// Info contains temporary info to execute a REST call, or show the results
// of an already completed REST call.
//***Info用来存储REST的返回结果***//
type Info struct {
Client RESTClient
Mapping *meta.RESTMapping
Namespace string
Name string
// Optional, Source is the filename or URL to template file (.json or .yaml),
// or stdin to use to handle the resource
Source string
// Optional, this is the provided object in a versioned type before defaulting
// and conversions into its corresponding internal type. This is useful for
// reflecting on user intent which may be lost after defaulting and conversions.
VersionedObject interface{}
// Optional, this is the most recent value returned by the server if available
runtime.Object
// Optional, this is the most recent resource version the server knows about for
// this type of resource. It may not match the resource version of the object,
// but if set it should be equal to or newer than the resource version of the
// object (however the server defines resource version).
ResourceVersion string
// Optional, should this resource be exported, stripped of cluster-specific and instance specific fields
Export bool
}

阅读全文

Kubectl概念解读(二)-Visitor-v1.5.2

什么是Visitor

Visitor定义在/pkg/kubectl/resource/visitor.go中。我们先来看visitor的定义:

1
2
3
4
5
type Visitor interface {
Visit(VisitorFunc) error
}
type VisitorFunc func(*Info, error) error

阅读全文

Kubectl概念解读(一)-Builder-v1.5.2

resource目录下的概念们

在看Kubectl的源码时,最头痛的是/pkg/kubectl/resource目录下各种概念。什么是builder,什么是info,什么是visitor。。。如果了解了这些概念,再来看Kubectl源码,那么就能起到事半功倍的效果。本次先对Builder进行较深程度的分析,然后分批次介绍其他概念。概念的理解可能带有一些主观的色彩,还请包涵。

阅读全文

RESTClient,DynamicClient和ClientSet Demo

三个Client

在Kubernetes上,通常需要Client来访问Kubernetes中的对象,目前最常用的是RESTClient, DynamicClient和ClientSet这三种Client。今天就先介绍下这三个Client基本含义及大概的用法。Demo的编写是参考了http://blog.csdn.net/column/details/14420.html ,非常感谢。

阅读全文

Event机制源码分析-v1.5.2

什么是Event机制

Event机制是Kubernetes用来记录系统发生的事件的一种机制,可以把Event发送给相关函数进行处理,其本质是一个单生产者,生产出的Event供多个消费者消费的模型。

阅读全文

Config机制使用-v1.5.2

什么是Config机制

在部署Kubernetes https通信环境时,最困难的是各组件的参数的配置,而Kubernetes的Config机制就是为了方便https通信环境搭建的一种手段。组件可以通过读取Config中的内容自动完成密钥参数的配置。

阅读全文

ServiceAccount使用-v1.5.2

什么是ServiceAccount

ServiceAccount是Kubernetes中容器用来访问default空间下kubernetes服务的认证机制。我们可以通过kubectl get svc来查看kubernetes服务:

1
2
3
root@fankang:/home/fankang# kubectl get svc kubernetes
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes 10.100.0.1 <none> 443/TCP 189d

阅读全文