日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

k8s创建pod加入容器_K8S架构原理及其工作流程

發布時間:2023/12/4 编程问答 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 k8s创建pod加入容器_K8S架构原理及其工作流程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

K8S

容器編排系統

容器編排系統需要滿足的條件:

  • 服務注冊,服務發現
  • 負載均衡
  • 配置、存儲管理
  • 健康檢查
  • 自動擴縮容
  • 零宕機
  • K8S整體架構圖

    K8S整體架構

    Kubernetes采用主從分布式架構,包括Master(主節點)、Worker(從節點或工作節點),以及客戶端命令行工具kubectl和其它附加項。

    K8S Master

    Master架構圖

    etcd保存了整個集群的狀態,CoreOS提供(用戶期望狀態)。K/V存儲,只能存儲Api Server中支持的數據范式存儲;

    Api Server提供了資源操作的唯一入口,并提供認證、授權、訪問控制、API注冊和發現等機制;

    controller負責維護集群的狀態,比如故障檢測、自動擴展、滾動更新等(確保用戶期望狀態與實際運行狀態一致);

    scheduler負責資源的調度,按照預定的調度策略將Pod調度到相應的機器上,pod是調度的最小單位;

    K8S Node

    Node架構圖

    kubelet:會監控Api Server上的資源變動,若變動與自己有關系,kublet就去執行任務;定期向master會報節點資源使用情況。

    kube-proxy:實現service的抽象,為一組pod抽象的服務提供統一接口并提供負載均衡。

    POD創建過程

    POD創建時序圖

    1、用戶提交創建POD請求

    2、API Server 處理用戶請求,存儲Pod數據到Etcd

    3、Schedule通過和 API Server的監聽機制,查看到新的pod,嘗試為Pod綁定Node

    4、過濾主機:調度器用一組規則過濾掉不符合要求的主機,比如Pod指定了所需要的資源,那么就要過濾掉資源不夠的主機

    5、主機打分:對第一步篩選出的符合要求的主機進行打分,在此階段,調度器會考慮一些整體優化策略,比如把一個Replication Controller的副本分布到不同的主機上,使用最低負載的主機等

    6、選擇主機:選擇得分最高的主機,進行binding操作,結果存儲到Etcd中

    7、kubelet根據調度結果執行Pod創建操作:綁定成功后,會啟動container, docker run, scheduler會調用API Server的API在etcd中創建一個bound pod對象,描述在一個工作節點上綁定運行的所有pod信息。運行在每個工作節點上的kubelet也會定期與etcd同步bound pod信息,一旦發現應該在該工作節點上運行的bound pod對象沒有更新,則調用Docker API創建并啟動pod內的容器

    8、POD創建完成

    K8S各組件工作流程

    工作流程

    ①運維人員向kube-apiserver發出指令(我想干什么,我期望事情是什么狀態)

    ②api響應命令,通過一系列認證授權,把pod數據存儲到etcd,創建deployment資源并初始化。(期望狀態)

    ③controller通過list-watch機制,監測發現新的deployment,將該資源加入到內部工作隊列,發現該資源沒有關聯的pod和replicaset,啟用deployment controller創建replicaset資源,再啟用replicaset controller創建pod。

    ④所有controller被創建完成后.將deployment,replicaset,pod資源更新存儲到etcd。

    ⑤scheduler通過list-watch機制,監測發現新的pod,經過主機過濾、主機打分規則,將pod綁定(binding)到合適的主機。

    ⑥將綁定結果存儲到etcd。

    ⑦kubelet每隔 20s(可以自定義)向apiserver通過NodeName 獲取自身Node上所要運行的pod清單.通過與自己的內部緩存進行比較,新增加pod。

    ⑧kubelet創建pod。

    ⑨kube-proxy為新創建的pod注冊動態DNS到CoreOS。給pod的service添加iptables/ipvs規則,用于服務發現和負載均衡。

    ⑩controller通過control loop(控制循環)將當前pod狀態與用戶所期望的狀態做對比,如果當前狀態與用戶期望狀態不同,則controller會將pod修改為用戶期望狀態,實在不行會將此pod刪掉,然后重新創建pod。

    后記

    本文是對K8S架構原理及其工作流程的一個匯總,可能會不好理解,但是在學習K8S過程中,這個是跳不過去的,讓我們一起努力吧!

    總結

    以上是生活随笔為你收集整理的k8s创建pod加入容器_K8S架构原理及其工作流程的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。