亚洲国产精品推荐_日韩欧美视频观看_国内老熟妇对白XXXXHD_亚洲综合精品香蕉久久网_国产男女免费完整视频网页_亚洲av高清手机在线

成都大數匯聚科技有限公司官方網站

騰訊云容器服務TKE:一鍵部署實踐

發布時間:2019-08-01 09:35
來源:騰訊云容器團隊

很多人在實際工作中都使用過Kubernetes,騰訊云的容器服務在2016年年底開始提供全托管的Kubernetes服務,主要提供了四個方面的功能。首先是提供了一鍵部署的Kubernetes,與其他容器服務的提供商不一樣,騰訊云的Kubernetes是完全隔離的,每個用戶都會獨享所有的計算節點和控制節點,集群網絡也在用戶自己的VPC中。騰訊云在這個基礎上提供了集群的全生命周期管理,包括集群的創建、銷毀,還有計算節點的添加、刪除,還有一些類似Kubernetes原有組件的初始化以及證書的初始化工作。為了大家更方便地使用Kubernetes,騰訊云在控制臺包裝了一些界面,使大家可以通過可視化的方式創建一些負載來暴露自己的服務,避免了大家手工編碼的煩瑣。第三,騰訊云提供了周邊的監控能力,包括集群本身pod內存的使用率以及一些Kubernetes事件。這些能力都與騰訊云的云監控產品進行了打通,大家可以直接在云監控產品界面使用這些能力。為了方便大家將自己的一些比較傳統的應用部署到云上,騰訊云在Kubernetes集群之外還提供了Docker鏡像倉庫、TencentHub、CICD的功能,為大家提供了一站式應用的云解決方案。

今天所提到的內容,一方面是介紹Kubernetes相關的知識,另一方面是介紹如何將Kubernetes和騰訊云進行集成。首先帶大家了解一下Kubernetes集群需要哪些組件,將Kubernetes部署好之后還要做什么工作使它正常運行。之后會介紹云上Kubernetes上的網絡存儲和日志與監控,這是將Kubernetes和騰訊云集成時進行的工作。最后介紹Kubernetes的兩種部署方案,一種是容器服務產品發展早期所采用的一種基于CVM的方案,另一種是最近逐漸部署的使用Kubernetes集群來管理Kubernetes集群組件的方案。隨著容器服務產品以及Kubernetes社區的發展,在騰訊云提供托管的CCS服務通過了CNCF的K8s一致性驗證之后,為了大家更好地認知騰訊的容器服務產品,產品的名字從之前的CCS正式改名為TKE。


Kubernetes 組件

接下來看一下想要讓Kubernetes集群運行起來我們要做哪些工作。如果對Kubernetes有了解的同學,可能知道使Kubernetes跑起來,無非是初始化一些Master組件和Node組件。首先給大家介紹Master組件,一個最簡單的部署要包括Kube-apiserver、Kube-controller-mannager 、kube-scheduler這些組件。Kube-apiserver可以理解為整個集群的大腦或者是集中存儲,所有組件與k8s的交互都是通過Kube-apiserver來完成的。其中存儲著我們定義的一些工作負載以及我們對于存儲的一些需求,這些數據都存儲在Kube-apiserver中。

第二個組件Kube-controller-mannager主要負責將聲明的一些工作負載在實際的集群中運行起來,舉個最簡單的例子,當我們在Kubernetes上創建了一個deployment之后,Kube-controller-mannager就會去創建相應的replicaset、pod這些。根據需求將pod創建出來,在創建pod后,Kube-scheduler負責對這些pod進行調度,比如這個pod實際應該被運行在哪臺機器,比如GPU的結點做這樣的調度工作。當一個集群的Master組件被完全部署好之后,我們會部署一些Node。在它的上面部署兩個組件,一個是kubelet,負責在這些Node上創建出來我們需要的pod。另一個是kube-proxy,它在集群中負責的工作是:當一個deployment需要以服務的形式對外暴露的時候,Kude-proxy會負責配置這些iptables規則,讓集群內不管是宿主機上的程序還是容器里的程序,都能夠按照service的名字去做一個自動的發現和訪問。



