ReplicaSet
RC:ReplicationoController(老一代的Pod控制器)
RS:ReplicaSet(新一代的Pod控制器)
用于确保由其管理的控制的Pod对象副本,能够满足用户期望,多则删除,少则通过模板创建
deployment、rs、rc
特点:
- 确保Pod资源对象的数量精准
- 确保Pod健康运行
- 弹性伸缩
同样,它也可以通过yaml或json格式的资源清单来创建,其中spec字段一般嵌套一下字段
- replicas:期望的Pod对象副本数量
- selector:当前控制器匹配Pod对象副本的标签
- template:Pod副本的模板
与RC相比而言,RS不仅支持基于等值的标签选择器,而且还支持集合的标签选择器
标签:解决同类型的资源对象越来越多,为了更好的管理,按照标签分组
常用标签分类:
- release(版本):stable(稳定版)、canary(金丝雀)、beta(测试版)
- environment(环境变量):dev(开发)、qa(测试)、production(生产)
- application(应用):ui、as(application software应用软件)、pc、sc
- tier(架构层级):frontend(前端)、backend(后端)、cache(缓存)
- partition(分区):customerA(客户A)、customoerB(客户B)
- track(品控级别):daily(每天)、weekly(每周)
标签要做到:见名知意
//通过–show-labels显示资源对象的标签
[root@master ~]# kubectl get pod --show-labels
//通过-l选项查看仅含有包含某个标签的资源
[root@master ~]# kubectl get pod -l env
//通过-L显示某个键对应的值
[root@master ~]# kubectl get pod -L env
//给Pod资源添加标签
[root@master ~]# kubectl label pod label app=pc
//删除标签
[root@master ~]# kubectl label pod label app-
//修改标签
[root@master ~]# kubectl label pod label env=dev --overwrite
如果标签有多个,标签选择器选择其中一个,也可以关联成功,相反,如果选择器有多个,那标签必须完全满足条件,才可以关联成功
标签选择器:标签的查询过滤条件
- 基于等值关系的(equality-based):”=”,”==”,”!=” =” 前面两个都是相等,最后是不等
- 基于集合关系(set-based):in、notin、exists三种
例子:
selector:
matchLables:
app: nginx
metchExpressions:
- {key: name,operator: In,values: [zhangsan,lisi]}
- {key: age,operator: Exists,values:}
matchLabels:指定键值对来表示的标签选择器
matchExpressions:基于表达式来指定的标签选择器,选择器列表间为”逻辑与”关系;使用In或者Notin操作时,其values不强制要求为非控的字符串,而使用Exists或DosNotExist时,其values必须为空
使用标签选择器的逻辑:
- 同时指定的多个选择器之间的逻辑关系为”与”操作
- 使用空值的标签选择器意味着每个资源对象都将被选择中
- 空的标签选择器无法选中任何资源
DaemonSet
它也是一种Pod控制器
使用场景:如果必须将Pod运行再固定的某个或某几个节点,且要优先其他Pod的启动,通常情况下,默认会每个节点都会运行,并且只能运行一个Pod,这种情况推荐使用DaemonSet资源对象
监控程序:
日志收集程序:
运行一个web服务,在每一个节点都运行一个Pod
[root@master ~]# vim daemonset.yaml
kind: DaemonSet
apiVersion: extensions/v1beta1
metadata:
name: test-ds
spec:
template:
metadata:
labels:
name: test-ns
spec:
containers:
- name: test-ns
image: httpd:v1
RC、RS、Deployment、DaemonSet,Pod控制器。statfulSet(有状态)、Ingress。Pod
RBAC:基于用户的认证授权机制