收藏 分销(赏)

Kubernetes技术分享.ppt

上传人:精*** 文档编号:8059282 上传时间:2025-02-02 格式:PPT 页数:42 大小:6.88MB
下载 相关 举报
Kubernetes技术分享.ppt_第1页
第1页 / 共42页
Kubernetes技术分享.ppt_第2页
第2页 / 共42页
点击查看更多>>
资源描述
标题文本,正文级别 1,正文级别 2,正文级别 3,正文级别 4,正文级别 5,*,Kubernetes,技术分享,架构简介,集群搭建,常用,命令,应用实例,1,Kubernetes,简介,Kubernetes是谷歌严格保密十几年的秘密武器Borg的一个开源版本,是,一个全新的基于容器技术的分布式架构领先方案,。,Borg是谷歌内部使用的大规模集群管理系统,,基于容器技术,,目的是实现资源管理的自动化,以及跨多个数据中心的资源利用率的最大化;,K8s是第一个将”,一切以服务为中心,一切围绕服务运转,”作为指导思想的创新型产品,K8s是,Go语言,开发,是Docker的上层架构,就好像Java与J2EE的关系一样,K8s是一个开放的开发平台,不局限于任何语言,2,Kubernetes主要功能,k8s能方便地管理,跨机器,运行容器化的应用,提供应用部署、维护、扩展机制,集群管理、安全防护、准入机制、多应用支撑、服务注册、服务发现、,智能负载均衡,、故障发现、自我修复、,服务滚动升级,、,在线扩容,、资源配额管理,使用Docker对应用程序包装、实例化、运行,以集群的方式运行、,管理跨机器的容器,解决Docker跨机器容器之间的,通讯,问题,k8s的,自我修复,机制使得容器集群总是运行在用户期望的状态,3,为什么使用Kubernetes?,K8s不仅仅支持Docker,还支持,Rocket,,这是另一种容器技术。,全面拥抱,微服务架构,使用k8s我们系统可以随时的,整体迁移,k8s系统具备了超强的,横向扩容能力,k8s提供完善的管理工具,涵盖了包括开发、部署测试、运维监控在内的各个环节,4,K8s集群,5,K8s架构,6,K8s体系结构,7,Master,集群,控制管理节点,,,所有的命令,都经由master处理,负责整个集群的管理和控制,基本上Kubernetes所有的控制命令都是发给它,它来负责具体的执行过程,我们后面所有执行的命令基本都是在Master节点上运行的,Kubernetes API Server(,kube-apiserver,),提供Http Rest接口的关键服务进程,是Kubernetes里所有资源的增、删、改、查等操作的唯一入口,也是集群控制的入口进程,Kubernetes Controller Manager(,kube-controller-manager,),Kubernetes里所有资源对象的自动化控制中心,可以理解为资源对象的“大总管”,Kubernetes Scheduler(,kube-scheduler,),负责资源调度(Pod调度)的进程,相当于公交公司的“调度室”,etcd Server,,Kubernetes里所有的资源对象的数据全部是保存在etcd中,(集群部署,不与master放同一台机器),8,Master,9,Master,10,etcd,etcd是一个,高可用的键值存储系统,,主要用于,共享配置,和,服务发现,。,对比与,ZooKeeper,,,etcd,更,轻量,级,etcd是由CoreOS开发并维护的,灵感来自于 ZooKeeper 和 Doozer,提供了与,ZooKeeper,相似的功能,它使用,Go语言,编写,并通过,Raft一致性算法,处理日志复制以保证强一致性。Raft是一个新的一致性算法,适用于分布式系统的日志复制,Raft通过选举的方式来实现一致性。Google的容器集群管理系统Kubernetes、开源PaaS平台Cloud Foundry和CoreOS的Fleet都广泛使用了etcd。在分布式系统中,如何管理节点间的状态一直是一个难题,etcd像是专门为集群环境的服务发现和注册而设计,它提供了数据TTL失效、数据改变监视、多值、目录监听、,分布式锁原子操作,等功能,可以方便的跟踪并管理集群节点的状态,11,etcd,简单:支持curl方式的用户API(HTTP+JSON),安全:可选的SSL客户端证书认证,快速:单实例每秒 1000 次读写能力,可靠:使用Raft保证强一致性,Etcd,的应用场景包括,服务发现,(,Service Discovery,)、消息发布与订阅、负载均衡、,分布式通知与协调,、分布式锁、分布式队列。如果你,熟悉ZooKeeper,你会发现,etcd,实现了,ZooKeeper,的功能,12,Node,除了Master,Kubernetes集群中的其他机器被称为,Node节点,,早期版本也称为,Minion,节点,Node节点才是Kubernetes集群中的,工作负载节点,,每个Node都会被Master分配一些工作负载(Docker容器),当某个Node宕机,其上的工作负载会被Master自动转移到其他节点上去,kubelet,,负责Pod对应的容器的创建、启停等任务,同时与Master节点密切协作,实现集群管理的基本功能。一旦Node被纳入集群管理范围,kubelet进程就会向Master汇报自身的情报,这样Master可以获知每个Node的资源使用情况,并实现高效均衡的资源调度策略。而某个Node超过指定时间不上报信息,会被Master判定为“失联”,Node状态被标记为不可用(Not Ready),随后Master会触发“工作负载大转移”的自动流程;,kube-proxy,,实现Kubernetes Service的通信与负载均衡机制的重要组件;,Docker Engine,(docker),Docker引擎,负责本机的容器创建和管理工作;,13,Node,14,Pod是,最小部署单元,,一个Pod由,一个或多个,容器组成,Pod中容器,共享存储和网络,,在同一台Docker主机上运行。,同一个Pod里的容器共享同一个网络命名空间,可以,使用localhost互相通信,每个Pod都有一个特殊的被称为“,根容器,”的,Pause容器,,还包含一个或多个紧密相关的用户,业务容器,;,一个Pod里的容器与另外主机上的Pod容器能够,直接通信,;,如果Pod所在的Node宕机,会将这个Node上的所有Pod重新调度到其他节点上;,普通Pod,及,静态Pod,,前者存放在etcd中,后者存放在具体Node上的一个具体文件中,并且只能在此Node上启动运行;,Docker Volume对应Kubernetes中的,Pod Volume,;,每个Pod可以设置限额的计算机资源有CPU和Memory;,Requests,,资源的最小申请量;,Limits,,资源最大允许使用的量;,Pod,15,Pod,16,Pod、容器与Node关系,17,Endpoint(IP+Port)标识服务进程的访问点,Event是一个,事件记录,,记录了事件最早产生的时间、最后重复时间、重复次数、发起者、类型,以及导致此事件的原因等信息。Event通常关联到具体资源对象上,式排查故障的重要参考信息;,Endpoint、Event,18,Service,Service一个应用服务抽象,定义了,Pod逻辑集合,和访问这个Pod集合的,策略,。,Service代理Pod集合对外表现是为一个,访问入口,,分配一个集群IP地址,来自这个IP的请求将,负载均衡,转发后端Pod中的容器。,Service通过,LableSelector,选择一组Pod提供服务。,在K8s集群中微服务的负载均衡是由,Kube-proxy,实现的,在K8s的每个节点上都有一个,Service其实就是我们经常提起的微服务架构中的一个“,微服务,”,kubernetes中的,核心,。通过分析、识别并建模系统中的所有服务为微服务Kubernetes Service,最终我们的系统由多个提供不同业务能力而又彼此独立的微服务单元所组成,服务之间,通过TCP/IP,进行通信,从而形成了我们强大而又灵活的弹性网络,拥有了强大的,分布式,能力、,弹性扩展,能力、,容错,能力,19,Service,20,Service,21,Service,如上图示,每个Pod都提供了一个独立的Endpoint(Pod IP+ContainerPort)以被客户端访问,多个Pod副本组成了一个集群来提供服务,一般的做法是部署一个负载均衡器来访问它们,为这组Pod开启一个对外的服务端口如8000,并且将这些Pod的Endpoint列表加入8000端口的转发列表中,客户端可以通过负载均衡器的对外IP地址+服务端口来访问此服务。运行在Node上的,kube-proxy,其实就是一个智能的软件,负载均衡器,,它负责把对Service的请求,转发,到后端的某个Pod实例上,并且在内部实现服务的,负载均衡,与,会话保持机制,。Service不是共用一个负载均衡器的IP地址,而是每个Servcie分配一个,全局唯一的虚拟IP地址,,这个虚拟IP被称为,Cluster IP,。,22,Service,Node IP,Node节点的IP地址,是Kubernetes集群中每个节点的,物理网卡的IP地址,,是真是存在的物理网络,所有属于这个网络的服务器之间都能通过这个网络直接通信;,Pod IP,Pod的IP地址,是Docker Engine根据docker0网桥的IP地址段进行分配的,通常是一个,虚拟的二层网络,,位于,不同Node上的Pod能够彼此通信,,需要通过Pod IP所在的虚拟二层网络进行通信,而真实的TCP流量则是通过Node IP所在的物理网卡流出的;,Cluster IP,Service的IP地址。特性如下:,仅仅作用于Kubernetes Servcie这个对象,并由,Kubernetes管理和分配IP,地址;,无法被Ping,,因为没有一个“实体网络对象”来响应;,只能结合Service Port,组成一个具体的通信端口;,Node IP网、Pod IP网域Cluster IP网之间的通信,采用的是Kubernetes自己设计的一种编程方式的特殊的路由规则,与IP路由有很大的不同;,23,Label,Label可以附加到各种资源对象上,一个资源对象可以定义任意数量的Label。给某个资源定义一个Label,相当于给他打一个标签,随后可以通过Label Selector(,标签选择器,),查询和筛选,拥有某些Label的资源对象。我们可以通过给指定的资源对象捆绑一个或多个Label来实现多维度的资源分组管理功能,以便于灵活、方便的进行资源分配、调度、配置、部署等管理工作;,Label Selector示例:select*from pod where pods name=XXX,env=YYY,支持操作符有=、!=、in、not in;,24,部署和升级Pod,,声明某种Pod的,副本数量,在任意时刻都符合某个预期值;,Pod期待的副本数;,用于筛选目标Pod的Label Selector;,当Pod副本数量小于预期数量的时候,用于创建新Pod的Pod模板(template);,Replication Controller(RC),25,下一代的Replication Controlle,RC与RS唯一区别就是lableselector支持不同,RS支持新的,基于集合,的标签,,RC仅支持基于等式,的标签。Replication Controlle只支持,基于等式,的selector(env=dev或environment!=qa)但Replica Set还支持新的、基于集合的selector(version in(v1.0,v2.0)或env notin(dev,qa)),这对复杂的运维管理带来很大方便。,Replica Set,26,拥有更加灵活强大的,升级,、,回滚,功能。在新的版本中,,官方推荐使用Replica Set和Deployment来代替RC,,两者相似度90%,相对于RC一个最大升级是我们随时指导,当前Pod“部署”的进度,。Deployment使用了Replica Set,除非需要自定义升级功能或根本不需要升级Pod,一般情况下,我们,推荐使用Deployment,而不直接使用Replica Set;,典型使用场景:,创建一个Deployment对象来生成对应的Replica Set并完成Pod副本的创建过程;,检查更新Deployment的状态来查看部署动作是否完成(Pod副本的数量是否达到预期的值);,更新Deployment以创建新的Pod;(比如镜像升级),如果当前Deployment不稳定,则,回滚,到一个早先的Deployment版本;,挂起或者恢复一个Deployment;,Deployment,27,意思是Pod横向自动扩容,目标是实现,自动化、智能化扩容或缩容,。,Pod负载度量指标:,CPUUtilizationPercentage,通常使用一分钟内的平均值,可以通过,Heapster扩展组件,获取这个值。一个Pod自身的,CPU利用率,是该Pod当前CPU的使用量除以它的Pod Request的值。例如Pod Request定义值为0.4,当前Pod使用量为0.2,则它的CPU使用率为50%。但如果没有定义Pod Request值,则无法使用CPUUtilizationPercentage来实现Pod横向自动扩容的能力;,应用程序,自定义的度量指标,,比如服务在每秒内的相应的请求书(TPS或QPS),Horizontal Pod Autoscaler(HPA),28,数据卷,,是Pod中能够被,多个容器访问的共享目录,。定义在Pod之上,被一个Pod里的多个容器挂载到具体的文件目录之下;与Pod生命周期相同。,可以让一个Pod里的多个容器共享文件、让容器的数据写到宿主机的磁盘上或者写文件到,共享存储,中,Volume,29,命名空间,将对象逻辑上分配到不同Namespace,可以是不同的项目、用户等区分管理,并设定控制策略,从而实现多租户。,命名空间也称为,虚拟集群,。,Namespace,30,Node、Pod、Replication Controller和Service等都可以看作是一种“,资源对象,”,几乎所有的资源对象都可以通过Kubernetes提供的,kubectl工具,执行,增、删、改、查,等操作并将其保存在,ectd中持久化存储,。,Kubectl,31,关闭CentOS自带的防火墙服务,systemctl disable firewall,#systemctl stop firewall,安装Etcd和Kubernetes软件(会自动安装docker软件),yuminstallyetcdkubernetes,按顺序启动所有服务,systemctlstartetcd,systemctlstart docker,#systemctl start kube-apiserver,#systemctl start kube-controller-manager,#systemctl start kube-scheduler,#systemctl start kubelet,#systemctl start tube-proxy,64位 CentOS7 单机版Kubernetes集群环境安装,32,由于篇幅,k8s集群安装文档,后续附件提供,Kubernetes集群环境安装,33,访问地址:,https:/192.168.1.53:30001/#!/login,获取token:,#kubectl-n kube-system describe$(kubectl-n kube-system get secret-n kube-system-o name|grep namespace)|grep token,Kubernetes-dashboard,34,Grafana地址:,192.168.1.52:30108/,Kubernetes监控,35,Kubernetes负载均衡nginx ingress,36,Kubernetes 暴露服务的方式目前只有三种:,LoadBlancer,Service、,NodePort Service,、,Ingress,;前两种估计都应该很熟悉,下面详细的了解下这个 Ingress,Ingress由两部分组成:,Ingress Controller,和,Ingress,服务。,Ingress Contronler 通过与 Kubernetes API 交互,,动态的去感知,集群中 Ingress 规则变化,然后读取它,按照自定义的规则,规则就是写明了哪个域名对应哪个service,生成一段,Nginx 配置,,再写到 Nginx-ingress-control的 Pod 里,这个Ingress Contronler 的pod里面运行着一个nginx服务,控制器会把生成的nginx配置写入/etc/nginx.conf文件中,然后,reload 一下使用配置生效,。以此来达到域名分配置及动态更新的问题。,Kubernetes负载均衡nginx ingress,37,Demo地址:,https:/192.168.1.51/demo/,查看nginx-ingress容器里的nginx配置,是动态变化的,查看容器日志,轮询访问两台tomcat,Kubernetes负载均衡nginx ingress,38,kubectl get nodes查看集群中有多少节点,kubectl create-f mysql-rc.yaml创建,kubectl apply-fmysql-rc.yaml创建或更新,kubectl delete-f mysql-rc.yaml删除,kuberctl delete pods-all 删除所有的pod,kubectl get rc查询RC,kubectl get pods 查询pod默认空间,kubectl get pods all-namespaces所有空间,kubectl get pods-namespace kube-system指定空间,Kubectl get pod pod-name-o wide 显示更多信息,kubectl get pods -o wide,Kubectl get pod pod-name-o yaml以yaml格式显示信息,kubectl常用命令,39,kubectl get pods-n kube-system|grep-v Running,kubectl get service查询service默认空间,kubectl get services-namespace kube-system,kubectl get pods-n kube-system-o wide,kubectl get deployments 查看,kubectl logs-f pods/monitoring-grafana-xxxxxxx-n kube-system,kubectl describe node codename查看节点的详细信息,kubectl logs pod-name 查看容器输出到控制台日志,kubectl常用命令,40,The end,!,Thank you,!,41,此课件下载可自行编辑修改,供参考!,感谢您的支持,我们努力做得更好!,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服