国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
kubernetes(k8s)以及涉及組件簡單介紹

什么是kubernetes?

        Kubernetes是一個全新的基于容器技術(shù)的分布式架構(gòu)領(lǐng)先方案。是Google內(nèi)部集群管理系統(tǒng)Borg的一個開源版本。直到2015年4月,隨著論文發(fā)布,才被眾人熟知。Kubernetes是一個開放的開發(fā)平臺。不局限于任何一種語言,沒有限定任何編程接口。是一個完備的分布式系統(tǒng)支撐平臺。它構(gòu)建在docker之上,提供應(yīng)用部署、維護、擴展機制等功能,利用Kubernetes能方便地管理跨機器運行容器化的應(yīng)用。Kubernetes在大概兩三周前,正式發(fā)布1.5版本。

主要功能體現(xiàn)在如下:

使用Docker對應(yīng)用程序包裝、實例化
以集群的方式運行、管理跨機器的容器
解決Docker跨機器容器之間的通訊問題
Kubernetes的自我修復(fù)機制使得容器集群總是運行在用戶期望的狀態(tài)

基本概念:

        Kubernetes中的大部分概念Node、Pod、Replication Controller、Service等都可以看作一種“資源對象”,幾乎所有的資源對象都可以通過kubectl工具(API調(diào)用)執(zhí)行增、刪、改、查等操作并將其保存在etcd中持久化存儲。從這個角度來看,kubernetes其實是一個高度自動化的資源控制系統(tǒng),通過跟蹤對比etcd庫里保存的“資源期望狀態(tài)”與當前環(huán)境中的“實際資源狀態(tài)”的差異來實現(xiàn)自動控制和自動糾錯的高級功能。

Master:集群控制管理節(jié)點,所有的命令都經(jīng)由master處理。


Node:是kubernetes集群的工作負載節(jié)點。Master為其分配工作,當某個Node宕機時,Master會將其工作負載自動轉(zhuǎn)移到其他節(jié)點。


        Node節(jié)點可動態(tài)增加到kubernetes集群中,前提是這個節(jié)點已經(jīng)正確安裝、配置和啟動了上述的關(guān)鍵進程,默認情況下,kubelet會向Master注冊自己,這也kubernetes推薦的Node管理方式。一旦Node被納入集群管理范圍,kubelet會定時向Master匯報自身的情況,以及之前有哪些Pod在運行等,這樣Master可以獲知每個Node的資源使用情況,并實現(xiàn)高效均衡的資源調(diào)度策略。如果Node沒有按時上報信息,則會被Master判斷為失聯(lián),Node狀態(tài)會被標記為Not Ready,隨后Master會觸發(fā)工作負載轉(zhuǎn)移流程。

Pod:是kubernetes最重要也是最基本的概念。每個Pod都會包含一個 “根容器”,還會包含一個或者多個緊密相連的業(yè)務(wù)容器。
                            
    
        Kubernetes為每個Pod都分配了唯一的IP地址,稱之為PodIP,一個Pod里的多個容器共享PodIP地址。要求底層網(wǎng)絡(luò)支持集群內(nèi)任意兩個Pod之間的直接通信,通常采用虛擬二層網(wǎng)絡(luò)技術(shù)來實現(xiàn)(Flannel)。

Label:是一個key=value的鍵值對,其中key與value由用戶自己指定??梢愿郊拥礁鞣N資源對象上,一個資源對象可以定義任意數(shù)量的Label。可以通過LabelSelector(標簽選擇器)查詢和篩選資源對象。


                  

RC:Replication Controller聲明某個Pod的副本數(shù)在任意時刻都符合某個預(yù)期值。定義包含如下:

   (1)Pod期待的副本數(shù)(replicas)

   (2)用于篩選目標Pod的Label Selector

   (3)當Pod副本數(shù)小于期望時,用于新的創(chuàng)建Pod的模板template

  (4)通過改變RC里的Pod副本數(shù)量,可以實現(xiàn)Pod的擴容或縮容功能

  (5)通過改變RCPod模板中的鏡像版本,可以實現(xiàn)Pod的滾動升級功能


                       