在Kubernetes這些標準化的組件之外,騰訊云還提供了額外的組件。主要給大家介紹一下以下三個,一個是hpa-metrics-server,它是騰訊云為了使用Kubernetes提供本身的pod橫向擴展控制器而去自研的一個組件,這個組件相比于Kubernetes社區方案的優點,是Kubernetes社區方案只提供了基于CPU和內存的擴展,而騰訊云在這個基礎上更加拓展了Pod的入帶寬和出帶寬的指標,方便大家去適應更多的擴縮容場景。第二個組件是cbs-provisioner,這個組件提供了去讓Kubernetes里面的pod去消費騰訊云一個叫做Cbs塊存儲服務,我們后面會詳細講到。第三是Ccs-log-collector,這個組件主要是負責收集容器里pod運行的日志,后面也會講到。



容器網絡

當我們把Kubernetes和騰訊云進行集成的時候,網絡方案是怎么做的呢?在你將一些控制組件搭建起來之后,Kubernetes對于網絡提出了三點的要求。第一是在不使用NAT的情況下,集群內所有容器都可以和其他的容器進行通訊。第二是所有的節點都可以和所有的容器進行通信,反向也可以通信,同樣要求不能使用NAT。第三是容器看到的自己的IP與其他人看到的IP是一樣的。

總的來說,它實現了Node和container之間的扁平化網絡。同時為了應對服務發現的需求,降低網絡復雜度,還要求不能使用NAT。Kubernetes并沒有內置的網絡解決方案,所以在社區其實有很多不同的解決方案,例如flannel,它是通過Tun/tap設備,再通過內核用戶態的轉化程序,實現一個類似于overlay的網絡能力。Callco不需要進行overlay封裝,直接通過路由的方案可以完成Kubernetes的網絡需求。

接下來為大家介紹一下騰訊云Kubernetes使用的方案,騰訊云的網絡方案主要是直接使用了VPC提供的路由能力,叫做global route。簡單介紹一下Kubernetes結點加入到一個集群中配置網絡的過程,當我們將一個結點加到集群中的時候,K8s的Kube-controller-manager會為這個結點分配一個網端。例如,集群網絡是172.16.1.0/16掩碼,這時加進去一個結點。按照我們的邏輯,我們會給它賦172.16.1.0/24位掩碼的CIDR。也就是所有在這個主機上創建的pod,它的ID都在這個CIDR的范圍內。然后我們會去VPC那里做一個動作,將172.16.1.0/24掩碼到目的地址的流量去注冊一條路由規則,使所有的包都發往被賦予這個pod CIDR的主機。這樣我們就可以完成之前提到的pod和Node之間的扁平化網絡。具體過程如下:假設現在有一個位于172.16.1.0/24網端機上的pod,向另一個機器的pod發送了這樣一個包,這個包首先從容器出來,到cbr0  bridge然后出了主機。這時就會進入VPC的路由表進行匹配,當它發現這個pod的目的IP在172.16.2.0/24時,這個包就會被VPC轉發到10.1.1.3,這樣我們就可以完成一個pod的跨主機通信。pod在本地的通信比較簡單,這里就不多講了。通過這種方式,我們實現了一個pod和Node之間的扁平化網絡,這里Docker的網絡模式是用的bridge模式,pod  IP直接由cni插件進行分配。



容器存儲

接下來給大家介紹騰訊云的K8s和騰訊云容器集成的實現。K8s集群集成了騰訊云的CBS和CFS兩個能力,一個是塊存儲,一個是基于NFS的文件系統存儲。當我們在一個pod中聲明需要一個volume時,K8s如何將volume最終掛載到pod里面?其實是這樣一個過程:首先,Kube-controller-manager會去provisnon這樣一個volume。也就是說,實際去創建一個云盤,當云盤創建好之后會做一個Attach的動作,相當于把剛剛創建好的云盤插到對應主機上,這時,主機上的Kubelet會做一個mount動作,也就是將插進來的這個設備去mount到一個Kubernetes指定的目錄,Kubelet在創建這個pod的時候,通過mount的形式把mount到的目錄實際掛載到容器的namespace里面。然后當我們這個pod銷毀,這個volume不再被需要的時候,它就反向去執行,先從主機上把對應的塊設備先mount掉,再將它detach掉,相當于把這塊磁盤從主機上拔下來,然后會由Kube-controller-manager根據對應的plugin設置銷毀或者是保留。



