ImageVerifierCode 换一换
格式:PPT , 页数:41 ,大小:5.49MB ,
资源ID:18672401      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-18672401.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文((完整版)Kubernetes技术分享.ppt)为本站会员(wj)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

(完整版)Kubernetes技术分享.ppt

1、Kubernetes 技术分享架构简介集群搭建常用命令应用实例Kubernetes 简介Kubernetes是谷歌严格保密十几年的秘密武器Borg 的一个开源版本,是一个全新的基于容器技术的分布式架构领先方案。Borg 是谷歌内部使用的大规模集群管理系统,基于容器技术,目的是实现资源管理的自动化,以及跨多个数据中心的资源利用率的最大化;K8s”是第一个将 一切以服务为中心,一切围绕服务运转 作为指导思想的创新型产品K8s 是 Go 语言开发,是 Docker 的上层架构,就好像 Java 与J2EE 的关系一样K8s 是一个开放的开发平台,不局限于任何语言Kubernetes 主要功能k8s

2、能方便地管理跨机器运行容器化的应用提供应用部署、维护、扩展机制集群管理、安全防护、准入机制、多应用支撑、服务注册、服务发现、智能负载均衡、故障发现、自我修复、服务滚动升级、在线扩容、资源配额管理使用 Docker 对应用程序包装、实例化、运行以集群的方式运行、管理跨机器的容器解决 Docker 跨机器容器之间的通讯问题k8s 的自我修复机制使得容器集群总是运行在用户期望的状态为什么使用 Kubernetes?K8s 不仅仅支持 Docker,还支持 Rocket,这是另一种容器技术。全面拥抱微服务架构使用 k8s 我们系统可以随时的整体迁移k8s 系统具备了超强的横向扩容能力k8s 提供完善的

3、管理工具,涵盖了包括开发、部署测试、运维监控在内的各个环节K8s 集群K8s 架构K8s 体系结构Master集群控制管理节点,所有的命令都经由 master 处理负责整个集群的管理和控制,基本上 Kubernetes 所有的控制命令都是发给它,它来负责具体的执行过程,我们后面所有执行的命令基本都是在 Master 节点上运行的1.Kubernetes API Server(kube-apiserver),提供 Http Rest 接口的关键服务进程,是Kubernetes 里所有资源的增、删、改、查等操作的唯一入口,也是集群控制的入口进程2.Kubernetes Controller Man

4、ager(kube-controller-manager),Kubernetes 里所有资“”源对象的自动化控制中心,可以理解为资源对象的 大总管3.Kubernetes Scheduler(kube-scheduler),负责资源调度(Pod 调度)的进程,相“”当于公交公司的 调度室4.etcd Server,Kubernetes 里所有的资源对象的数据全部是保存在 etcd 中,(集群部署,不与 master 放同一台机器)MasterMasteretcdetcd 是一个高可用的键值存储系统,主要用于共享配置和服务发现。比对与 ZooKeeper,etcd 更量轻级1.etcd 是由 C

5、oreOS 开发并维护的,灵感来自于 ZooKeeper 和 Doozer,提供了与ZooKeeper 相似的功能,它使用 Go 语言编写,并通过 Raft 一致性算法处理日志复制以保证强一致性。Raft 是一个新的一致性算法,适用于分布式系统的日志复制,Raft 通过选举的方式来实现一致性。Google 的容器集群管理系统 Kubernetes、开源 PaaS 平台 Cloud Foundry 和 CoreOS 的 Fleet 都广泛使用了 etcd。在分布式系统中,如何管理节点间的状态一直是一个难题,etcd 像是专门为集群环境的服务发现和注册而设计,它提供了数据 TTL失效、数据改变监视

