色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

您好,歡迎來電子發燒友網! ,新用戶?[免費注冊]

您的位置:電子發燒友網>源碼下載>數值算法/人工智能>

Kubernetes和Mesos集成的優勢與原理

大小:0.8 MB 人氣: 2017-10-12 需要積分:1
 Kubernetes是一個docker集群管理工具,主要包含資源管理,部署運行,服務發現,擴容縮容等功能,幫助用戶把所有的應用都部署在Docker Container里邊,Kubernetes可以看成是一個mini的PaaS平臺,主要用來幫助用戶管理Docker Container。
  Apache Mesos是一款開源集群管理軟件,由加州大學伯克利分校的AMPLab首先開發;支持Hadoop、ElasticSearch、Spark、Storm 和Kafka等架構。Mesos 為上層的應用框架提供了資源共享,資源監控,動態擴容等集群管理功能。由于其穩定、通用等特性,越來越受到大型公司的青睞,例如Twitter、Facebook、Apple等都在生產環境中使用Mesos進行集群管理。
  集成優勢
  Kubernetes worker節點自動擴展
  一個普通的Kubernetes集群會包含若干臺Master和Worker節點,這些都需要用戶手動或者通過腳本去安裝,如果想實現Kubernets Auto Scaling的話,需要將Kubernetes部署在一個IaaS的云平臺之上,通過云平臺對Kubernetes提供資源,同時對Kubernets監控,根據負載進行自動擴展,但是Kubernetes和云平臺的集成稍顯厚重。
  Kubernetes和Mesos集成完成之后,也可以實現Worker節點的自動擴展,所有Worker節點都是自動創建的,不需要用戶手動干預。詳細信息在“集成原理”會介紹。
  資源共享
  一旦Mesos和Kubernetes集成完成之后,Kubernetes會作為Mesos的一個Framework運行在Mesos之上。因為一個Mesos可以同時為多個Framework提供資源,當Kubernetes作為Mesos的一個Framework之后,Mesos就可以實現Kubernetes和其它Framework之間的資源共享。
  集成原理
  Kubernetes和Mesos集成的優勢與原理
  在Kuberntes與Mesos的集成中,Kubernetes的Scheduler會作為Mesos的Framework對Pod與Offer進行匹配;而Kubernetes 的 kubelet 與 kube-proxy則會被新增加的Mesos Executor進行管理來啟動相應的Worker并對網絡進行配置,從而達到動態擴容的需求。
  Kubernetes 與 Mesos集成中包含了多個方面內容;本文的將主要集中介紹資源調度相關部分,后續會有文章介紹其它集成點,如資源執行,環境搭建,測試等等。
  Kubernetes Worker節點的創建
  K8sm的kubernetes worker節點是動態創建的,不需要用戶手動創建。創建流程如下:
  1) 當k8sm的framework注冊成功后,馬上就會收到Mesos發來的Offer。因為Mesos的Offer都是Coarse-grained Offer,所以當前發來的Offer會包含整個host的全部資源。
  2) K8sm scheduler收到Offer后,會首先檢查當前的Offer是不是合法的,所謂的合法Offer,需要滿足兩個條件,第一個就當前的這個Offer的資源來自于Kubernetes的某個worker節點,第二個是當前Offer的ExeuctorId必須是沒有或者只有一個,并且Offere的ExeuctorId和k8sm scheduler啟動時設置的ExeuctorId相同。但是在k8s剛注冊的時候,是沒有任何worker節點的,這時候k8sm的scheduler做的事情就是Decline這個Offer,即把這個Offer返回給Mesos,但是會把這個Offer對應的host為Kubernetes創建一個worker節點。一個合法的Offer需要滿足一下幾個條件:
  ● 當前Offer的資源來自于Kubernetes的某個worker節點。
  ● 當前Offer的ExeuctorId必須是沒有或者只有一個,并且Offer的ExeuctorId和k8sm scheduler啟動時設置的ExeuctorId相同。
  ● 如果當前Offer中只有一個ExecutorId,是否有效合法取決Agent的屬性是否有變化:如果屬性沒有變化,認為Offer是合法的;否則認為是無效的。
  3) 如此周而復始,一直將Mesos集群中所有的節點加入Kubernetes的worker節點。
  4) 當有新的Mesos節點加入Mesos集群時,新加入的節點也會給k8sm scheduler發Offer,k8sm scheduler會將新加入的Mesos節點創建為一個Kunernetes的worker節點。
  5) 所有的Kubenetes worker節點都會存在etcd中。用戶可以通過命令“kubectl get nodes”或者直接使用“etcdctl”查看Kubenetes中的所有worker節點。
  當Kubernetes Worker節點創建完成后,Mesos再發Offer時,如果發現當前Offer的Host是Kubernetes的一個Worker節點,k8sm scheduler就會把這個Offer作為一個合法的Offer,同時將該Offer緩存起來,默認的緩存時間是5s.
  Offer生命周期管理
  Framework 實現了 Mesos 的 SchedulerDriver接口;該接口用于Mesos 和 Framework之間的交互。當k8sm scheduler啟動后,會創建一個名為 OfferStorage 的 go routine 用于 Offer 的生命周期管理。下面會根據Offer的創建,使用及銷毀三個階段對Offer進行分析。
  Offer的創建
  如上文描述的,當Framework注冊到Mesos上后,Mesos會定期 (–allocation_interval) 向Framework發送Offer。k8sm scheduler 通過以下的原則檢測收到的Offer是否合法;如果合法,則放入Offer的緩存中;否則把資源返回給Mesos。
  當對Offer進行緩存時,會有兩個隊列對Offer信息進行存儲:delayed 和 Offers。Offers 用于Pod的運行;而當Offer銷毀時會使用 delayed 隊列;具體的銷毀過程會在”Offer的銷毀”進行分析。
  Offer的使用
  在k8sm scheduler啟動后,會有一個go routine周期性的檢查是不是有新的Pod創建請求。如果有新的Pod創建請求,將這個請求放入k8sm scheduler的任務隊列。k8sm scheduler會從這個任務隊列取出需要創建的Pod進行調度,調度的主要目的是為當前的Pod找到合適的服務器來運行。
  因為Kubernetes是作為Mesos的framework來運行的,所以對Offer的使用主要由兩個API來處理:ResourceOffers和LaunchTask。但是對Offer的處理可以主要分為三部分:獲取Offer,關聯Task和Offer,執行task。每一個Task對應一個Pod。
  獲取Offer
  Offer主要是通過ResourceOffer獲取的。這個API是Mesos Framework的API,所有的Frameworkd都需要實現這個API用來接收從Mesos發送來的Offer。前邊已經講了ResourceOffer會觸發添加新的Kuernetes worker節點,同時這個Offer會被緩存起來,緩存時間可以通過參數配置,默認是5s。
  關聯Task和Offer
  在k8sm scheduler啟動后,會有一個go routine周期性的檢查是不是有新的Pod創建請求。如果有新的Pod創建請求,將這個請求放入k8sm scheduler的任務隊列。k8sm scheduler會從這個任務隊列取出需要創建的Pod進行調度。
  在對Pod進行調度的時候,k8sm scheduler回選擇將Task和Offer關聯。k8sm scheudler現在默認是FCFS算法調度。FCFS對Pod進行調度的時候,主要是為Task挑選合適的Offer,對當前緩存的Offer逐個進行校驗,直到為當前的Task選出合適Offer。對Offer的選擇主要通過四個方法來進行檢驗:
  1) 第一個校驗是Node的校驗,主要是檢查當前Offer的host是不是可以被當前的Pod使用。因為Pod在創建的時候,可以直接在Pod的YAML文件中指定創建的host或者NodeSelector,Node的校驗主要是檢查當前Offer的host是不是可以為這個Pod所用。如果當前的Host可以為Pod所用,那么當前的Node校驗就會把Host作為隨后校驗的參數;反之則校驗下一個Offer。
  2) 第二個校驗是Pod的資源校驗,主要是檢查當前的Host是不是有足夠的資源啟動Pod。現在檢查的主要是CPU和Memeory。如果資源足夠,進行下一個校驗。
  3) 第三個校驗主要是端口的校驗,主要是檢查端口沖突。檢查當前Host上的端口是不是可以為Pod所用。
  4) 第四個校驗,也就是最后一個校驗,主要是校驗Executor。K8sm scheduler主要是使用一個executor管理了所有的task,所以如果Executor校驗發現當前Offer中有兩個Exeuctor ID,會返回錯誤,校驗下一個Offer;如果發現當前Offer已經包含一個Executor ID了,這時候直接返回,當前Offer可用;如果發現當前Offer中不包含Executor ID,還需要查一下當前的Offer有沒有足夠的資源啟動Executor,如果有足夠的資源啟動Executor,當前Offer可用。
  以上四個校驗主要是檢查一個Offer是否可用和一個Task綁定。如果檢驗完成后,Offer可用,k8sm scheduler就會把該Offer和當前Task關聯起來。
  在Task Launch之前,還會檢查下當前的Task是不是關聯一個Offer,如果Task沒有關聯Offer,k8sm scheduler會返回錯誤,因為Task在運行的時候,必須從某個Offer獲取資源才可以運行。
  LaunchTask
  當Task和Offer關聯完成后,k8sm scheduler就開始執行Task了。在執行LaunchTasks之前,需要對Task信息按照Mesos需要的格式進行構建,例如設置Task名字,Task需要的SlaveId,Task需要的資源,Task ID,Task的Executor信息等等。接下來就調用Mesos Framework API LaunchTasks去創建Pod了,具體創建Pod的工作由k8sm的Executor執行。
  在Worker節點,Mesos 的 Agent 會負責Executor管理。k8sm的Executor會先創建一個名為MinionServer的對象來負責proxy 和 executor 的管理:proxy通過nsenter, iptables等對網絡進行配置;而executor則實現了Mesos Executor接口,用于接收并執行作業,例如在Docker中啟動Pod。限于篇幅,網絡配置和Pods的執行細節會以后的文章會進行具體的描述。

