kubernetes(八)ReplicaSet和Deployment
强调下:1)k8s的yaml文件中'kind'对应的字段值是'大驼峰' --> 也即都是'首字母大写'2)其它字段是'小驼峰'一补充知识请求资源的'url路径'是'如何堆叠的'具体解释name是 kubectl 去'查询资源'名字的'全称'二控制器(1)控制器的工作原理(2)ReplicaSet1)rs的引出2)案例讲解目的: '观察实验现象,了解原理'apiVersion: apps/v1
·
强调下:
1)k8s的yaml文件中'kind'对应的字段值是'大驼峰' --> 也即都是'首字母大写'
2)其它字段是'小驼峰'
一 补充知识
请求资源的'url路径'是'如何堆叠的'
name是 kubectl 去'查询资源'名字的'全称'
二 控制器
(1)控制器的工作原理
(2)ReplicaSet
1)rs的引出
2)案例讲解
目的: '观察实验现象,了解原理'
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: nginx-rs
namespace: default
spec:
replicas: 3 '期望的 Pod 副本数量',默认值为1
selector: 'Label Selector',必须匹配 Pod 模板中的标签
matchLabels:
app: nginx
template: # Pod 模板
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
三个字段理解
replias: 表示'期望'的 Pod 的'副本数量'
selector:Label Selector,用来匹配要控制的 Pod 标签,需要和下面的 Pod 模板中的'标签一致'
template:Pod 模板,实际上就是'以前'我们定义的 Pod 内容,相当于把一个 Pod 的描述以'模板的形式嵌入到了 ReplicaSet 中来'
核心:根据pod的模板-->'template',创建指定数量的pod-->'replicas'
理解: rs'通过标签'来控制pod --> 可以通过'删除rs中pod的标签'或者'增加一个带相同标签的pod','观察'rs中控制的pod
实验1
'手动删除'rs创建的一个pod --> '现象' --> 然后'又自动创建'一个pod
背后机理: 'rs控制器'控制pod的数量 -->实验'过程省略'
思考:单一pod和rs中的pod的区别
Pod 中有一个 metadata.ownerReferences 的字段'指向了' ReplicaSet 资源对象
结构图
rc了解即可,'基本不用'
(3)Deployment 控制器
明确:'不直接使用'rs,并不意味着'不使用'rs
备注:跟ep一样'endpoints'一样
1)实例模板
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deploy
namespace: default
spec:
replicas: 3 '期望'的 Pod 副本数量,'默认值为1'
selector: Label Selector,'必须匹配' Pod 模板中的标签
matchLabels:
app: nginx
template: # Pod 模板
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
2)思考:创建deployment,为什么会创建rs,二者之间的关系?
对比: 'deployment和rs'对应'describle Event'的信息帮助我们'理解'deployment是通过'控制rs'来控制pod的
看rs的yaml信息字段'ownerReferences'也能表明该rs'属于deploy管理的'
3)水平扩缩容
Deployment 是通过管理 'ReplicaSet 的数量和属性'来实现水平'扩展'/'收缩'以及'滚动更新'两个功能的
理解1: 'dp的这两个功能'实质都是'通过rs来实现的',只不过业务上'滚动更新用的更多',所以更重要!!!
理解2: 水平扩缩容-->是扩展或者缩小'同一批次pod'的数量
理解3: 滚动更新产生的'不同批次'的pod --> '一般以镜像为修改参数'
看到'期望的 Pod 数量'已经变成 4 了,只是 Pod '还没准备完成',所以 READY '状态数量'还是 3
看到 ReplicaSet 控制器'增加了'一个新的 Pod,同样的 Deployment 资源对象的事件中也可以看到'完成了扩容的操作'
备注1: '缩容'同上
备注2: Events保存最近'一个小时'的记录
更多推荐
已为社区贡献11条内容
所有评论(0)