1. 程式人生 > 實用技巧 >kubernets之ReplicaSet

kubernets之ReplicaSet

一 介紹RS

    1.1 RS與RC在功能上基本上是一摸一樣的,因為兩者的功能都是用來管控叢集內部的pod,並且

  兩者都具備模版,副本數量以及標籤選擇器等三要素,區別點在於,RS擁有著更為強大的標籤選擇器,RC只支援單一鍵值對匹配規則

  而RS則支援正選,反選,甚至正則表示式的匹配規則

二 建立一個RS

    2.1 通過yaml配置檔案的形式來建立一個RS

    

apiVersion: apps/v1beta2
kind: ReplicaSet
metadata:
  name: kubia
spec:
  replicas: 3
  selector:
    matchLabels:
      app: kubia
  template:
    metadata:
      labels:
        app: kubia
    spec:
      containers:
      
- name: kubia image: luksa/kubia

[root@node01 Chapter04]# k create -f kubia-rs.yml
replicaset.apps/kubia created

    2.2 檢查RS的狀態,可以看到所有的pod都順利的建立完成

[root@node01 Chapter04]# k describe rs kubia
Name:         kubia
Namespace:    default
Selector:     app=kubia
Labels:       <none>
Annotations:  
<none> Replicas: 3 current / 3 desired Pods Status: 3 Running / 0 Waiting / 0 Succeeded / 0 Failed Pod Template: Labels: app=kubia Containers: kubia: Image: luksa/kubia Port: <none> Host Port: <none> Environment: <none> Mounts:
<none> Volumes: <none> Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal SuccessfulCreate 3m15s replicaset-controller Created pod: kubia-pdzkt Normal SuccessfulCreate 3m15s replicaset-controller Created pod: kubia-jt4pr Normal SuccessfulCreate 3m15s replicaset-controller Created pod: kubia-9gz67

    2.3 RS的更強大的標籤選擇器功能展示


  selector:
    matchExpressions:
      - key: app(要求pod必須包含app的標籤)
        operator: In
        values:
          - kubia(要求app的值必須是kubia)

  對比2.1可知,RS支援更豐富的標籤選擇器下面列出常見的幾種

    •  In:label的值必須與其相匹配
    • NotIn:label的值與其不相匹配
    • Exists: pod必須擁有其標籤(無論key是什麼值),此時不應該出現value的值
    • NotExists: pod的不能出現其標籤(無論key是什麼值),此時不應該出現value的值