pod是容器組,是kubernetes 集群中的最小調度單位。
docker裡面部署的是容器,在kubernetes 裡面部署的是pod,pod的本質是容器組。
CNI:容器網路介面。
網路插件類型:calico和flannel。
探針類型:
就緒探針 readinessProbe
啟動探針 startupProbeV1.16版本之後添加的內容
存活探針 livenessProbe
service的類型:
ClusterIP給集群內部的用戶使用,nodePort給集群外部的用戶使用,LoadBalancer是特定的雲廠商提供服務,ExternalName是一種DNS的別名機制。
service是一個四層的負載均衡。
負載均衡集群包括:負載調度器、真實伺服器、共享存儲。
Service相當於負載調度器,pod相當於真實伺服器,kubernetes支持的不同存儲類型相當於共享存儲。
calico的工作模式有:vxlan、IPIP、BGP。
pod的控制器類型:
①:deployment適合無狀態的服務部署
②:statefulset 適合有狀態的服務部署
③:Daemonset 一次部署,所有的node節點都會部署
④:Job 一次執行的任務
⑤:Cronjob 周期性執行的任務
⑥:RC ReplicationController
⑦:RS ReplicaSets
⑧:Horizontal Pod Autoscaler
kubernetes的secret是基於base64的編碼。
kubernetes使用3A服務來保證API Server的安全,包括:認證Authentication、鑒權Authorization、准入控制Admission Control。
鑒權一般是rbac。
測試環境:一主兩從
高可用方案:三主兩從
私有鏡像倉庫harbor。
傳統部署方式:硬體--操作系統--操作系統裡面部署應用程序APP,應用程序比如apache、MySQL或者nginx。
安全性與伺服器的資源利用率是相反的關係。要求的安全性高,那麼資源的利用率就低。
基於虛擬化的部署方式:底層是硬體,硬體上面安裝操作系統,操作系統裡面出現一個虛擬化層hypervisor。有了這個虛擬化層之後,就可以在一台物理機裡面運行多個虛擬機VM。每個虛擬機裡面可以運行相對隔離的應用程序。這樣應用程序之間是隔離開的,具有較高的安全性。虛擬化層不提供資源,隨著虛擬機數量的增加,操作系統的數量也會增加,浪費的資源會增多。
以容器為首的部署方案:硬體跑操作系統,在操作系統裡面有容器的運行時container runtime,應用放在不同的容器空間中彼此隔離。多個容器每個容器運行不同的應用程序,沒有虛擬機本身的操作系統這種資源消耗。在容器化的部署方案裡面,既保證了應用間彼此的隔離,也不會出現像傳統虛擬化方案中的操作系統資源的浪費。
容器化方案相對於傳統的虛擬化的方式來說,容器的安全性是下降的。對於資源的利用率來說,容器化的方案比傳統虛擬化的資源利用率高。
IaaS:基礎設施即服務,Infrastructure As A Service。IaaS可以向平台申請虛擬機,然後部署應用程序。比如OpenStack或者VCenter,OpenStack是目前IaaS的主流框架。OpenStack規模越大,成本越低。
PaaS:平台即服務,Platform As A Service。PaaS可以直接訪問應用。PaaS的平台很多,比如:kubernetes、Rancher、Mesos,PaaS的底層是基於容器和虛擬化的技術做的。
雲計算三種典型分類:IaaS、PaaS和SaaS。
SaaS:軟體即服務,Software As A Service,是一種開發做的多租戶的場景。
實現IaaS,要用openstack。
kubernetes是一種PaaS為主的路徑。
實現PaaS有好幾種實現方案,比如docker swarm、Mesos、kubernetes。
docker swarm是docker公司開發的集群化管理軟體,用來實現PaaS的一個框架。
Docker swarm是docker官方提供的一款集群管理工具,它的作用是把很多台docker主機抽象成為一個主體,並且通過一個入口統一管理這些docker主機上的docker資源。想要運行一個容器,它就會自動地從多台docker主機中選擇一個最靠譜的去運行當前容器。
docker swarm被集成在docker的軟體包內,我們只需要執行docker swarm init就可以初始化出來一個docker集群。
Mesos是一個集群管理器,類似於yarn。它提供了有效的、跨分散式應用或者框架的資源隔離與共享。它可以運行Hadoop、Hypertable、Storm、Spark。
Kubernetes對資源的管控能力很強。kubernetes是一個集群管理軟體,也是一個資源管理系統。
kubernetes自帶服務發現和負載均衡的功能,之前部署負載均衡,需要使用lvs或者nginx做負載調度器,現在可以使用kubectl create service創建負載均衡的服務。
kubernetes支持存儲編排,可以添加本地存儲或者雲伺服器。
kubernetes可以實現自動部署和回滾,可以使用命令rollout實現回滾的功能。
kubernetes可以支持自動分配CPU資源和內存資源,實現彈性伸縮。kubernetes允許自定義一個CPU的閾值,當應用使用的資源超過閾值時,可以自動擴展。
kubernetes支持自我修復,容器可以秒級啟動。
kubernetes有一個secret的管理方案,也可以進行配置管理。kubernetes可以對敏感數據做編碼,如果要看敏感數據需要解碼。
kubernetes對大型規模也是支持的。kubernetes可以管理很多台物理機,kubernetes建議:
①:每個節點的pod數量不超過110個
②:節點數不超過5000
③:pod總數不超過150000
④:容器總數不超過300000
單個kubernetes集群的節點數量最好不超過5000個。
kubernetes是開源的資源管理系統,任何人都可以參與到這個kubernetes的開源項目中來。
開源的生態:取之於開源,供給於開源。
谷歌borg是谷歌早期開發的集群管理系統,用來管理大規模的容器化工作負載,是谷歌內部非常關鍵的基礎設施。borg從2003年開始使用,Borg的調度器設計、作業類型、資源分配和故障隔離這些特性被kubernetes所吸收和借鑒。
Omega是谷歌borg的一個後繼系統,2013年開始開發,用來解決Borg在大規模、動態、多租戶環境下的使用。Omega的多租戶和聲明式配置被借鑒到kubernetes中。
kubernetes自從2014年6月開始使用。
孔雀
鼓勵的話語:海到盡頭天作岸,山登絕頂我為峰。不屈的意志,會帶我們殺出重圍。具有堅定的信念,堅強的毅力,頑強的鬥志,人生終將輝煌!