6、、多值、目录监听、分布式锁原子操作等功能,可以方便的跟踪并管理集群节点的状态etcd简单:支持 curl 方式的用户 API(HTTP+JSON)安全:可选的 SSL 客户端证书认证快速:单实例每秒 1000 次读写能力可靠:使用 Raft 保证强一致性Etcd 的用景包括服(应场务发现Service Discovery)、消息布、均衡、发与订阅负载分布式通知、分布式、分布式列。如果与协调锁队你熟悉 ZooKeeper,你会发现 etcd 实了现ZooKeeper 的功能Node除了 Master,Kubernetes 集群中的其他机器被称为 Node 节点,早期版本也称为 Minion 节点

7、Node 节点才是 Kubernetes 集群中的工作负载节点,每个 Node 都会被 Master 分配一些工作负载(Docker 容器),当某个 Node 宕机,其上的工作负载会被 Master 自动转移到其他节点上去1.kubelet,负责 Pod 对应的容器的创建、启停等任务,同时与 Master 节点密切协作,实现集群管理的基本功能。一旦 Node 被纳入集群管理范围,kubelet 进程就会向 Master汇报自身的情报,这样 Master 可以获知每个 Node 的资源使用情况,并实现高效均衡的资源调度策略。而某个 Node 超过指定时间不上报信息,会被 Master“判定为 失

8、”联,Node 状态被标记为不可用(Not Ready),随后 Master“”会触发 工作负载大转移的自动流程;2.kube-proxy,实现 Kubernetes Service 的通信与负载均衡机制的重要组件;3.Docker Engine(docker),Docker 引擎,负责本机的容器创建和管理工作;NodePod 是最小部署单元,一个 Pod 由一个或多个容器组成,Pod 中容器共享存储和网络,在同一台 Docker主机上运行。同一个 Pod 里的容器共享同一个网络命名空间,可以使用 localhost 互相通信 1.每个 Pod“”都有一个特殊的被称为 根容器 的 Pause

9、容器,还包含一个或多个紧密相关的用户业务容器;2.一个 Pod 里的容器与另外主机上的 Pod 容器能够直接通信;3.如果 Pod 所在的 Node 宕机,会将这个 Node 上的所有 Pod 重新调度到其他节点上;4.普通 Pod 及静态 Pod,前者存放在 etcd 中,后者存放在具体 Node 上的一个具体文件中,并且只能在此 Node 上启动运行;5.Docker Volume 对应 Kubernetes 中的 Pod Volume;6.每个 Pod 可以设置限额的计算机资源有 CPU 和 Memory;Requests,资源的最小申请量;Limits,资源最大允许使用的量;PodPo

10、dPod、容器与 Node 关系 Endpoint(IP+Port)标识服务进程的访问点 Event是一个事件记录,记录了事件最早产生的时间、最后重复时间、重复次数、发起者、类型,以及导致此事件的原因等信息。Event 通常关联到具体资源对象上,式排查故障的重要参考信息;Endpoint、EventService Service 一个应用服务抽象,定义了 Pod 逻辑集合和访问这个 Pod 集合的策略。Service 代理 Pod 集合对外表现是为一个访问入口,分配一个集群 IP 地址,来自这个 IP 的请求将负载均衡转发后端 Pod 中的容器。Service 通过 LableSelector

11、 选择一组 Pod 提供服务。在 K8s 集群中微服务的负载均衡是由 Kube-proxy 实现的,在 K8s 的每个节点上都有一个Service“”其实就是我们经常提起的微服务架构中的一个 微服务,kubernetes 中的核心。通过分析、识别并建模系统中的所有服务为微服务Kubernetes Service,最终我们的系统由多个提供不同业务能力而又彼此独立的微服务单元所组成,服务之间通过 TCP/IP 进行通信,从而形成了我们强大而又灵活的弹性网络,拥有了强大的分布式能力、弹性扩展能力、容错能力ServiceServiceService 如上图示,每个 Pod 都提供了一个独立的 Endp

