天天看點

k8s上的基礎概念和術語

kubernetes基本概念和術語   kubeernetes中的大部分概念如Node,Pod,Replication Controller ,Serverce等都可以看作一種“資源對象”,幾乎所有的資源對象都可以通過

kubernetes提供的kubectl工具(或者API程式設計調用)執行增删改查等操作并将其儲存在etcd中持久化存儲。從這個角度來看,kubernetes其實

是一個高度自動化的資源控制系統,它通過跟蹤對比etcd庫裡儲存的“資源期望狀态”與目前環境中的“實際資源狀态”的差異來實作自動控制

和自動糾錯的進階功能。   Master   Master:叢集控制節點。每個Kubernetes叢集裡需要有一個Master節點來負責整個叢集的管理和控制。基本上Kubernetes所有的控制指令都是

發給它,它來負責具體的執行過程,我們後面所有執行的指令都是在Master節點上運作的。Master節點通常會占據一個獨立的X86伺服器(或者

一個虛拟機),一個主要的原因是它太重要了,它是整個叢集的“首腦”,如果它當機或者不可用,那麼我們所有的控制指令都失效。

在Master節點上運作着一下一組關鍵程序:

Kuberneres API Server(kube-apiserver),提供了HTTP Rest 接口的關鍵服務程序,是Kubernetes裡所有資源的增删改查等操作的唯一入口,也是
叢集控制的入口程序。
Kubernetes Controller Manager ,Kubernetes裡所有資源對象的自動化控制中心,可以了解為資源對象的“大總管”。
Kubernetes Scheduler ,負責資源排程的程序,相當于公交司機的“排程室”
其實Master節點上往往還啟動了一個etcd Server 程序,因為Kubernetes裡所有的資源對象的資料全部是儲存在etcd中。      

Node   除了Master ,Kubernetes叢集中的其他機器被稱為Node節點。和Master一樣,Node節點可以是一台實體主機,也可以是一台虛拟機。Node節點

才是Kubernetes叢集中的工作負載節點,每個Node都會被Master配置設定一些工作負載(Docker容器),當某個Node當機時,其上的工作負載會被

Master自動轉移到其他節點上去。 每個Node節點上都運作着一組關鍵程序:

kubelet:負責Pod對應的容器的建立,啟停等任務,同時與Master節點密切協作 ,實作叢集管理的基本功能。
kube-proxy: 實作Kubernetes Service的通信與負載均衡機制的重要組建。
Docker Engine(docker):Docker引擎,負責本機的容器建立和管理工作。
Node 節點可以在運作期間動态增加到Kubernetes叢集中,一旦Node被納入叢集管理範圍,kubelet程序就會定時向Master節點彙報自身的情報,
例如作業系統,Docker版本,機器的CPU和記憶體情況,以及之前有哪些Pod在運作等,這樣Master可以獲知每個Node的資源使用情況,并實作
高效均衡的資源排程政策。而某個Node超過指定時間不上報資訊時,會被Master判定為"失聯",Node的狀态被标記為不可用(not ready),随後Master
會觸發“工作負載大轉移”的自動流程。
檢視叢集中有多少個Node:
kubectl get nodes
檢視某個nodede 詳細資訊:
kubectl describe node <node name>      

Pod   pod是kubernetes的最重要也是最基本的概念,Pod是Kubernetes最基本的操作單元,包含一個或多個緊密相關的容器,一個Pod是一組相關容器的組合。一個Pod可以被一個容器

化的環境看作應用層的“邏輯主控端”;每個Pod都有一個特殊的容器被稱為"根容器"的Pause容器。Pause容器對應的鏡像是Kubenetes平台的一部分,

除了Pause容器, 每個Pod還包含一個或多個緊密相關的使用者業務容器。為何Kubernetes會設計出一個Pod概念呢?

每個容器都代表一個應用,一組相關容器要互相通信,在一個Pod中,多個業務容器共享Pause容器的IP,共享Pause容器挂接的Volume,這樣既簡化了密切

關聯的關系密切的關系容器之間的通信問題,也解決了他們之間的檔案共享問題    

k8s上的基礎概念和術語

 Service

在Kubernetes的世界裡,雖然每個Pod都會被配置設定一個單獨的IP位址,但這個IP位址會随着Pod的銷毀而消失,這就引出一個問題:如果有一組Pod組成一個叢集來提供服務,那麼如何來通路它呢?Service!

一個Service可以看作一組提供相同服務的Pod的對外通路接口,Service作用于哪些Pod是通過Label Selector來定義的。

  • 擁有一個指定的名字(比如my-mysql-server);
  • 擁有一個虛拟IP(Cluster IP、Service IP或VIP)和端口号,銷毀之前不會改變,隻能内網通路;
  • 能夠提供某種遠端服務能力;
  • 被映射到了提供這種服務能力的一組容器應用上;

如果Service要提供外網服務,需指定公共IP和NodePort,或外部負載均衡器;

NodePort 

系統會在Kubernetes叢集中的每個Node上打開一個主機的真實端口,這樣,能夠通路Node的用戶端就能通過這個端口通路到内部的Service了

轉載于:https://www.cnblogs.com/chaojiyingxiong/p/11066107.html

繼續閱讀