模块四kubernetes架构原则和对象设计_第1页
模块四kubernetes架构原则和对象设计_第2页
模块四kubernetes架构原则和对象设计_第3页
模块四kubernetes架构原则和对象设计_第4页
模块四kubernetes架构原则和对象设计_第5页
已阅读5页,还剩83页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

什么是云计算Workload Workload Workload

CloudComputing Network

云计算平台的分类Openstack为典型的虚拟化虚拟机构建和业 技术的迭 早期 所有容器共享IP,会导致端 等问题为超级用户添加KubernetesGmail Docs WebSearch GFS/CFE

Megastore

MapReduceBorgBorg简介物理资源利用率服务器共享,在进程级别 应用高可用调度策略灵活应用接入和使用方便,提供了完备的Job描述语言,服务发现,实时状 和诊断工具对外隐藏底层资实现应用的高可足够弹性WorkloadJobWorkloadJobNaming用户以Job的形式的服务发现通Borg过•的服务发现通Borg过•BorgCellprod:Service)来实现。50.jfoo.ubar.cc.borg 可表示在一个名为cc的Cell中由用户uBar 部署Service)来实现。50.jfoo.ubar.cc.borg 可表示在一个名为cc的Cell中由用户uBar 部署的一个名为jFoo的Job下的第50个TaskNameBNS(BorgBorgWebSearchnon-prod(Batch)每个Job可以定义属Borg架构Borgmaster处理客户RPC请求,比如Job,Job系统组件和服务的状态,比如服务器、TaskScheduler程调度策WorstBest调度优Scorecaching:当服务器或者任务的状态未发生变更或者变更很少Borglet是部署在所有服务器Agent,负责Borgmaster进程的指令应用高可用non-prodpendingqueue 保障应用高可用的关键性设计原则:BorgmasterBorgletBorg系统自身高可资源利用率 9025Task4500在一个中等规模的Cell里, 任务和离线任务独立部署比混合部署所需的服务器数量多出约20%-30%。 的服务器数量在千万级别,按20%算也是百万级别,大概能省下的服务器采machineBrogmachine实际使用资保留资回收资限制资性 什么是 命令式( 式(

在软件工程领域,式系统指程序代码描述系统应该式(Declaritive)系统规范 Kubernetes: 式系统 Namespace:资 PodKubernetes Kubernetes采用与Borg类似的架主要组件RESTfulKubernetesAPIJSONKubernetesetcd”。这是一个强大的、稳定的、高可用的键值API被称为“kube-被称为“kube-controllermanager”Manager Kube-etcd是CoreOS基于Raft开发的分布式key- 原子CAS和CAD,用于分布式锁和 直 etcd的数Kube-APIServer是Kubernetes最重要 Admission(Mutating&Valiating) APIServer展开Kube-

K8sRBAC AuthN

Rate

AuthZ

Webhook

Schema

Webhook

Webhook

Webhook

Aggregated

Webhook

Schema

WebhookController作用是确保Kubernetes遵 制下确保最终一致性(EventualConsistency)控制器的工作流程Informer的内部机控制器的协同工作原理SchedulerScheduler的特殊职责在于 当前集群所有未调度的Pod,并且获取当前集群所有节点的健康状况和资源 ,并按需求启停Pod Pod ,给定的HTTPServer或Kube-APIServer Kube- 均衡器之上,服务调用无需经过额外的网络跳转(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公共服务 meshKUBEDNS DockerRuntimeOSKubernetes设计理念基于CRD的扩插件化的生态

Kubernetes组件本身高 多种基础架构的选多云和混合

ServiceaccountNamespaceTaints,psp,KubernetesCommandLineAPIPodImage分层架构层:Kubernetes 策略管理(RBAC、Quota、PSP、 Kubernetes外部:日志 、配置管理、CI、CD、Workflow、FaaS、OTS应用ChatOpsKubernetes内部 分层架构EcosystemInterfaceLayer: LibrariesandToolsernanceLayer:Automationand ApplicationLayer:DeploymentandRoutingNucleus:APIandExecutionRuntime

Network

Volume

Image

Cloud

分层架构API设计原则 如何能够设计好API,跟如何能用面向对象的方法设计好应用系统有相通的地方, API设计原则 StatefulSetReplicaSetPodKubernetesAPIAPI设计原则 Kubernetes如何通过对象的组合完成业务描依赖关依

PodTem Deployment DeploymentPodTem Node Pod NodePod

URL架构设计原则只有APIServer可以直接 ,其他服务必须通过KubernetesAPI来 引导(Bootstrap )原课后练习用KubeadmKubernetes。TypeMetaMetaDataSpecKubernetes对象的最基本定义,它通过引入GKV(Group,Kind,Version)Groupcoreapps会使这些对象的可性和可理NodePod、Deployment从v1alpha1到v1alpha2v1beta1,最终变成生产就绪版本v1。MetadataNamespace和Name LabelLabel是识别Kubernetes对象 app=nginx

dev

language

qa

backend gocachelabel(AND),app=nginx,env=testLabels用于标志和选择对象,Annotations则是用来记录一些附加信息,用来辅助应用部署metadata.deletionTimestamp字段。ResourceVersion可以被看作一种乐观锁,每个对象在任意时刻都有其ResourceVersion,当Kubernetes对象被客户端 Spec和 常用Kubernetes对象及其分组(比如Docker或者Rkt)、Kubelet和Kube- NamespaceNamespace(default),NodepersistentVolumesNamespace。什么是Pod是一组紧密关联的容器集合,它们共享 、etwork和UTSnamespace,是Kubernetes调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网络Pod的多个容器是共享网络Namespace的,这意味着:同一个Pod中的不同容器可以彼此通过Loopback地 在第一个容器中起了一个服 在第二个容器内,是可以通过httpGet 到该地址的这种方法常用于不同容器的互相协作。资源限制和内存使用,比如对于刚才创建的deployment,可以通过下面 nginx容器最多只用50%的CPU和128MB的内存:$kubectlsetresourcesdeploymentnginx-app-c=nginx-limits=cpu=500m,memory=128Mideployment"nginx"resourcerequirementsupdated等同于在每个Pod中设置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)&服务帐户(Service Namespace ,与特定Namespace是相关的labels的PodIPendpointsKube-负责将服务IP载均衡到这些endpoints上。每个Service都会自动分配一个clusterIP(仅在集群内部可 和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应用模式更广API对象合操作Kubernetes的发展方向,未来对所有长期伺服型的的业务的管理,都会通过Deployment来管Deployment NewReplicaSet

Try通过类似Docker kubectlexposedeploymentng

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论