思考:如果Node2上的pod死掉怎么辦?

Service:“微服務(wù)”,kubernetes中的核心。通過分析、識別并建模系統(tǒng)中的所有服務(wù)為微服務(wù),最終系統(tǒng)有多個提供不同業(yè)務(wù)能力而又彼此獨立的微服務(wù)單元所組成,服務(wù)之間通過TCP/IP進行通信。每個Pod都會被分配一個單獨的IP地址,而且每個Pod都提供了一個獨立的Endpoint以被客戶端訪問。
思考:客戶端如何訪問?
        部署負載均衡器,為Pod開啟對外服務(wù)端口,將Pod的Endpoint列表加入轉(zhuǎn)發(fā)列表中,客戶端通過負載均衡器的對外IP+Port來訪問此服務(wù)。每個Service都有一個全局唯一的虛擬ClusterIP,這樣每個服務(wù)就變成了具備唯一IP地址的“通信節(jié)點”,服務(wù)調(diào)用就變成了最基礎(chǔ)的TCP網(wǎng)絡(luò)通信問題。

Volume:是Pod中能夠被多個容器訪問的共享目錄。定義在Pod之上,被一個Pod里的多個容器掛載到具體的文件目錄之下;與Pod生命周期相同。
可以讓一個Pod里的多個容器共享文件、讓容器的數(shù)據(jù)寫到宿主機的磁盤上或者寫文件到 網(wǎng)絡(luò)存儲中,具體如下圖所示:
                                                     

        在kubernetes1.2的時候,RC就由Replication Controller升級成Replica Set,“下一代RC”。命令兼容適用,Replica Set主要被Deployment這個更高層的資源對象所使用,從而形成一套Pod創(chuàng)建、刪除、更新的編排機制。當我們使用Deployment時,無需關(guān)心它是如何創(chuàng)建和維護ReplicaSet的,這一切是自動發(fā)生的。

docker

        既然k8s是基于容器的,那么就不得不提到docker。2013年初,docker橫空出世,孕育著新思想的“容器”,Docker選擇容器作為核心和基礎(chǔ),以容器為資源分割和調(diào)度的基本單位,封裝整個軟件運行時環(huán)境,為開發(fā)者和系統(tǒng)管理員設(shè)計,用于構(gòu)建、發(fā)布和運行分布式應(yīng)用的平臺。是一個跨平臺、可移植并且簡單易用的容器解決方案。通過操作系統(tǒng)內(nèi)核技術(shù)(namespaces、cgroups等)為容器提供資源隔離與安全保障。
                              

        上圖是一個image的簡單使用。我們可以通過一個dockerfile來build自己的image??梢园裪mage上傳(push)到自己的私有鏡像倉庫,也可以從私有倉庫pull到本地進行使用??梢詥为毷褂妹钚校苯觬un container,可以對container進行stop、start、restart操作。也可以對image進行save保存操作以及加載load操作,大家具體可以根據(jù)自己的使用,選擇不同的操作即可。

docker資源隔離技術(shù)

        2013年初,docker橫空出世,孕育著新思想的“容器”,Docker選擇容器作為核心和基礎(chǔ),以容器為資源分割和調(diào)度的基本單位,封裝整個軟件運行時環(huán)境,為開發(fā)者和系統(tǒng)管理員設(shè)計,用于構(gòu)建、發(fā)布和運行分布式應(yīng)用的平臺。是一個跨平臺、可移植并且簡單易用的容器解決方案。通過操作系統(tǒng)內(nèi)核技術(shù)(namespaces、cgroups等)為容器提供資源隔離與安全保障。(關(guān)于這兩種資源隔離技術(shù),本人只能從功能上說明兩者相當于就是分組,隔離,但是具體的內(nèi)部原理還不甚了解,所以此處只提下概念,如皋想要深入了解,可搜集其他資料)