K8s目前通過與cloud provider進行volume集成的方面主要是三種。一種是比較早期,所有要和kubernetes進行集成的Volume代碼都需要寫在kubernetes自己的代碼倉庫中。這樣的缺點在于,假設我是一個存儲提供商,我寫的代碼有些bug,這樣不僅影響存儲功能的正常使用,可能也會影響整個集群的穩定性。所以后來為了更好的擴展性和穩定性,Kubernetes提供了一種叫做Flex volume的形式。具體是將mount和umount這兩個形式由Flex volume實現,Flex volume是一個實現了特定接口的二進制文件,實際上在需要mount、amount的時候,Kubelet會執行這個二進制文件,做一個mount、umount的動作。

這種方式其實也有一個問題,在kubernetes的部署環境中,如果要往主機上放一個二進制的動作,看起來不是那么的容器化。另外二進制文件執行的環境也有一定的要求,所以后來Kubernetes提供了第三種方式,也就是利用社區的CSI接口實現了基于CSI的插件。之前由Flex volume這個二進制文件完成的工作全部放到了容器里面,然后通過unix socket的形式,使Kubelet和實現對應功能的插件做一個通信,最后一個mount、umount的動作。現在也與騰訊云的CBS塊存儲做了集成,使用第一種方式,這是因為騰訊云在早期使用的就是這種方式。后期騰訊云也會將這部分獨立出來,計劃通過CSI的方式去提供存儲的能力。這部分代碼騰訊云將會開源,但目前這個工作還正在進行中。

容器日志與監控

接下來為大家介紹一下日志和監控的方案,首先介紹一下日志的方案。在K8s中沒有提供默認的日志方案,Kubernetes社區提供的這種方式可以運行一個sidecar容器,在你自己的容器中運行一個這樣的進程并將它輸出到標準輸出,然后再用你的sidecar容器做一個收集。這樣的問題在于,每跑一個pod,就要跑一個類似的sidecar容器,對于資源的消耗不太可以接受。騰訊容器服務基于Fluentd+Kubernetes  custom  resource  definition,實現了日志收集的控制器。這個控制器可以支持收集容器的標準輸出,也可以支持收集我的pod所在的Node上主機上文件路徑的文件內容。

主要的實現原理是:騰訊云會在kube-apiserver上注冊一個LogCollector的custom  resource  definition,里面聲明了自己要收集namespaces下面某一個deployment對應的pod資源。還有另外一個進程就是LogCollector,去監聽Kubernetes  apiserver資源,然后去生成對應的Fluentd的配置文件,再通過sighup信號的形式去觸發Fluentd的重載,然后去收集我們想要的日志文件。因為Kubernetes  pod對應的日志文件是存儲在主機的/var/log/containers的路徑規則下來,直接配置Fluentd去收集這個規則,再根據我們的實際需要做一個日志的路由。這樣就可以把不同的日志發往用戶指定的不同后端,比如Kafka或騰訊云的CIS的日志服務。這是騰訊云目前對于日志收集的方案實現。



在監控方面,騰訊云將Kubernetes中pod的性能信息和云監控做了對接,主要的實現方法是在用戶的每臺kubernete結點上運行一個agent,這個agent在kubelet中內置的cadvisor收集pod運行的性能信息,然后再到apiserver獲取這些pod對應的元數據。騰訊云將這些性能信息和元數據進行打包,再將它上傳到監控服務上。另外,基于騰訊云存儲的監控指標,實現了hpa-metrics-server。Kubernetes提供的HPA能力,是它在kube-controller-manager里面實現了horizontal pod autoscaler,它會定期請求hpa metrics server去獲取這個pod目前的CPU Usage或者是入帶寬、出帶寬這些指標的數量,根據騰訊云的定義,比如當CPU使用率超過80%的時候,騰訊云要去進行擴容。它也會定期拉取數據,比對當前的pod負載,直接去修改deployment中的replica字段,實現自動擴縮容。目前日志和監控的方案,是將Kubernetes和騰訊云的基礎設施進行對接時候所需要做的一部分工作,也是騰訊云的主要工作。


