k8s是什么


k8s全稱kubernetes,這個名字大家應該都不陌生,k8s是為容器服務而生的一個可移植容器的編排管理工具,越來越多的公司正在擁抱k8s,並且當前k8s已經主導了雲業務流程,推動了微服務架構等熱門技術的普及和落地,正在如火如荼的發展。那么稱霸容器領域的k8s究竟是有什么魔力呢?

首先,我們從容器技術談起,在容器技術之前,大家開發用虛擬機比較多,比如vmware和openstack,我們可以使用虛擬機在我們的操作系統中模擬出多台子電腦(Linux),子電腦之間是相互隔離的,但是虛擬機對於開發和運維人員而言,存在啟動慢,占用空間大,不易遷移的缺點。舉一個我親身經歷過的場景吧,之前在vmware中開發了一個線下平台,為了保證每次能夠順利使用,我們就把這個虛擬機導出為OVF,然后隨身攜帶,用的時候在服務器中部署,這里就充分體現了虛擬機的缺點。

接着,容器化技術應運而生,它不需要虛擬出整個操作系統,只需要虛擬一個小規模的環境即可,而且啟動速度很快,除了運行其中應用以外,基本不消耗額外的系統資源。Docker是應用最為廣泛的容器技術,通過打包鏡像,啟動容器來創建一個服務。但是隨着應用越來越復雜,容器的數量也越來越多,由此衍生了管理運維容器的重大問題,而且隨着雲計算的發展,雲端最大的挑戰,容器在漂移。在此業務驅動下,k8s問世,提出了一套全新的基於容器技術的分布式架構領先方案,在整個容器技術領域的發展是一個重大突破與創新。

那么,K8S實現了什么?

從架構設計層面,我們關注的可用性,伸縮性都可以結合k8s得到很好的解決,如果你想使用微服務架構,搭配k8s,真的是完美,再從部署運維層面,服務部署,服務監控,應用擴容和故障處理,k8s都提供了很好的解決方案。

具體來說,主要包括以下幾點:

  1. 服務發現與調度
  2. 負載均衡
  3. 服務自愈
  4. 服務彈性擴容
  5. 橫向擴容
  6. 存儲卷掛載

總而言之,k8s可以使我們應用的部署和運維更加方便。

最后,我們看下k8s的架構:

k8s集群由Master節點和Node(Worker)節點組成。

Master節點

Master節點指的是集群控制節點,管理和控制整個集群,基本上k8s的所有控制命令都發給它,它負責具體的執行過程。在Master上主要運行着:

  1. Kubernetes Controller Manager(kube-controller-manager):k8s中所有資源對象的自動化控制中心,維護管理集群的狀態,比如故障檢測,自動擴展,滾動更新等。
  2. Kubernetes Scheduler(kube-scheduler): 負責資源調度,按照預定的調度策略將Pod調度到相應的機器上。
  3. etcd:保存整個集群的狀態。

Node節點

除了master以外的節點被稱為Node或者Worker節點,可以在master中使用命令 kubectl get nodes查看集群中的node節點。每個Node都會被Master分配一些工作負載(Docker容器),當某個Node宕機時,該節點上的工作負載就會被Master自動轉移到其它節點上。在Node上主要運行着:

  1. kubelet:負責Pod對應的容器的創建、啟停等任務,同時與Master密切協作,實現集群管理的基本功能
  2. kube-proxy:實現service的通信與負載均衡
  3. docker(Docker Engine):Docker引擎,負責本機的容器創建和管理

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM