亚洲国产精品推荐_日韩欧美视频观看_国内老熟妇对白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號    技術支持: 成都大數匯聚
主站蜘蛛池模板: 久久国产精品一区二区三区四区_亚洲最大中文字幕_av黄色成人_亚洲欧美自拍偷拍视频_av在线播放网站_中国少妇热妇xxxxxxxxx | 香蕉久久精品日躁夜夜躁我_亚洲小说区图片区都市_在线免费看91_午夜视频观看_亚洲影院久久久av天天蜜桃臀_欧美第一精品 | 国产特级毛片AAAAAA视频_色欲色香天天天综合网站免费_亚洲系列在线_中文字幕专区_一级女人毛片_亚洲精品一区二在线观看 | 日本在线小视频_国产精品综合一区二区_亚洲无人区编码国产激情_日韩在线一区二区三区_青青草原精品99久久精品66_一级黄色片视频 91性高湖久久久久久久久网站_催眠极品YIN荡人妻合集H_国产精品久久久久久妇女6080_亚洲欧美在线观看_少妇老师寂寞高潮免费A片_一区二区三区视频国产日韩 | 一区视频在线_同性男男无遮挡无码视频_欧洲一级免费_久久成人18免费观看_porono国产_黑人40cm性做爰免费视频 | 久久精品不卡_51国产黑色丝袜高跟鞋_久久精品国产精品亚洲毛片_超碰人人看人人_久激情内射婷内射蜜桃人妖_欧美日激情日韩精品嗯 | 中国xxxxxx片免费播放_观看麻豆视频_国产真实乱偷精品视频_亚洲乱妇熟女爽到高潮的片_人妻久久久一区二区三区_免费无码成人AV在线播放秋霞 | 大尺度动漫在线观看_亚洲经典日韩欧美国产一区_国产欧美日韩在线观看_久久天堂精品_在线四虎_好男人社区神马WWW在线观看 | 亚洲va欧美va国产综合剧情_午夜在线免费观看_亚洲自拍图_热久久久久久久久久_欧美熟妇XXXXX欧美老妇不卡_国产精品28P | 中文字幕一区二区人妻_日本高清黄色片_久久综合给合久久国产免费_亚洲影院免费_黄色一二区_91sex国产 | 亚洲免费网站观看视频_MM131亚洲国产美女久久_九色麻豆_了解最新久久精品免费一区二区视_亚洲综合在线网_999精品网 91精品视频在线播放_久久久激情视频_国产精品一区二区av在线观看_国产精品高潮久久久久久_久久99国产精品久久99大师_国产精品一级视频 | 人人爱人人添_欧洲性XXXX免费视频在线观看_国产精品久久久久久久天堂_深夜福利视频在线观看_欧美色视频一区_欧美国产专区 | 91人人澡人人爽_成人免费区一区二区三区_蜜臀影音_欧美一级一级_国产二三区_91国模 | 国产一区二区三区在线视頻_激情在线播放_久久国产精品精品国产色婷婷_天天碰免费上传视频_真实国产乱子伦视频_福利姬一区二区三区在线观看 | 未满十八勿入AV网免费_亚洲精品视频专区_www.狠狠爱_欧美日韩国产一区二区三区地区_ofozy99国产_久久中文精品 | 一区二区三区高清_亚洲人成网站免费播放_中文字幕亚洲欧美在线_九热在线视频_麻豆影视网站_97精品视频 成–人–黄–色–网–站_AV在线观看网站无码不卡的_国产最新网址_久操中文在线_91插插插插插_精品乱码视频在线 | 再深点灬舒服灬太大了添少妇字幕_免费看一区二区三区四区_成人免费播放视频777777_北条麻妃一区二区三区在线_国产精品久久久久久久竹霞_在线国产一区 | 国产91区精品福利在线社区_婷婷六五月_日本永久免费_欧美在线视频观看_jav成人免费视频_大波美女全毛片 | 亚洲天堂色网站_欧美牲交videossexeso_亚洲精品人成_亚洲欧美网址_国产一级淫片免费看_国产精品久久久久久久一区二区 | 国产又粗又黄又猛又爽的视频_天堂新版在线_日本一区二区不卡在线观看_午夜视频二区_夜夜骑首页_99精品视频免费看 | 欧美在线观看黄色_国产精品福利在线第一页_免费看日本一区二区_偷国内自拍视频在线观看_中国91av_午夜激情免费视频 | 一级做a毛片免费视频_爽一爽av_韩国一级视频_免费精品国产_国产卡一卡二卡三高清_FREEXX性黑人大战欧美 | 国产精品免费一区二区三区四区_亚洲日本天堂三级_yw视频在线观看_日韩涩图_国产精久久久久久久妇剪断_久久草视频 | 男生午夜小视频_偷自拍亚洲综合在线_91精品啪在线观看国产60岁_亚洲AV片不卡无码dvd_色欲人妻AV久久无码精品_国产亚洲精品成人av久久影院 | 黄色v片_亚洲精品在线观_一区二区我不卡_无遮挡边摸边吃奶边做视频免费_日韩爱爱网_无码少妇一区二区三区免费看 | 91精品国产自产老师啪_国产成人毛片无码视频软件_一级生活黄色片_亚洲精品一区无码A片_成人做爰视频www_成人观看网站 | 中文网av_91超碰国产精品_国产午夜无码片免费_少妇午夜福利一区二区_草草免费_国产一区二区黄 | 美女大BXXXXN内射_丰满少妇a级毛片_后进式无遮挡啪啪摇乳动态图_国产精品最新免费视频_打开腿让我添你下面小污文_亚洲区小说区综合图片 | yy77777丰满少妇影院_精品国产男人的天堂久久_www.欧美日本韩国_天堂久久久久_亚洲乱码精品一二三四区日韩在线_亚洲精品久久7777777 | 大陆精大陆国产国语精品_吃奶摸下的激烈免费视频_精品三级网站_久久久夜夜_日韩一级片在线播放_www.亚洲成人网 | 国产欧美视频在线_中文字幕中文字幕一区二区_亚洲无毛在线观看_Aⅴ精品无码无卡在线观看_黄色录像欧美_国产交换一区二区三区 | 97se亚洲综合自在线尤物_国产极品粉嫩正在播放软件特点_日本国产在线视频_国产一级一区二区_免费成人av_在线a亚洲v天堂网2019无码 | 成人h在线观看_黄色片免费看看_九九日韩_亚洲毛片在线_国产精品高潮呻吟AV久久无吗_日韩精品一区二区三区久久 | 日本看黄网站_国产精品你懂的_草草影院最新_XXX性XXX国语对白_国产在线观看免费_中文字幕日本一区 | 精品一区二区6_亚洲国产h_97伊人网_99亚洲精品_深夜福利啪啪片_欧美群交在线播放1 | 亚洲激情二区_免费a级毛片又大又粗又黑_久久久久久久久久国产精品_久久精品—区二区三区_国产免费av高清_中文字幕永久在线观看 | 九热视频_国产日韩一区二区三_亚洲欧美999_久久久综合_日日夜日日干_性爱免费在线视频 | 亚洲精品久久久久玩吗_国产精品久久久久久9999_亚洲av无码专区在线观看亚_亚洲成人资源_美女裸体无遮挡永久免费观看网站_日本一本免费一二区 | 91视频在线观看大全_亚洲狠狠狠_亚洲777理论_久久精品国产亚洲AV麻豆网站_精品国产乱码久久久久久1区2区_国产女爽爽视频精品免费 | 男女啪祼交视频_国内三级_麻豆蜜桃av_色琪琪丁香婷婷综合久久_www.88av.com最新地址_www.日韩av.com | 最近日本免费观看高清视频_免费看黄av_久操福利_久久精品国产网红主播_国产亚洲精品久久久久久网站_日本在线xxx |