在 CVM 上部署 Kubernetes

下面介紹一下騰訊早期在騰訊云上的部署方案。當時為了產品能夠快速上線,也為了滿足一個完全的隔離的全托管的Kubernetes服務,騰訊云直接把Kubernetes的Master組件部署在了一臺CVM上面。同時,為了實現隔離的方式,騰訊云將Master放到用戶的VPC中。在Master組件上運行了一些標準化的Kubernetes組件,用戶的Node結點以用戶的身份直接在CVM那邊購買機器,騰訊云在這個基礎上做一些kubelet或者kube proxy參數數值化的工作。此外,騰訊云會做一些集群的證書配置、默認拉取鏡像的憑證初始化工作。在這個方案中,騰訊云所有的節點都處于用戶的VPC里面,通過Agent初始化的方式將整個集群部署起來。缺點在于難以管理,因為騰訊云早期是通過SSH直接登錄到客戶的Master結點上進行一些運維操作,對于客戶的Node結點是沒有辦法訪問的。當然,現在也沒有辦法訪問。對于Master的一些運維工作比較困難,因為它沒有辦法去編程化。


將 Kubernetes 組件部署在 Kubernetes 集群中

雖然騰訊云自己提供的是Kubernetes的服務,但對于整個容器的運維好像和Kubernetes完全沒有關系。在Master上一些組件的監控并不是用我們之前提到的方式來實現的,是通過內部的監控組件來收集。這與我們之前提到的用戶Node組件信息收集方式不太一樣,相當于兩種方式并行在跑,人力消耗也比較大。之前騰訊云的ETCD是共享的,也就是每個集群都在ETCD中有一個自己的目錄,相當于一個軟隔離,沒有一個硬隔離的措施。大家知道ETCD其實并不是為了海量數據存儲而服務的,而騰訊云在線上運行了數萬個集群,導致遇到了很多和ETCD有關的問題。在這樣的大背景下,騰訊云推出了第二種方案,也就是將Kubernetes部署在Kubernetes里面,通過Kubernetes  API去管理Master組件,包括我們剛才提到的apiserver、kube-controller-manager和一些自研的組件。這樣的好處在于,騰訊云不需要再通過SSH的方式,比如當騰訊云需要做一個apiserver的升級或kube-controller-manager的bug修復的情況,不需要再通過SSH的方式去每臺機器上進行操作,可以直接通過API  Kubernetes提供的deployment的滾動升級的能力來完成這一點。



也可以充分利用Kubernetes運維的能力,包括健康檢查和就緒檢查的機制實現故障自愈。基于之前提到的hpa-metrics-server,可以實現apiserver的動態擴容,應對用戶的集群結點有一個大規模的上升或者突然下降的情況,更好地滿足Kubernetes集群里面的結點對于apiserver性能的需求。在這個基礎上,還需要解決一個問題:之前基于CVM的部署方案是將所有的組件部署在用戶的VPC里面,如果將所有組件部署在kubernetes Master中又要怎么做呢?并不能給每個用戶部署一個Kubernetes集群,然后再跑它的Master,這樣聽起來好像和第一種方案沒有什么區別。所以又提供了一個專門的Kubernetes集群,在這個集群里面運行著現在線網所有集群的Master,這個集群運行在自己的VPC里面,它又要怎么和用戶的VPC結點進行通信呢?騰訊云利用了VPC提供的彈性網卡能力,這個彈性網卡會被直接綁定到運行apiserver的pod中。大家可以理解為這個pod既加入了用來運行Master組件集群的VPC,又加入了用戶的VPC,也就是一個pod同時在兩個網絡中,這樣就可以很好的去實現和用戶Node相關的互通。另外在這個基礎上,也可以復用之前提到的一些監控和日志設施,更好地去做信息的收集和運維。

值得提到的一點是,這個方案中,可以利用一個叫做Etcd operator的組件,也就是coreos其中的一個組件來為每個集群提供獨立的Etcd的部署,這樣就可以解決在集群數量不斷上升的情況下Etcd性能吃緊的問題。通過在Kubernetes集群里面部署Kubernetes  Master組件,降低了運維的成本。同時也統一了做運維工作的方式,騰訊云都是通過Kubernetes的方式進行運維的。有效降低了Master組件的資源消耗,因為之前Master組件是免費提供給客戶的,但有些客戶的集群規模非常大,Master配置也非常高,這時集群的Master存在資源浪費的情況。

