Kubernetes簡要介紹

1、Kubernetes體系架構
Kubernetes是Google開源的容器集羣管理系統,其提供應用部署、維護、 擴展機制等功能,利用Kubernetes能方便地管理跨機器運行容器化的應用,其主要功能以下:
1) 使用Docker對應用程序包裝(package)、實例化(instantiate)、運行(run)。
2) 以集羣的方式運行、管理跨機器的容器。
3) 解決Docker跨機器容器之間的通信問題。
4) Kubernetes的自我修復機制使得容器集羣老是運行在用戶指望的狀態。
Kubernetes簡要介紹前端

Kubernetes Master節點的組成
一、etcd
全部的持久性狀態都保存在etcd中。Etcd同時支持watch,這樣組件很容易獲得系統狀態的變化,從而快速響應和協調工做。node

二、Kubernetes API Server
這個組件提供對API的支持,響應REST操做,驗證API模型和更新etcd中的相應對象。web

三、Scheduler
經過訪問Kubernetes中/binding API, Scheduler負責Pods在各個節點上的分配。Scheduler是插件式的,Kubernetes未來能夠支持用戶自定義的scheduler。docker

四、Kubernetes Controller Manager Server
Controller Manager Server負責全部其它的功能,好比endpoints控制器負責Endpoints對象的建立,更新。node控制器負責節點的發現,管理和監控。未來可能會把這些控制器拆分而且提供插件式的實現。數據庫

Kubernetes slave節點的組成
一、Kubelet
Kubelet組件管理Pods和它們的容器,鏡像和卷等信息。後端

二、Kube-Proxy
Kube-proxy是一個簡單的網絡代理和負載均衡器。它具體實現Service模型,每一個Service都會在全部的Kube-proxy節點上體現。根據Service的selector所覆蓋的Pods, Kube-proxy會對這些Pods作負載均衡來服務於Service的訪問者。
Kubernetes簡要介紹centos

2、Kubernetes組件
Kubernetes以RESTFul形式開放接口,用戶可操做的REST對象有三個:
一、pod:是Kubernetes最基本的部署調度單元,能夠包含container,邏輯上表示某種應用的一個實例。好比一個web站點應用由前端、後端及數據庫構建而成,這三個組件將運行在各自的容器中,那麼咱們能夠建立包含三個container的pod。api

二、service:是pod的路由代理抽象,用於解決pod之間的服務發現問題。由於pod的運行狀態可動態變化(好比切換機器了、縮容過程當中被終止了等),因此訪問端不能以寫死IP的方式去訪問該pod提供的服務。service的引入旨在保證pod的動態變化對訪問端透明,訪問端只須要知道service的地址,由service來提供代理。網絡

三、replicationController:是pod的複製抽象,用於解決pod的擴容縮容問題。一般,分佈式應用爲了性能或高可用性的考慮,須要複製多份資源,而且根據負載狀況動態伸縮。經過replicationController,咱們能夠指定一個應用須要幾份複製,Kubernetes將爲每份複製建立一個pod,而且保證明際運行pod數量老是與該複製數量相等(例如,當前某個pod宕機時,自動建立新的pod來替換)。架構

能夠看到,service和replicationController只是創建在pod之上的抽象,最終是要做用於pod的,那麼它們如何跟pod聯繫起來呢?這就要引入label的概念:label其實很好理解,就是爲pod加上可用於搜索或關聯的一組key/value標籤,而service和replicationController正是經過label來與pod關聯的。以下圖所示,有三個pod都有label爲"app=backend",建立service和replicationController時能夠指定一樣的label:"app=backend",再經過label selector機制,就將它們與這三個pod關聯起來了。例如,當有其餘frontend pod訪問該service時,自動會轉發到其中的一個backend pod。

3、軟件包安裝
centos7系統經過yum方式安裝便可。當前kubernetes的最新版本爲1.9,目前尚不建議在生產環境使用1.9版本,官網推薦使用kubeadm部署,爲了更簡單也更系統的學習kubernetes集羣的組件,本系列文章採用rpm方式安裝kubernetes 1.5.2 版本,後續會介紹如何本地離線安裝1.9版本。

# yum -y install etcd kubernetes
Kubernetes簡要介紹
一、通用配置文件
/etc/kubernetes/config

二、Apiserver服務配置文件
/etc/kubernetes/apiserver
啓動腳本:/lib/systemd/system/kube-apiserver.service

三、kube-controller-manager 服務配置文件
/etc/kubernetes/controller-manager
啓動腳本:/lib/systemd/system/kube-controller-manager.service

四、kube-scheduler服務配置文件
/etc/kubernetes/scheduler
啓動腳本: /lib/systemd/system/kube-scheduler.service

五、kubernet服務配置文件
/etc/kubernetes/kubelet
啓動腳本:/lib/systemd/system/kubelet.service

六、Kube-proxy服務
/etc/kubernetes/proxy
啓動腳本:/lib/systemd/system/kube-proxy.service

5、服務啓動
一、master節點

# systemctl start etcd
# systemctl start kube-apiserver*
# systemctl start kube-controller-manager*
# systemctl start kube-scheduler*

二、slave節點

# systemctl start docker*
# systemctl start kubelet*
# systemctl start kube-proxy*

6、注意事項在kubernetes系統中,對容器的要求是,須要一直在前臺執行。

相關文章
相關標籤/搜索