12、oint(Pod IP+ContainerPort)以被客户端访问,多个 Pod 副本组成了一个集群来提供服务,一般的做法是部署一个负载均衡器来访问它们,为这组Pod 开启一个对外的服务端口如 8000,并且将这些 Pod 的 Endpoint 列表加入 8000 端口的转发列表中,客户端可以通过负载均衡器的对外 IP地址+服务端口来访问此服务。运行在 Node 上的 kube-proxy 其实就是一个智能的软件负载均衡器,它负责把对 Service 的请求转发到后端的某个 Pod 实例上,并且在内部实现服务的负载均衡与会话保持机制。Service 不是共用一个负载均衡器的 IP 地址,而是每

13、个 Servcie分配一个全局唯一的虚拟 IP 地址,这个虚拟 IP 被称为 Cluster IP。ServiceNode IP Node 节点的 IP 地址,是 Kubernetes 集群中每个节点的物理网卡的 IP 地址,是真是存在的物理网络,所有属于这个网络的服务器之间都能通过这个网络直接通信;Pod IP Pod 的 IP 地址,是 Docker Engine 根据 docker0 网桥的 IP 地址段进行分配的,通常是一个虚拟的二层网络,位于不同 Node 上的 Pod 能够彼此通信,需要通过 Pod IP 所在的虚拟二层网络进行通信,而真实的 TCP 流量则是通过 Node IP

14、所在的物理网卡流出的;Cluster IP Service 的 IP 地址。特性如下:仅仅作用于 Kubernetes Servcie 这个对象,并由 Kubernetes 管理和分配 IP 地址;无法被 Ping“”,因为没有一个 实体网络对象 来响应;只能结合 Service Port 组成一个具体的通信端口;Node IP 网、Pod IP 网域 Cluster IP 网之间的通信,采用的是 Kubernetes 自己设计的一种编程方式的特殊的路由规则,与 IP 路由有很大的不同;Label Label 可以附加到各种资源对象上,一个资源对象可以定义任意数量的 Label。给某个资源定义

15、一个 Label,相当于给他打一个标签,随后可以通过 Label Selector(标签选择器)查询和筛选拥有某些 Label 的资源对象。我们可以通过给指定的资源对象捆绑一个或多个 Label 来实现多维度的资源分组管理功能,以便于灵活、方便的进行资源分配、调度、配置、部署等管理工作;Label Selector 示例:select*from pod where pods name=XXX,env=YYY,支持操作符有=、!=、in、not in;部署和升级 Pod,声明某种 Pod 的副本数量在任意时刻都符合某个预期值;Pod 期待的副本数;用于筛选目标 Pod 的 Label Selec

16、tor;当 Pod 副本数量小于预期数量的时候,用于创建新 Pod 的Pod 模板(template);Replication Controller(RC)下一代的 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(

17、dev,qa)),这对复杂的运维管理带来很大方便。Replica Set拥有更加灵活强大的升级、回滚功能。在新的版本中,官方推荐使用 Replica Set和 Deployment 来代替 RC,两者相似度 90%,相对于 RC 一个最大升级是我们随时指导当前 Pod“”部署 的进度。Deployment 使用了 Replica Set,除非需要自定义升级功能或根本不需要升级 Pod,一般情况下,我们推荐使用 Deployment 而不直接使用 Replica Set;典型使用场景:创建一个 Deployment 对象来生成对应的 Replica Set 并完成 Pod 副本的创建过程;检查更

18、新 Deployment 的状态来查看部署动作是否完成(Pod 副本的数量是否达到预期的值);更新 Deployment 以创建新的 Pod;(比如镜像升级)如果当前 Deployment 不稳定,则回滚到一个早先的 Deployment 版本;挂起或者恢复一个 Deployment;Deployment意思是 Pod 横向自动扩容,目标是实现自动化、智能化扩容或缩容。Pod 负载度量指标:CPUUtilizationPercentage 通常使用一分钟内的平均值,可以通过 Heapster 扩展组件获取这个值。一个 Pod 自身的 CPU 利用率是该 Pod 当前 CPU 的使用量除以它的

