1、什麼是K8S(Kubernetes)?
1.k8s全稱kubernetes,這個名字你們應該都不陌生,k8s是爲容器服務而生的一個可移植容器的編排管理工具,愈來愈多的公司正在擁抱k8s,而且當前k8s已經主導了雲業務流程,推進了微服務架構等熱門技術的普及和落地,正在如火如荼的發展。那麼稱霸容器領域的k8s到底是有什麼魔力呢?
2.首先,咱們從容器技術談起,在容器技術以前,你們開發用虛擬機比較多,好比vmware和openstack,咱們可使用虛擬機在咱們的操做系統中模擬出多臺子電腦(Linux),子電腦之間是相互隔離的,可是虛擬機對於開發和運維人員而言,存在啓動慢,佔用空間大,不易遷移的缺點。舉一個我親身經歷過的場景吧,以前在vmware中開發了一個線下平臺,爲了保證每次可以順利使用,咱們就把這個虛擬機導出爲OVF,而後隨身攜帶,用的時候在服務器中部署,這裏就充分體現了虛擬機的缺點。
接着,容器化技術應運而生,它不須要虛擬出整個操做系統,只須要虛擬一個小規模的環境便可,並且啓動速度很快,除了運行其中應用之外,基本不消耗額外的系統資源。Docker是應用最爲普遍的容器技術,經過打包鏡像,啓動容器來建立一個服務。可是隨着應用愈來愈複雜,容器的數量也愈來愈多,由此衍生了管理運維容器的重大問題,並且隨着雲計算的發展,雲端最大的挑戰,容器在漂移。在此業務驅動下,k8s問世,提出了一套全新的基於容器技術的分佈式架構領先方案,在整個容器技術領域的發展是一個重大突破與創新。
那麼,K8S實現了什麼?
從架構設計層面,咱們關注的可用性,伸縮性均可以結合k8s獲得很好的解決,若是你想使用微服務架構,搭配k8s,真的是完美,再從部署運維層面,服務部署,服務監控,應用擴容和故障處理,k8s都提供了很好的解決方案。
總而言之,k8s可使咱們應用的部署和運維更加方便。
2、kubernetes特性
1.自我修復
在節點故障時能夠刪除失效容器,從新建立新的容器,替換和從新部署,保證預期的副本數量,kill掉健康檢查失敗的容器,而且在容器未準備好以前不會處理客戶端狀況,確保線上服務不會中斷
2.彈性伸縮
使用命令、UI或者k8s基於cpu使用狀況自動快速擴容和縮容應用程序實例,保證應用業務高峯併發時的高可用性,業務低峯時回收資源,以最小成本運行服務
3.自動部署和回滾
k8s採用滾動更新策略更新應用,一次更新一個pod,而不是同時刪除全部pod,若是更新過程當中出現問題,將回滾恢復,確保升級不影響業務
4.服務發現和負載均衡
k8s爲多個容器提供一個統一訪問入口(內部IP地址和一個dns名稱)而且負載均衡關聯的全部容器,使得用戶無需考慮容器IP問題
5.機密和配置管理
管理機密數據和應用程序配置,而不須要把敏感數據暴露在徑向力,提升敏感數據安全性,並能夠將一些經常使用的配置存儲在k8s中,方便應用程序調用
6.存儲編排
掛載外部存儲系統,不管時來自本地存儲、公有云(aws)、仍是網絡存儲(nfs、GFS、ceph),都做爲集羣資源的一部分使用,極大提升存儲使用靈活性
7.批處理
提供一次性任務,定時任務:知足批量數據處理和分析的場景
3、kubernetes集羣架構與組件
kubernetes集羣架構拓補圖
注:node
確保了每一個pod的獨立性和安全性nginx