- 前提条件
0.0 环境准备
0.1 安装docker
0.2 安装k8s - 比较ReplicaSet和ReplicationController
- 行为完全相同,ReplicaSet的pod选择器表达能力更强:允许匹配缺少某个标签的pod或包含特定标签名的pod
- 定义ReplicaSet
- 注意点:apiVersion为apps(API组),v1beta2(实际的API版本,在1.9+中v1beta2合入v1,且将v1beta2废弃)。某些资源位于核心API组,不需要再apiVersion中指定,在后续Kubernetes版本中引入的其他资源被分为几个API组
- 不必在selector属性中直接列出pod需要的标签,而是在selector.matchLabels下指定它们。这是ReplicaSet定义标签选择器更简单的方式
- 定义kubia-rs.yaml
apiVersion: apps/v1 kind: ReplicaSet metadata: name: kubia-rs spec: replicas: 3 selector: matchLabels: app: kubia template: metadata: labels: app: kubia spec: containers: - name: kubia image: nuptaxin/kubia - 创建和检查ReplicaSet
- 创建(标签相同,会关联使用4.2中创建的pod,可以通过查看metadata的ownerReferences确认)
kubectl create -f kubia-rs.yaml - 查看
kubectl get rs - 查看详情
kubectl describe rs kubia-rs
- 创建(标签相同,会关联使用4.2中创建的pod,可以通过查看metadata的ownerReferences确认)
- 使用ReplicaSet的更富表达力的标签选择器
- matchexpressions:可以给选择器添加额外的表达式
- 每个表达式都必须包含一个key,一个operator,并且可能还有一个values的列表(取决于运算符)
- 四个有效的运算符:
- In:Label的值必须与其中一个指定的values匹配
- NotIn:Label的值与任何指定的values不匹配
- Exists:pod必须包含一个指定名称的标签(值不重要)。使用此运算符是,不应指定values字段
- DoesNotExist:pod不得包含有指定名称的标签。values属性不得指定。
- 如果指定了多个表达式,则所有表达式都必须为true才能使选择器与pod匹配。
- 如果同时指定matchLabels和matchexpressions,则所有标签都必须匹配,且所有表达式必须计算为true以使该pod与选择器匹配
- 定义:kubia-rs-me.yaml
apiVersion: apps/v1 kind: ReplicaSet metadata: name: kubia-rs-me spec: replicas: 3 selector: matchexpressions: - key: app operator: In values: - kubia template: metadata: labels: app: kubia spec: containers: - name: kubia image: nuptaxin/kubia- 创建(此处会创建三个新的pod,原因是已创建的pod已经被设置过Controlled By kubia-rs了,可以通过kubectl describe查看)
kubectl create -f kubia-rs-me.yaml
- 删除rs(不删除pod:–cascade=false,创建两个对应相同label的rs,会创建两倍的pod,会造成管理上的混乱)
kubectl delete rs kubia-rs - 资源清理
kubectl delete rs kubia-rs-me