19、Pod Request 的值。例如 Pod Request 定义值为 0.4,当前 Pod 使用量为 0.2,则它的 CPU 使用率为 50%。但如果没有定义 Pod Request 值,则无法使用CPUUtilizationPercentage 来实现 Pod 横向自动扩容的能力;应用程序自定义的度量指标,比如服务在每秒内的相应的请求书(TPS 或QPS)Horizontal Pod Autoscaler(HPA)数据卷,是 Pod 中能够被多个容器访问的共享目录。定义在Pod 之上,被一个 Pod 里的多个容器挂载到具体的文件目录之下;与 Pod 生命周期相同。可以让一个 Pod 里的多个

20、容器共享文件、让容器的数据写到宿主 机的磁盘上或者写文件到 共享存储中Volume命名空间将对象逻辑上分配到不同 Namespace,可以是不同的项目、用户等区分管理,并设定控制策略,从而实现多租户。命名空间也称为虚拟集群。NamespaceNode、Pod、Replication Controller 和 Service 等都可以看“”作是一种 资源对象,几乎所有的资源对象都可以通过 Kubernetes提供的 kubectl 工具执行增、删、改、查等操作并将其保存在 ectd中持久化存储。Kubectl关闭 CentOS 自带的防火墙服务 systemctl disable firewal

21、l#systemctl stop firewall 安装 Etcd 和 Kubernetes 软件(会自动安装 docker 软件)yum install y etcd kubernetes 按顺序启动所有服务 systemctl start etcd systemctl start docker#systemctl start kube-apiserver#systemctl start kube-controller-manager#systemctl start kube-scheduler#systemctl start kubelet#systemctl start tube-pro

22、xy64 位 CentOS7 单机版 Kubernetes 集群环境安装由于篇幅,k8s 集群安装文档,后续附件提供Kubernetes 集群环境安装访问地址: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 tokenKubernetes-dashboardGrafana 地址:http:/192.168.1.52:30108/Kubernet

23、es 监控Kubernetes 负载均衡 nginx ingress Kubernetes 暴露服务的方式目前只有三种:LoadBlancer Service、NodePort Service、Ingress;前两种估计都应该很熟 悉,下面详细的了解下这个 Ingress Ingress 由两部分组成:Ingress Controller 和 Ingress 服务。Ingress Contronler 通过与 Kubernetes API 交互,动态的去感 知集群中 Ingress 规则变化,然后读取它,按照自定义的规则,规则就是写明了哪个域名对应哪个 service,生成一段 Nginx 配

24、置,再写 到 Nginx-ingress-control 的 Pod 里,这个 Ingress Contronler 的pod 里面运行着一个 nginx 服务,控制器会把生成的 nginx 配置写入/etc/nginx.conf 文件中,然后 reload 一下 使用配置生效。以此来达到域名分配置及动态更新的问题。Kubernetes 负载均衡 nginx ingressDemo 地址:https:/192.168.1.51/demo/查看 nginx-ingress 容器里的 nginx 配置,是动态变化的查看容器日志,轮询访问两台 tomcatKubernetes 负载均衡 nginx

25、ingresskubectl get nodes 查看集群中有多少节点kubectl create-f mysql-rc.yaml 创建kubectl apply-f mysql-rc.yaml 创建或更新kubectl delete-f mysql-rc.yaml 删除kuberctl delete pods-all 删除所有的 podkubectl get rc 查询 RCkubectl get pods 查询 pod 默认空间kubectl get pods all-namespaces 所有空间kubectl get pods-namespace kube-system 指定空间Kub

26、ectl get pod pod-name-o wide 显示更多信息kubectl get pods -o wideKubectl get pod pod-name-o yaml 以 yaml 格式显示信息kubectl 常用命令kubectl get pods-n kube-system|grep-v Runningkubectl get service 查询 service 默认空间kubectl get services-namespace kube-systemkubectl get pods-n kube-system-o widekubectl get deployments 查看kubectl logs-f pods/monitoring-grafana-xxxxxxx-n kube-systemkubectl describe node codename 查看节点的详细信息kubectl logs pod-name 查看容器输出到控制台日志kubectl 常用命令The end!Thank you!

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2