掃一掃在手機上閱讀本文章

? 成都大數匯聚科技有限公司官方網站    蜀ICP備17028909號    技術支持: 成都大數匯聚
主站蜘蛛池模板: 久久xx_人人艹人人爱_一区二区三区四区视频在线观看_一级免费黄色_一边摸一边做爽的视频17国产_99免费视频观看 | 中文字幕无码日韩AV_无码av免费一区二区三区+_九九九精品视频_国产特黄a级在线视频_精品国产一区久久久_国产AV第一次处破 | 亚洲国产中文无线乱码在线观看_少妇与大狼拘作爱性a_国产又黄又刺激又色视频在线_色婷婷久久一区二区三区麻豆_国产精品久久久久久久日韩_国产欧美一区在线观看 | 亚洲欧美日韩精品色XXX_野花日本大全免费观看_大乳丰满人妻中文字幕日本_99九九精品_亚洲精品国产成人片_婷婷人人爽人人爽人人A片 | 中文字幕十一区_曰本黄色一级片_亚洲爆乳成AV人在线视菜奈实_国产国语对白露脸_青青草免费视频在线看_国产精品2 | 国产欧美精品一区_全部免费A片在线观看VR系列_国产亚洲精品一区二区在线观看_97超碰资源共享_欧美干视频_九九亚洲 | 久久久久国产99久久国产_激情久久免费视频_人看人看人看人看免费_欧美视频在线观看免费观_一区二区91_国产一区麻豆剧传媒果冻精品 | 精品国产乱码久久久久软件_国产成人精品日本亚洲11_久久久日韩_成视频免费观看在线看_国产精品天天干_欧美日本综合 | 特色毛片_av毛片大全_中文字幕第三页_国产欧美日韩综合精品久久一区_国产精品8区_日本少妇又色又爽又高潮看你 | 久热精品免费_日韩av福利_欧美午夜片欧美片在线观看_天天操夜夜操夜夜操_无码中文字幕人妻在线一区_一区二区三区免费看 | 免费看a级黄色片_国内午夜无码不卡在线观看_欧美人与禽Z0ZO牲伦交_91精品国产综合久久久久_国产小视频在线_精品少妇无码AV无码专区 | 久久精品无码一区二区日韩av_精品一区二区三区中文字幕_av完全免费在线_亚洲永久免费精品_婷婷激情五月AV在线观看_天天干天天操av | 国产亚洲中文字幕_欧美xxxx精品另类_欧美视频一区二区_中文字幕123区_办公室被吃奶好爽在线观看视频_免费无码AV片在线观看中文 | 国产91爱_1000部毛片A片免费观看_亚洲情趣视频_欧美另类videosbestsex日本_国产AV无码专区亚洲AV手机_国产成人在线视频播放 | 韩国日本在线视频_林深见鹿免费高清在线观看39集_国产美女裸体永久无遮挡_yw.193.cnc爆乳尤物未满_久久大香萑太香蕉av_成年人免费网站视频 | 一区二区在线中文字幕_av免费在线网_久久七七_午夜无码区在线观看_俄罗斯美女人体_国产精品国产三级国产剧情 | 章节把亲妺妺强h怀孕小说_亚洲一区在线观看无码欧美_国产一级毛片高清视频_亚洲国产精品久久久久秋霞小说_3atv精品不卡视频_丁香花在线观看免费高清版 | 奇米影视狠888_亚洲国产日韩欧美高清片_国内精品久久久久久中文字幕_亚洲成av人片在线观看无_99精品视频网站_国产制服丝袜亚洲日本在线 | 天天拍夜夜拍_MM1313亚洲精品无码_麻豆精品导航_国产福利91精品一区_亚洲v片在线观看_亚洲龙腾成小说人网 | 国产艹逼_久久最新精品视频_久久久久久久久久久久一区二区_亚洲爆乳精品无码AAA片_日韩不卡免费视频_在线日本中文字幕 | 青草综合网_日本超碰_欧美77_久久网免费视频_亚洲1234区_新婚被黑人睡走中文字幕 | 国产成人精品在线视频_青青草成人免费视频_天天操天天干麻豆_精品中文av_ASS白嫩白嫩的少妇PICS_国产精品第一区二区三区 | 一二三区在线观看_亚洲乱码中文字幕手机在线_亚洲欧洲日本无在线码_日韩一区二区三区四区_无码专区久久综合久中文字幕_久久夜色撩人精品国产小说 | 少妇张开腿露私下_一区二区三区国产片_色女子av_午夜看看_国产亚洲小视频线播放_欧美日韩国产二区 | 伦埋琪琪深夜福利_91精品久久久高潮叫床九色91_免费看国产_亚洲宅男天堂在线观看无病毒_日韩在线视频中文字幕_成人9久久国产精品品 | 国产精品bbw国语对白_麻豆传媒在线免费_男女性高爱潮是免费国产_一本久久a久久精品vr综合_一色桃子中文字幕人妻熟女作品_天堂在线WWW天堂中文在线 | 国产成人人人97超碰超爽8_日韩一区国产二区欧美三区_欧美日韩精品专区_国产精品久久久久久久久久小说_91福利国产在线观一区二区_国产视频xxxx | 97操操_成人中文字幕在线_成全我在线观看免费观看_欧美成人V片观看_a成人在线_黄色片久久久 | 97久久综合亚洲色HEZYO_人妻无码一区二区三区免费_久久久久久久看片_欧美性猛交xxxx免费看_亚洲一区制服无码中字_亚洲精品一区二区国产精品 | 国产婷婷一区二区三区_亚洲在AV极品无码天堂_边啃奶头边躁狠狠躁AV_日韩中文字幕久久久97都市激情_免费aⅴ网站_成人性生交大片免费看2 | 5x社区未满十八在线视频_和岳每晚弄的高潮嗷嗷叫视频_国产精品19p_aaa色视频_91免费福利_99久久久精品 贪婪欲望之岛在线观看_1769免费视频在线观看_免费aa毛片_久久精品在线观看视频_亚洲性爱之日本精品视频_亚洲欧美日韩综合aⅴ | 一区二精品_一级黄色录像免费的_97在线观_亚洲成色在线_日韩欧美一级精品久久_videos性欧美另类高清 | 婷婷国内自拍_亚洲精华国产欧美_国产毛片久久久久_糟蹋小少妇17p_人c交zo○zooxx全过程_欧美性生交XXXXX无码十全 | 国产精品青青青在线观看_91高清免费在线观看_国产一区二区三区视频观看_美女极度色诱图片www_免费一级欧美_亚洲国产精品成人久久 | 国产免费黄片和v片_国产成人二区_中文字幕日韩视频_少妇又色又紧又爽又刺激视频_偷拍做爰吃奶视频免费看_华人91视频 | 偷拍视频一区二区三区_青青草操_最新精品露脸国产在线_好大好深好猛好爽视频拍拍拍_亚洲美女又黄又爽在线观看_男人的天堂在线播放 | 亚洲不卡视频_久久精品国产精品久久久_www高清在线视频日韩欧美_蜜臀精品久久久久久蜜臀_极品福利视频_JAPANESE高潮喷水 | 偷偷操视频_久草成人网_九九热超碰_99精品在线观看视频_人妻精品久久无码专区精东影业_91同城在线观看 | 亚洲国产精品伦理_插入综合网_国产亚洲精品综合一区91_精品激情欧美日韩_欧美一区国产_亚洲色自偷自拍另类小说 | 少妇人妻无码AV片在线蜜芽_人妻丰满熟妇AV无码处处不卡_成年男女免费视频网站很黄的_99久久免费精品_无码人妻一区二区三区兔费_一本色道久久综合无码人妻 无遮挡A级毛片免费看_国产精品综合久久_不卡中文字幕_国产又粗又猛又爽又黄A片小说_国产黄色免费大片_日韩精人妻无码一区二区三区 | 97久久精品一区二区三区的观看方式_九色中文_国产又爽又大又黄A片色戒一_成人在线第一页_国产99久久精品_久久久毛片 |