天天看點

kubernates學習筆記【2】:Pod的基本概念

1. 自主式pod

     一個pod中共享網絡棧,共享存儲,是以一個pod中的容器自然就是聯通的,不需要像以前docker中那樣需要打上IP端口号,現在都不需要。但是有一點,一個pod中的多個容器不能夠映射同一端口,這樣可能會導緻這個pod無法起來或者永遠重新開機。

kubernates學習筆記【2】:Pod的基本概念

2. 控制器類型的pod

   (1)replicationController:  用來確定容器應用的副本數始終保持在使用者定義的副本數,即如果有容器異常退出,會自動建立新的Pod來替代;而如果異常多出來的容器也會自動回收。在新版車的Kubernetes中建議使用ReplicaSet來取代ReplicationControlle

   (2)ReplicaSet: ReplicaSet跟ReplicationController沒有本質的不同,隻是名字不一樣,并且ReplicaSet支援集合式的selector

   (3)Deployment : 雖然ReplicaSet可以獨立使用,但一般還是建議使用Deployment 來自動管理ReplicaSet,這樣就無需擔心跟其他機制的不相容問題(比如ReplicaSet 不支援rolling-update但Deployment支援)

    在官方最新版本中,RC已經被抛棄 ,一下是滾動過程(v1就是pod):

kubernates學習筆記【2】:Pod的基本概念
kubernates學習筆記【2】:Pod的基本概念

    (4)HPA:僅适用于Deployment和ReplicaSet,在V1版本中僅支援根據pod的cpu使用率擴容。

kubernates學習筆記【2】:Pod的基本概念

    (5)StatefulSet:StatefulSet是為了解決有狀态服務的問題(對應Deployments和ReplicaSets是為無狀态服務而設計),其應用場景包括:

          *穩定的持久化存儲,即Pod重新排程後還是能通路到相同的持久化資料,基于PVC來實作

          *穩定的網絡标志,即Pod重新排程後其PodName和HostName 不變,基于Headless Service(即沒有Cluster IP的Service )來實作

          * 有序部署,有序擴充,即Pod是有順序的,在部署或者擴充的時候要依據定義的順序依次依次進行(即從0到N-1,在下一一個Pod運作之前所有之前的Pod必須都是Running和Ready狀态),基于initcontainers來實作

          *有序收縮,有序删除(即從N-1到0)

    (6)DaemonSet:   DaemonSet確定全部(或者一些) Node 上運作一個Pod的副本。當有Node加入叢集時,也會為他們新增一個Pod。當有Node從叢集移除時,這些Pod 也會被回收。删除DaemonSet 将會刷除它建立的所有Pod

      使用DaemonSet的一些典型用法:

      *運作叢集存儲daemon,例如在每個Node 上運作glusterd、 ceph.

       *在每個Node上運作日志收集daemon, 例如fluentd、 logstash。

       *在每個Node上運作監控daemon, 例如Prometheus Node Exporter

     (7)Job: job負責批處理任務,僅執行一次

3.服務發現

kubernates學習筆記【2】:Pod的基本概念
kubernates學習筆記【2】:Pod的基本概念