整体理解kubenets各种组件
在学习编排之前,认识kubernets的各种组件是很重要的。他们之间的关系是怎么样的?如果构建一个合理的服务?都是要在开始之前需要学习的。
Containers (容器)
容器就是我们之前将的docker,或其他虚拟化容器。不过docker应该是主流。一般人认为容器应该是kubernets的最小单位,其实并不是它是组成最小的单位的主要成分。接下来要讲的Pod才是最小的kubernets组成单位。
Pod (豆荚)
pod是组成kebernet的最小单位,每个pod中会包含一个或多个docker容器,为了管理pod的就引入了Replication controller.
Replication Controller (RC)
副本控制器不明思议,就是管理副本的,副本的单位就是pod,随着程序的发展,RC已经被正在被Replication Set所替换,他们之间的区别RS堆label有更多的功能,可以利用表达式去匹配label标签。
Replication Set (RS)
跟RC相比它多了一些功能,对于selector 有更多的功能,可以使整个RS的意义更清晰,更能让维护人员理解。比如如下配置
apiVersion: extensions/v1beta1
kind: ReplicaSet
metadata:
name: soaktestrs
spec:
replicas: 3
selector:
matchLabels:
app: soaktestrs
template:
metadata:
labels:
app: soaktestrs
environment: dev
spec:
containers:
- name: soaktestrs
image: nickchase/soaktest
ports:
- containerPort: 80
管是这样无法表这个服务到底是做什么用的
...
spec:
replicas: 3
selector:
matchExpressions:
- {key: app, operator: In, values: [soaktestrs, soaktestrs, soaktest]}
- {key: teir, operator: NotIn, values: [production]}
template:
metadata:
...
我们可以通过描述得到如下:
# kubectl create -f replicaset.yaml
replicaset "soaktestrs" created
# kubectl describe rs soaktestrs
Name: soaktestrs
Namespace: default
Image(s): nickchase/soaktest
Selector: app in (soaktest,soaktestrs),teir notin (production)
Labels: app=soaktestrs
Replicas: 3 current / 3 desired
Pods Status: 3 Running / 0 Waiting / 0 Succeeded / 0 Failed
No volumes.
Events:
FirstSeen LastSeen Count From SubobjectPath Type Reason Message
--------- -------- ----- ---- ------------- -------------- -------
1m 1m 1 {replicaset-controller } Normal SuccessfulCreate Created pod: soaktestrs-it2hf
1m 1m 1 {replicaset-controller } Normal SuccessfulCreate Created pod: soaktestrs-kimmm
1m 1m 1 {replicaset-controller } Normal SuccessfulCreate Created pod: soaktestrs-8i4ra
# kubectl get pods
NAME READY STATUS RESTARTS AGE
soaktestrs-8i4ra 1/1 Running 0 1m
soaktestrs-it2hf 1/1 Running 0 1m
soaktestrs-kimmm 1/1 Running 0 1m
Deployment
Deployment以RC做为管理单元实现Roll updating 和 Roll Back,实现动态更新和回滚的功能。
Service
service 主要是在deployment的基础上,管理ip Port Dns ,并且自动实现负载均衡和调度。
Yaml的种类
- Replication Controller
- Replication Set
- Deployment
- Service
四中yaml是逐层递增的向上的上层依赖下层,实现一个层级。
总结
kubernets 的整理部署由上面的几个部分组成,副本的是为了实现系统稳定性,副本管理是为了实现环境的滚动更新和回滚,service是为了实现统一的网关入口和负载均衡。整体的架构就是如此,细节就是要在实践中不断的学习和积累了。