1. 程式人生 > >『中級篇』K8S橫向擴展功能ReplicaSet和ReplicationController(63)

『中級篇』K8S橫向擴展功能ReplicaSet和ReplicationController(63)

docker cati ont port cmd 也會 用法 itl let

>原創文章,歡迎轉載。轉載請註明:轉載自IT人故事會,謝謝!
>原文鏈接地址:『中級篇』K8S橫向擴展功能ReplicaSet和ReplicationController(63)

上次說了,pod的如何管理。這次說說pod的橫向擴展。源碼:https://github.com/limingios/docker/tree/master/No.9

ReplicationController

ReplicationController(簡稱為RC)。在舊版本的Kubernetes中,只有ReplicationController對象。它的主要作用是確保Pod以你指定的副本數運行,即如果有容器異常退出,會自動創建新的 Pod 來替代;而異常多出來的容器也會自動回收。可以說,通過ReplicationController,Kubernetes實現了集群的高可用性。

  • 開始演示
#啟動k8s
minikube start
#刪除上次的pod
kubectl delete -f pod_nginx.yml

技術分享圖片

  • 查看rc_nginx.yml
    apiVersion: v1
    kind: ReplicationController 
    metadata:
    name: nginx
    spec:
    replicas: 3
    selector:
    app: nginx
    template:
    metadata:
      name: nginx
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx
        ports:
        - containerPort: 80

技術分享圖片

#創建一個ReplicationController的橫向擴展
kubectl create -f rc_nginx.yml
kubectl get pods
kubectl get rc

技術分享圖片

  • 刪除一個看看效果如何

    通過delete pods 的方式刪除一個容器,立刻就有一個新的容器起來

    kubectl get  rc
    kubectl get pod
    kubectl delete pods nginx-h2qbt
    kubectl get pods
    kubectl get  rc

技術分享圖片

  • scale 水平擴展的數量
    kubectl scale rc nginx --replicas=2
    kubectl get  rc
    kubectl scale rc nginx --replicas=5
    kubectl get  pods -o wide

    技術分享圖片

技術分享圖片

ReplicaSet

Kubernetes官方強烈建議避免直接使用ReplicaSet,而應該通過Deployment來創建RS和Pod。
由於ReplicaSet是ReplicationController的代替物,因此用法基本相同,唯一的區別在於ReplicaSet支持集合式的selector。

技術分享圖片

  • 查看rc_nginx.yml
    apiVersion: apps/v1
    kind: ReplicaSet
    metadata:
    name: nginx
    labels:
    tier: frontend
    spec:
    replicas: 3
    selector:
    matchLabels:
      tier: frontend
    template:
    metadata:
      name: nginx
      labels:
        tier: frontend
    spec:
      containers:
      - name: nginx
        image: nginx
        ports:
        - containerPort: 80
    #刪除ReplicationController創建的pod
    kubectl delete -f rc_nginx.yml
    #創建一個ReplicationController的橫向擴展
    kubectl create -f rs_nginx.yml
    kubectl get pods -o wide
    kubectl get pods
    kubectl get rc

技術分享圖片

技術分享圖片

  • 刪除一個看看效果如何

    通過delete pods 的方式刪除一個容器,立刻就有一個新的容器起來

    kubectl get  rs
    kubectl get pod
    kubectl delete pods nginx-h2qbt
    kubectl get pods
    kubectl get  rs

    技術分享圖片

  • scale 水平擴展的數量
    kubectl scale rs nginx --replicas=2
    kubectl get  rs
    kubectl scale rs nginx --replicas=5
    kubectl get  pods -o wide

技術分享圖片

PS:通過這次了解了pod的擴展,ReplicaSet和ReplicationController的方式,基本上可以拋棄上次的直接pod的方式創建app了。下次說說Deployment。

技術分享圖片

『中級篇』K8S橫向擴展功能ReplicaSet和ReplicationController(63)