非常好我支持^.^

(0) 0%

不好我反對

(0) 0%

      發表評論

      用戶評論
      評價:好評中評差評

      發表評論,獲取積分! 請遵守相關規定!

      ?
      主站蜘蛛池模板: 国产真实强被迫伦姧女在线观看| 99久热精品免费观看| 伊人久久大香线蕉综合影| 伊人久久精品99热超碰| 92电影网午夜福利| 苍井空小公主qvod| 国产精品久久欧美一区| 国语自产二区高清国语自产拍| 九九精品视频一区二区三区| 两性午夜色视频免费网站| 欧美亚洲曰韩一本道| 无码一区二区在线欧洲| 一本到高清视频在线观看三区| 67194con免费福和视频| 成人人观看的免费毛片| 国产强奷伦奷片| 恋夜影视列表免费安卓手机版| 全肉高H短篇合集| 亚洲福利电影一区二区?| 最新精品国产| 古代又黄又肉到湿的爽文| 精品高潮呻吟99AV无码| 欧美乱妇日本无乱码特黄大片| 无人区尖叫之夜美女姐姐视频| 亚洲伊人久久网| 阿娇和冠希13分钟在线观看| 国产精品亚洲精品久久国语| 久久电影午夜| 日日干日日操日日射| 亚洲在线视频自拍精品| 百性阁论坛首页| 精品免费在线视频| 日本高清免费在线观看| 亚洲视频不卡| 动漫美女被到爽了流漫画| 久久福利影院| 婷婷精品国产亚洲AV在线观看| 最新国产亚洲亚洲精品视频| 国产成人综合在线观看网站| 乱淫67194| 午夜在线视频国产极品片 |