模塊四kubernetes架構(gòu)原則和對象設(shè)計(jì)_第1頁
模塊四kubernetes架構(gòu)原則和對象設(shè)計(jì)_第2頁
模塊四kubernetes架構(gòu)原則和對象設(shè)計(jì)_第3頁
模塊四kubernetes架構(gòu)原則和對象設(shè)計(jì)_第4頁
模塊四kubernetes架構(gòu)原則和對象設(shè)計(jì)_第5頁
已閱讀5頁,還剩83頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

什么是云計(jì)算Workload Workload Workload

CloudComputing Network

云計(jì)算平臺的分類Openstack為典型的虛擬化虛擬機(jī)構(gòu)建和業(yè) 技術(shù)的迭 早期 所有容器共享IP,會導(dǎo)致端 等問題為超級用戶添加KubernetesGmail Docs WebSearch GFS/CFE

Megastore

MapReduceBorgBorg簡介物理資源利用率服務(wù)器共享,在進(jìn)程級別 應(yīng)用高可用調(diào)度策略靈活應(yīng)用接入和使用方便,提供了完備的Job描述語言,服務(wù)發(fā)現(xiàn),實(shí)時狀 和診斷工具對外隱藏底層資實(shí)現(xiàn)應(yīng)用的高可足夠彈性WorkloadJobWorkloadJobNaming用戶以Job的形式的服務(wù)發(fā)現(xiàn)通Borg過?的服務(wù)發(fā)現(xiàn)通Borg過?BorgCellprod:Service)來實(shí)現(xiàn)。50.jfoo.ubar.cc.borg 可表示在一個名為cc的Cell中由用戶uBar 部署Service)來實(shí)現(xiàn)。50.jfoo.ubar.cc.borg 可表示在一個名為cc的Cell中由用戶uBar 部署的一個名為jFoo的Job下的第50個TaskNameBNS(BorgBorgWebSearchnon-prod(Batch)每個Job可以定義屬Borg架構(gòu)Borgmaster處理客戶RPC請求,比如Job,Job系統(tǒng)組件和服務(wù)的狀態(tài),比如服務(wù)器、TaskScheduler程調(diào)度策WorstBest調(diào)度優(yōu)Scorecaching:當(dāng)服務(wù)器或者任務(wù)的狀態(tài)未發(fā)生變更或者變更很少Borglet是部署在所有服務(wù)器Agent,負(fù)責(zé)Borgmaster進(jìn)程的指令應(yīng)用高可用non-prodpendingqueue 保障應(yīng)用高可用的關(guān)鍵性設(shè)計(jì)原則:BorgmasterBorgletBorg系統(tǒng)自身高可資源利用率 9025Task4500在一個中等規(guī)模的Cell里, 任務(wù)和離線任務(wù)獨(dú)立部署比混合部署所需的服務(wù)器數(shù)量多出約20%-30%。 的服務(wù)器數(shù)量在千萬級別,按20%算也是百萬級別,大概能省下的服務(wù)器采machineBrogmachine實(shí)際使用資保留資回收資限制資性 什么是 命令式( 式(

在軟件工程領(lǐng)域,式系統(tǒng)指程序代碼描述系統(tǒng)應(yīng)該式(Declaritive)系統(tǒng)規(guī)范 Kubernetes: 式系統(tǒng) Namespace:資 PodKubernetes Kubernetes采用與Borg類似的架主要組件RESTfulKubernetesAPIJSONKubernetesetcd”。這是一個強(qiáng)大的、穩(wěn)定的、高可用的鍵值A(chǔ)PI被稱為“kube-被稱為“kube-controllermanager”Manager Kube-etcd是CoreOS基于Raft開發(fā)的分布式key- 原子CAS和CAD,用于分布式鎖和 直 etcd的數(shù)Kube-APIServer是Kubernetes最重要 Admission(Mutating&Valiating) APIServer展開Kube-

K8sRBAC AuthN

Rate

AuthZ

Webhook

Schema

Webhook

Webhook

Webhook

Aggregated

Webhook

Schema

WebhookController作用是確保Kubernetes遵 制下確保最終一致性(EventualConsistency)控制器的工作流程Informer的內(nèi)部機(jī)控制器的協(xié)同工作原理SchedulerScheduler的特殊職責(zé)在于 當(dāng)前集群所有未調(diào)度的Pod,并且獲取當(dāng)前集群所有節(jié)點(diǎn)的健康狀況和資源 ,并按需求啟停Pod Pod ,給定的HTTPServer或Kube-APIServer Kube- 均衡器之上,服務(wù)調(diào)用無需經(jīng)過額外的網(wǎng)絡(luò)跳轉(zhuǎn)(NetworkHop)userspace推薦的Add-kube-dnsDNSDashboardKubectl命令和kubectl是一個Kubernetes 配置文件~/.kube/config

-name:kind-cluster:kind-kinduser:name:kind-kindkind:kinduser:--kubectl常用命kubectlgetpo–oyaml-oyaml-wwatchowide

Kubectldescribe NormalScheduled8m13sdefault-Normal 7m56skubelet,k8smasterpullingimageNormalPulled 7m50skubelet,k8smasterSuccessfullypulledimage"ubuntu:16.04"NormalCreated 7m50skubelet,k8smasterCreatedcontainerNormal 7m50skubelet,k8smasterStartedkubectlexecroot@ubuntu-6fcf6c67db-xvmjh:/#hostname-fkubectllogsMonMar2514:56:02UTC2019NetworkingRuntimeMiddlewareO/SO/SRuntimeMiddlewareNetworkingNetworkingDataRuntimeNetworkingMiddlewareO/SRuntimeMiddlewareO/SNetworkingRuntimeMiddlewareO/SO/SRuntimeMiddlewareNetworkingNetworkingDataRuntimeNetworkingMiddlewareO/SRuntimeMiddlewareO/SmanagesmanagesmanagesYoumanageYoumanageYoumanageDataDataDataDataDataDataPVCPVCPodDNS Kubernetes公共服務(wù) meshKUBEDNS DockerRuntimeOSKubernetes設(shè)計(jì)理念基于CRD的擴(kuò)插件化的生態(tài)

Kubernetes組件本身高 多種基礎(chǔ)架構(gòu)的選多云和混合

ServiceaccountNamespaceTaints,psp,KubernetesCommandLineAPIPodImage分層架構(gòu)層:Kubernetes 策略管理(RBAC、Quota、PSP、 Kubernetes外部:日志 、配置管理、CI、CD、Workflow、FaaS、OTS應(yīng)用ChatOpsKubernetes內(nèi)部 分層架構(gòu)EcosystemInterfaceLayer: LibrariesandToolsernanceLayer:Automationand ApplicationLayer:DeploymentandRoutingNucleus:APIandExecutionRuntime

Network

Volume

Image

Cloud

分層架構(gòu)API設(shè)計(jì)原則 如何能夠設(shè)計(jì)好API,跟如何能用面向?qū)ο蟮姆椒ㄔO(shè)計(jì)好應(yīng)用系統(tǒng)有相通的地方, API設(shè)計(jì)原則 StatefulSetReplicaSetPodKubernetesAPIAPI設(shè)計(jì)原則 Kubernetes如何通過對象的組合完成業(yè)務(wù)描依賴關(guān)依

PodTem Deployment DeploymentPodTem Node Pod NodePod

URL架構(gòu)設(shè)計(jì)原則只有APIServer可以直接 ,其他服務(wù)必須通過KubernetesAPI來 引導(dǎo)(Bootstrap )原課后練習(xí)用KubeadmKubernetes。TypeMetaMetaDataSpecKubernetes對象的最基本定義,它通過引入GKV(Group,Kind,Version)Groupcoreapps會使這些對象的可性和可理NodePod、Deployment從v1alpha1到v1alpha2v1beta1,最終變成生產(chǎn)就緒版本v1。MetadataNamespace和Name LabelLabel是識別Kubernetes對象 app=nginx

dev

language

qa

backend gocachelabel(AND),app=nginx,env=testLabels用于標(biāo)志和選擇對象,Annotations則是用來記錄一些附加信息,用來輔助應(yīng)用部署metadata.deletionTimestamp字段。ResourceVersion可以被看作一種樂觀鎖,每個對象在任意時刻都有其ResourceVersion,當(dāng)Kubernetes對象被客戶端 Spec和 常用Kubernetes對象及其分組(比如Docker或者Rkt)、Kubelet和Kube- NamespaceNamespace(default),NodepersistentVolumesNamespace。什么是Pod是一組緊密關(guān)聯(lián)的容器集合,它們共享 、etwork和UTSnamespace,是Kubernetes調(diào)kind:Podmetadata:name: -image:nginx:1.15name:nginx env:-naenv:-name:POD_NAMEvalueFrom:fieldRef:apiVersion:v1fieldPath:metadata.nam從ConfigMap 從 env:-env:-name:valueFrom:configMapKeyRef:name:my-envkey:apiVersion:v1kind:Podmetadataname o-envspec:containers:-image:nginx:1.15name:alpineenv:-name: value:worldenv:-name:valueFrom:secretKeyRef:name:mysecretkey:usernam卷 VolumeVolumeMountsVolume:定義Pod可以使用 VolumeMounts:定 kind:Podmetadata:name: volume-image:nginx:1.15name:nginxvolumeMounts:-name:mountPath:/datavolumes:-name:emptyDir:Pod網(wǎng)絡(luò)Pod的多個容器是共享網(wǎng)絡(luò)Namespace的,這意味著:同一個Pod中的不同容器可以彼此通過Loopback地 在第一個容器中起了一個服 在第二個容器內(nèi),是可以通過httpGet 到該地址的這種方法常用于不同容器的互相協(xié)作。資源限制和內(nèi)存使用,比如對于剛才創(chuàng)建的deployment,可以通過下面 nginx容器最多只用50%的CPU和128MB的內(nèi)存:$kubectlsetresourcesdeploymentnginx-app-c=nginx-limits=cpu=500m,memory=128Mideployment"nginx"resourcerequirementsupdated等同于在每個Pod中設(shè)置resourceskind:Podmetadata:app:nginxname:nginx-image:name:nginxcpu:"500m"memory:"128Mi"健康檢查ReadinessProbeTCPHTTP健康檢查kind:Deploymentmetadata:app:name:nginx-replicas:3app:nginx metadata:app:nginx-image: :Alwaysname:httpresources: cpu:"500m"memory:path:/initialDelaySeconds:15timeoutSeconds:1path:80initialDelaySeconds:timeoutSeconds:ConfigMap用來將 密鑰對象 AWS 用戶(UserAccount)&服務(wù)帳戶(Service Namespace ,與特定Namespace是相關(guān)的labels的PodIPendpointsKube-負(fù)責(zé)將服務(wù)IP載均衡到這些endpoints上。每個Service都會自動分配一個clusterIP(僅在集群內(nèi)部可 和DNS名,其他容器可以通過該地址或DNS來 ServiceapiVersion:v1kind:Servicemetadataname:nginxspec:ports:-port:8078#theportthatthisserviceshouldserveonname:http#thecontaineroneachpodtoconnectto,canbeanam#(e.g.'www')oranumber(e.g.80)targetPort:80protocol:TCPselector:app:nginx副本集(Replica 來源部署部署是一個RS應(yīng)用模式更廣API對象合操作Kubernetes的發(fā)展方向,未來對所有長期伺服型的的業(yè)務(wù)的管理,都會通過Deployment來管Deployment NewReplicaSet

Try通過類似Docker kubectlexposedeploymentng

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論