5-k8s組件理解

1: Deployment
Deployment爲Pod和ReplicaSet提供了一個聲明式定義(declarative)方法,用來替代之前的 ReplicationController來方便的 管理應用。典型的應用場景包括:
  • 定義Deployment來建立Pod和ReplicaSet
  • 滾動升級和回滾應用
  • 擴容和縮容
  • 暫停和繼續Deployment
 
 
2:DaemonSet
DaemonSet保證在每一個Node上都運行一個容器副本,經常使用來部署一些集羣的日誌、監控或者其餘系統管理應用。典型的應用包括:
  • 日誌收集,好比fluentd,logstash等
  • 系統監控,好比Prometheus Node Exporter,collectd,New Relic agent,Ganglia gmond等
  • 系統程序,好比kube-proxy, kube-dns, glusterd, ceph等
 
3.StatefulSet
StatefulSet是爲了解決有狀態服務的問題(對應Deployments和ReplicaSets是爲無狀態服務而設計),其應用場景包括
  • 穩定的持久化存儲,即Pod從新調度後仍是能訪問到相同的持久化數據,基於PVC來實現
  • 穩定的網絡標誌,即Pod從新調度後其PodName和HostName不變,基於Headless Service(即沒有Cluster IP的Service)來實現
  • 有序部署,有序擴展,即Pod是有順序的,在部署或者擴展的時候要依據定義的順序依次依次進行(即從0到N-1,在下一個Pod運行以前全部以前的Pod必須都是Running和Ready狀態),基於init containers來實現
  • 有序收縮,有序刪除(即從N-1到0)
從上面的應用場景能夠發現,StatefulSet由如下幾個部分組成:
  • 用於定義網絡標誌(DNS domain)的Headless Service
  • 用於建立PersistentVolumes的volumeClaimTemplates
  • 定義具體應用的StatefulSet
StatefulSet中每一個Pod的DNS格式爲 statefulSetName-{0..N-1}.serviceName.namespace.svc.cluster.local,其中
  • serviceName爲Headless Service的名字
  • 0..N-1爲Pod所在的序號,從0開始到N-1
  • statefulSetName爲StatefulSet的名字
  • namespace爲服務所在的namespace,Headless Servic和StatefulSet必須在相同的namespace
  • .cluster.local爲Cluster Domain,
 
 
----- 其餘的請參考
 
相關文章
相關標籤/搜索