docker監(jiān)控

        cAdvisor(Container Advisor)是Google開發(fā)的用于分析運行中容器的資源占用和性能指標的開源工具。cAdvisor是一個運行時的守護進程,負責收集、聚合、處理和輸出運行中容器的信息。對于每個容器,cAdvisor都有資源隔離參數(shù)、資源使用歷史情況以及完整的歷史資源使用和網(wǎng)絡(luò)統(tǒng)計信息的柱狀圖。
        cAdvisor不但可以為用戶提供監(jiān)控服務(wù),還可以結(jié)合其他應(yīng)用為用戶提供良好的服務(wù)移植和定制。包括結(jié)合InfluxDB對數(shù)據(jù)進行存儲,以及結(jié)合Grafana提供web控制臺,自定義查詢指標,并進行展示。
                   


etcd

     etcd是一個鍵值存儲倉庫,用于配置共享和服務(wù)發(fā)現(xiàn)。etcd受Zookeeper與doozer啟發(fā)而催生的項目。

etcd架構(gòu)

                                     

etcd存儲

        etcd的存儲分為內(nèi)部存儲和持久化(硬盤)存儲兩部分。內(nèi)存中的存儲除了順序化地記錄所有用戶對節(jié)點數(shù)據(jù)變更的記錄外,還會對用戶數(shù)據(jù)進行索引、建堆等方便查詢的操作。而持久化則使用WAL進行記錄存儲。在k8s中,所有數(shù)據(jù)的存儲以及操作記錄都在etcd中進行存儲,所以對于k8s集群來說,etcd是相當重要的,一旦故障,可能導致整個集群的癱瘓或者數(shù)據(jù)丟失。
   在WAL體系中,所有的數(shù)據(jù)在提交之前都會進行日志記錄。持久化存儲的目錄分為兩個:snap和wal。snapshot相當于數(shù)據(jù)壓縮,默認會將10000條wal操作記錄merge成snapshot,節(jié)省存儲,又保證數(shù)據(jù)不會丟失。
   WAL:存儲所有事務(wù)的變化記錄
   Snapshot:用于存放某一時刻etcd所有目錄的數(shù)據(jù)
思考:數(shù)據(jù)損壞或者機器故障怎么辦???

etcd核心算法

etcd的核心算法是raft算法,強一致性算法。具體如下圖所示
                 

                      

注意:由于etcd是負責存儲,所以不建議搭建單點集群,如zookeeper一樣,由于存在選舉策略,所以一般推薦奇數(shù)個集群,如3,5,7。只要集群半數(shù)以上的結(jié)點存活,那么集群就可以正常運行,否則集群可能無法正常使用。

k8s集群部署方案

如下是我的集群部署策略,1個master + 2個node(minion1.2之前的叫法)。我的存儲集群etcd是單點集群,不推薦此做法,你懂得,哈哈。網(wǎng)絡(luò)使用的是flannel虛擬二次網(wǎng)絡(luò)。
                        

如何驗證?

搭建完成之后,命令行執(zhí)行:kubectl  get  no    查看節(jié)點狀態(tài)是否ready。
其他的大家可以通過代碼來進行驗證,看是否可以成功訪問各個服務(wù)以及成功運行。


ok,以上是我的初步總結(jié),歡迎留言指導。順便吐槽下,個人覺得csdn真的太難用了,么有預(yù)覽,還有格式排版好難用,看看我的上一篇格式都成啥了,唉,吐槽!??!
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Docker集群管理工具-Kubernetes部署記錄
k8s安全學習
Kubernetes 如何打贏容器之戰(zhàn)?
致運維:關(guān)于 Kubernetes 的架構(gòu),看完這篇你就明白了
001.OpenShift介紹
我花了10個小時,寫出了這篇K8S架構(gòu)解析
更多類似文章 >>
生活服務(wù)
分享 收藏 導長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服