当前位置: 首页 > news >正文

郑州网站建站模板产品详情页模板免费下载

郑州网站建站模板,产品详情页模板免费下载,浅谈博物馆网站建设的意义,盘锦网站推广目录 一、kubernetes简介 1、kubernetes的介绍与作用 2、为什么要用K8S#xff1f; 二、kubernetes特性 1、自我修复 2、弹性伸缩 3、服务发现和负载均衡 4、自动发布#xff08;滚动发布/更新#xff09;和回滚 5、集中化配置管理和密钥管理 6、存储编排 7、任务批…目录 一、kubernetes简介 1、kubernetes的介绍与作用 2、为什么要用K8S 二、kubernetes特性 1、自我修复 2、弹性伸缩 3、服务发现和负载均衡 4、自动发布滚动发布/更新和回滚 5、集中化配置管理和密钥管理 6、存储编排 7、任务批量处理运行 三、kubernetes集群架构与核心组件 1、master组件 1.1 kube-apiserver 1.2 kube-controller-manager控制器管理中心 1.3 kube-scheduler调度器 1.4 etcd存储中心 1.5 master节点工作流程 2、Node组件 2.1 Kubelet 2.2 kube-proxy 2.3 docker 或roket 总结 3、kubernetes数据流向 四、Kubernetes核心概念 1、Podk8s基本单位 2、Pod 控制器 3、Label标签 4、label选择器label selector 5、service网关层 6、Ingress 7、name名称 8、namespace命令空间 一、kubernetes简介 1、kubernetes的介绍与作用 用于自动部署、扩展和管理“容器化containerized应用程序”的开源系统。可以理解成 K8S 是负责自动化运维管理多个容器化程序比如 Docker的集群是一个生态极其丰富的容器编排框架工具。 官网https://kubernetes.io 中文社区版http://docs.kubernetes.org.cn/92.html 2、为什么要用K8S 试想下传统的后端部署办法把程序包包括可执行二进制文件、配置文件等放到服务器上接着运行启动脚本把程序跑起来同时启动守护脚本定期检查程序运行状态、必要的话重新拉起程序。 设想一下如果服务的请求量上来已部署的服务响应不过来怎么办传统的做法往往是如果请求量、内存、CPU超过阈值做了告警运维人员马上再加几台服务器部署好服务之后接入负载均衡来分担已有服务的压力。 这样问题就出现了从监控告警到部署服务中间需要人力介入那么有没有办法自动完成服务的部署、更新、卸载和扩容、缩容呢 而这就是 K8S 要做的事情自动化运维管理容器化Docker程序。 K8S 的目标是让部署容器化应用简单高效。 K8S 解决了裸跑Docker 的若干痛点 单机使用无法有效集群没有有效的容灾、自愈机制没有预设编排模板无法实现快速、大规模容器调度没有统一的配置管理中心工具没有容器生命周期的管理工具没有图形化运维管理工具 K8S是google开源的容器集群管理系统在Docker等容器技术的基础上为容器化的应用提供部署运行资源调度服务发现和动态伸缩等一系列完整功能提高了大规模容器集群管理的便捷性其主要功能如下 使用Docker等容器技术对应用程序包装package、实例化instantiate、运行run 以集群的方式运行、管理跨机器的容器 解决Docker跨机器容器之间的通讯问题 K8S的自我修复机制使得容器集群总是运行在用户期望的状态。 二、kubernetes特性 1、自我修复 在节点故障时重新启动失败的容器替换和重新部署保证预期的副本数量杀死健康检查失败的容器并且在未准备好之前不会处理客户端请求确保线上服务不中断。 2、弹性伸缩 使用命令UI或基于CPU使用情况自动快速扩容和缩容应用程序实例保证应用业务高峰并发时的高可用性业务低峰时回收资源以最小成本运行服务。 3、服务发现和负载均衡 K8S为多个pod提供一个统一访问入口内部IP地址和一个DNS名称并且负载均衡关联的所有容器使用用户无需考虑容器IP问题。 服务发现 服务可以通过自动发现的形式找到它所依赖的服务 负载均衡 如果一个服务启动了多个容器能够自动实现请求的负载均衡。 4、自动发布滚动发布/更新和回滚 K8S采用滚动策略更新应用一次更新一个Pod没有问题就继续更新第二个Pod而不是同时更新所有的Pod如果更新过程中出现问题将回滚更新。确保升级影响业务。 5、集中化配置管理和密钥管理 管理机密数据和应用程序配置而不需要把敏感数据暴露在镜像里提高敏感数据安全性。并可以将一些常用的配置存储在K8S中方便应用程序使用。 6、存储编排 挂载外部存储系统无论是来自本地存储公有云AWS还是网络存储如NFS、GlusterFS、Ceph都作为集群资源的一部使用极大提高存储使用灵活性。 7、任务批量处理运行 提供一次性任务job定时任务crontab满足批量数据处理和分析的场景。 三、kubernetes集群架构与核心组件 K8S是属于主从设备模型master-slave架构即有master节点负责集群的调度、管理和运维、salve节点时集群中的运算工作负载节点。 在k8s中主节点一般被称为master节点而从节点则被称为worker node 节点每个node都会被master分配一些工作负载。因为master是整个集群的大脑如果master所在节点宕机或不可用那么所有的控制命令都将失效除了master在k8s集群中的其它机器被称为worker node节点当某个node宕机时其上的工作负载会被master自动转移到其它节点上去。 master搭建集群架构时最少不能低于3台。 1、master组件 master集群的控制平面负责集群的决策管理 1.1 kube-apiserver kubernetes API集群的统一入口各组件协调者以Restful API提供接口服务所有对象资源的增删改查和监听操作都交给 API server 处理后再提交给Etcd存储。 用于暴露Kubernetes API任何资源请求或调用操作都是通过kube-apiserver提供的接口进行。以HTTP Restful API 提供接口服务所有对象资源的增删改查和监听操作都交给API server 处理后再提交给Etcd 存储相当于分布式数据库以键值对方式存储可以理解成API server是k8s的请求入口服务API server负责接收K8S所有请求来自UI界面或者CLI命令行工具然后根据用户的具体请求去通知其他组件干活可以说API server是K8S集群架构的大脑。 1.2 kube-controller-manager控制器管理中心 运行管理控制器是k8s集群中处理常规任务的后台线程是k8s集群里所有资源对象的自动化控制中心。在k8s集群中一个资源对应一个控制器而controller manager 就是负责管理这些控制器的。由一系列控制器组成通过API server 监控整个集群的状态并确保集群处于预期的工作状态比如当某个node意外宕机时controller manager 会即使发现并执行自动化修复流程确保集群始终处于预期的工作状态。 1.3 kube-scheduler调度器 根据调度算法预选/优选的策略为新创建的pod选择一个node节点可以任意部署可以部署在同一个节点上也可以部署在不同的节点上 可以理解成k8s所有的node节点的调度器当用户要部署服务时scheduler会根据调度算法选择最合适的node节点来部署pod。 1.4 etcd存储中心 k8s的存储服务etcd是分布式键值对存储系统存储了k8s的关键配置和用户配置k8s中仅API server才具备读写权限其它组件必须通过API server的接口才能读写数据。 1.5 master节点工作流程 API server 接收到请求创建一批Pod。API server 会让Controller-manager按照所预设的模板去创建Pod。Controller-manager会通过API server 去找Scherduler为新创建的Pod选择最适合的Node节点比如运行这个Pod需要2C4G的资源Schduler会通过预选策略在所有node节点中挑选最优的node节点中还剩下多少资源是通过汇报给API Server 存储在etcd中API server 会调用一个方法找到etcd里所有node节点的剩余资源再对比新创建Pod所需要的资源在所有node节点中查找哪些node节点符合要求如果都符合预算策略就交给优先策略处理优先策略再通过CPU的负载、内存的剩余量等因素选择最适合的node节点并把pod调度到这个node节点上运行。 2、Node组件 2.1 Kubelet Node节点的监视器以及与master节点的通讯器 kubelet是master节点安插在node节点上的 “眼线” 它会定时向APIserver 汇报自己node节点上运行的服务的状态并处理来自master节点的请求。 从master节点获取自己节点上pod的期望状态比如运行什么容器运行的副本数量网络或者存储如何配置等直接跟容器引擎交互实现容器的生命周期管理如果自己上pod的状态与期望状态不一致则调用对应的容器平台接口即docker的接口达到这个状态管理镜像和容器的清理工作保证节点上镜像不会占满磁盘空间退出的容器不会占用太多资源。 2.2 kube-proxy 在每个node节点上实现pod网络代理是kuberbetes service资源的载体负责维护网络规划和四层负载均衡工作。 负责写入规则至iptables、ipvs实现服务映射访问的。 kube-proxy本身不是直接给pod提供网络pod的网络是由kubelet提供的kube-proxy实际上维护的是虚拟的pod集群网络。 kube-apiserver 通过监控kube-proxy 进行对kubernets service 的更新和端点的维护。 kube-proxy 是k8s集群内部的负载均衡器它是一个分布式代理服务器在k8s的每个节点上都会运行一个kube-proxy。 2.3 docker 或roket 容器引擎运行容器负责本机的容器创建和管理工作。 kubelet负责整个过程在管理容器引擎是用来干活 总结 #master API server所有服务访问的统一入口controller manager 负责根据预设模块创建pod。维持pod等资源的副本期望数目scheduler负责调度pod通过预选策略、优选策略选择最适合的node节点分配pod。etcd分布式键值对数据库负责存储k8s集群的重要信息持久化 #worker node 节点 kubelet跟apiserver通信汇报当前node节点上资源使用情况和状态接收apiserver的指令跟容器引擎交互来实现容器生命周期管理。kube-proxy在node节点上实现pod的网络代理维护网络规则和四层负载均衡工作负责写入规则到iptables或ipvs实现服务的映射访问容器运行时容器引擎docker运行容器负责本机的容器创建和管理工作。 3、kubernetes数据流向 kubectl提交一条命令。 1、首先经过AUTH认证然后将请求递交给API server进行处理(创建一个包含pod信息的yaml文件)然后将文件信息存储在etcd中。 2、controller-manager控制器会监听到API server发现了创建Pod的请求后会根据预设模板进行创建pod。(但是controller-manager无法完成调度所以它会通过API server 向scheduler获取node节点的信息)//controller-manager的功能:控制、管理维护node节点。 3、此时API server 就会向etcd获取后端节点信息。 4、scheduler调度器也会监听API server发现请求信息然后进行预选调度和优选调度的调度计算找出最闲且最符合条件的node节点。最后将结果信息给到API server。   //预选调度和优先调度   //1、预选调度: 一般根据资源对象的配置信息进行筛选例如nodeselector、hostselector、节点亲和性。   //2、优先调度: 根据资源对象需要的资源和node节点的资源的使用情况为每个节点打分然后选出最优的节点创建资源对象(pod) 5、此时controller-manage 也监听到 API server选出了node节点controller-manager会根据请求创建pod的配置信息。(也就是需要什么控制器)然后把控制资源给API server ------------下面开始与node节点交互------------------ 6、此时API server会提交清单给对应的节点的kubelet(代理)kubelet相当于api server在node节点的监视器。 7、kubelet代理通过k8s与容器的接口(例如:containnerd)进行交互。假如是docker容器那么此时kubelet就会通过dockershim以及runc接口与docker的守护进行docker-server进行交互来创建对应的容器再生成对应的pod。 8、kubelet同时会借助于 metric server收集本节点的所有状态信息然后再提交给 API server。 9、最后 API server 会提交list清单给etcd存储。 ------------------------------------------------------ 10、最终用户可以通过kube-proxy实现访问不同节点的数据。(ipvs映射、iptables规则)kube-proxy为网络代理四层负载均衡工作。 四、Kubernetes核心概念 kubernetes包含多种类型的资源对象: pod、label、service、Replication、Contaroller等 所有的资源对象都可以通过Kubernetes提供Kubectl 工具进行增、删、改、查等操作并将其保存在etcd中持久化存储。Kubernets起始是一个高度自动的资源控制系统通过跟踪对比etcd存储里保存的资源期望状态与环境中的实际资源状态的差异来实现自动控制和自动纠错等高级功能。 1、Podk8s基本单位 Pod是Kubernetes创建或部署的最小/最简单的基本单位一个Pod代表集群上正在运行的一个进程。 可以把Pod理解成豌豆荚而同一个Pod内的每个容器是一颗豌豆。 一个Pod由一个或多个容器组成Pod中容器共享网络存储和计算资源在同一台Docker主机上运行。 一个Pod里可以运行多个容器又叫边车模式sidecar而在生产环境中一般都是单个容器或者具有强关联互补的多个容器组成一个Pod。 ///边车模式 就是在一个pod里面可以运行多个容器。多个容器就是以边车模式存储在pod中。同一个Pod之间的容器可以通过localhost 互相访问并且可以挂载Pod内所有数据卷但是不同的Pod之间的容器不能通过localhost访问也不能挂载其它pod的数据卷。 //同一个Pod中容器之间的端口不能冲突不然会导致无限重启。 面试题 # 相同节点不同Pod之间如何通信 //不Pod之间不能通过localhost通信。它需要通过容器网络容器(比如docker0、bridge、host等)# 不相同节点pod之间怎么通讯 //借助于cni插件(container network interface:容器网络接口)通信。 //常用的接口有calico、flannel、cannel。2、Pod 控制器 Pod 控制器是 Pod 启动的一种模版用来保证在K8S里启动的 Pod 应始终按照用户的预期运行副本数、生命周期、健康状态检查等。 K8S 内提供了众多的 Pod 控制器常用的有以下几种 Deployment 无状态应用部署。 Deployment的作用是管理和控制Pod和ReplicaSet 管控他们运行在用户期望的状态中。Replicaset 确保预期的Pod副本数量。 ReplicaSet的作用就是管理和控制Pod 管控他们好好干活。但是ReplicaSet受控与Deployment。​​​​​​​Daemonset 确保所有节点运行同一类Pod保证每个节点上都有一个此类Pod运行通常用于实现系统级后台任务。 Statefulset: 有状态应用部署 Job  一次性任务根据用户的设置Job管理的Pod把任务成功完成就自动退出了。 Cronjab 周期性计划任务。 3、Label标签 标签是K8S特色的管理方式便于分类管理资源对象。 Label可以附加到各种资源对象上例如Node、Pod、Service、RC等用于关联查询和筛选。 一个Label是一个Key-value的键值对其中key与value由用户自己指定。 一个资源对象可以定义任意数量的label同一个label也可以被添加到任意数量的资源对象中也可以在对象后动态添加或者删除可以通过给指定的资源对象捆绑一个或多个不同的label来实现多维度的资源分组管理功能。 与 Label 类似的还有 Annotation注释。 区别在于有效的标签值必须为63个字符或更少并且必须为空或以字母数字字符[a-z0-9A-Z]开头和结尾中间可以包含横杠-、下划线_、点.和字母或数字。注释值则没有字符长度限制。 4、label选择器label selector 给某个资源对象定义一个label就相当于给它打了一个标签。随后可以通过标签选择器label selector查询和筛选拥有某些label的资源对象。 标签选择器目前有两种 基于等值关系等于、不等于和基于集合关系属于、不属于、存在 5、service网关层 在K8S的集群里虽然每个Pod会被分配一个单独的IP地址但由于Pod是有生命周期的它们可以被创建而且销毁之后不会再启动随时可能会因为业务的变更导致这个 IP 地址也会随着 Pod 的销毁而消失。 service就是用来解决这个问题的核心概念。 k8s中service并不是我们常说的 “服务” 的含义更像是网关层可以看做一组提供相同服务的Pod的对外访问接口流量均衡器。service作用与哪些Pod是通过标签选择器来定义的。在K8S集群中service可以看做一组提供相同服务的Pod的对外访问接口客户端需要访问的服务就是service对象每个service都有一个固定的虚拟ip这个ip也被称为cluster ip 自动并且动态地绑定后端的Pod所有网络请求直接访问service的虚拟ipservice会自动向后端做转发。​​​​​​​service除了提供稳定的对外访问方式之外还能起到负载均衡load balance的功能自动把请求流量分布到后端所有服务上service可以做到客户透明的进行水平扩展scale而实现service这一功能的关键就是kube-proxy。kube-proxy运行在每个节点上监听API server 中服务对象的变化可以通过以下三种流量调度模式userspace(废弃)、iptables(濒临废弃)、ipvs(推荐、性能最好)来实现网络的转发。 //为啥ipvs推荐 因为ipvs是效率高。它是直接通过ip转发。iptables是经过策略进行转发且在策略中是一行一行执行效率较低。Service 是K8S服务的核心屏蔽了服务细节统一对外暴露服务接口真正做到了“微服务”。比如我们的一个服务A部署了3个副本也就是3个Pod; 对于用户来说只需要关注一个Service 的入口就可以而不需要操心究竞应该请求哪一个Pod。 优势非常明显 : 一方面外部用户不需要感知因为Pod上服务的意外崩溃、K8S重新拉起Pod 而造成的IP变更外部用户也不需要感知因升级、变更服务带来的Pod替换而造成的IP变化。 总结 serice核心概念service通过标签选择器关联具有对应的 lable标签的pod再把相关pod的IP加入到自己的 endpoint 当中service 再根据endpoint 中的IP进行转发转发流程service属于4层转发。service的实现方式就是kube-proxy运行在每个节点上。service通过匹配的标签通过标签选择器找到对应的标签然后找到对应ip地址然后通过负载均衡将请求转发到对应的pod上。 6、Ingress service主要负责k8s集群内部的网络拓扑那么集群外部怎么访问集群内部呢 这个时候就需要ingress了ingress是整个k8s集群的接入层负责集群内外通讯。 Ingress是K8S集群里工作在OSI网络参考模型下第七层的应用对外暴露的接口典型的访问方式是http/https service只能进行第4层的流量调度表现形式是ipprot。ingress则可以调度不同的业务域不同URL访问路径的业务流量。 比如客户端请求http://www.ydq.com:prot -----ingress -----service-----pod 7、name名称 由于k8s内部使用 “ 资源 ”来定义每一种逻辑概念功能所以每种“ 资源 ”都应该有自己的“名称”。 “ 资源 ”  有api版本apiversion类别kind、元素数据metadata定义清单spec、状态status等配置信息。 “名称 ”  通常统一在“ 资源 ”的 “ 元数据 ”信息里在同一个namespace空间中必须是唯一的。 8、namespace命令空间 随着项目增多人员增加集群规模的扩大需要一种能够逻辑上隔离k8s内部“资源”的办法这就是namespace。 namespace是为了把一个K8S集群划分为若干了资源不可共享的虚拟集群组而诞生的。 不同namespace内的“资源”名称可以相同系相同的namespace内的同种“同种资源””名称“不能相同。 合理的使用k8s的namespace可是的集群管理员能够更好的对交付到K8S里的服务进行分类管理和浏览。 K8S里默认存在namespace有default、kube-system、kube-public等。 查询k8s里特定的“资源“ 要带上相应的namespace。 总结:k8s集群中需要namespace命令空间将资源进行隔离。当我们查找资源的时候需要根据命令空间去查找。
http://www.hkea.cn/news/14429785/

相关文章:

  • 临沂网站建设技术托管手机建筑网
  • 长春商城网站建设国外建筑公司网站
  • 东昌府聊城做网站费用百度指数
  • 小语种网站怎么做建设部四库一平台查询网站
  • ps个人网站设计总结wordpress plugins php speedy
  • 网站免费推广方式海外销售平台有哪些
  • 网站总是打不开网站关键词词库
  • 静态网站挂马天津河西做网站公司
  • 什么软件做电影短视频网站百度联盟广告收益
  • asp.net构建门户网站电商网站开发 参考文献
  • 腾讯企点有风险吗dedeseo网站
  • 兴海县网站建设公司网站标题栏怎么做
  • 网站主页的布局方式创建网络公司需要什么条件
  • 中山火炬开发区建设局网站兰州网站建设流程
  • 中国有哪些网站青年人爱看的网站
  • 上海网站建设专业公司哪家好黄页推广服务
  • 怎么做网站结构拓扑图保山市建设厅网站
  • 建网站做优化手机怎么网站模板
  • 跨境电子商务网站建设寻找设计师的网站
  • 小型电子商务企业网站建设建网站多少钱一个月
  • 做网站能致富吗用php做购物网站案例
  • 做视频投稿赚钱的网站短视频软件
  • 多语言站点 wordpress建立什么填词语
  • php婚庆网站源码零用贷网站如何做
  • 单页销售网站制作制作免费的网络电视app
  • 宠物网站设计模板网站视频插件怎么做
  • wordpress炫酷站电子商务网站建设的开发流程
  • 白色网站源码网站后台 全局配置
  • 有没有做任务的网站wordpress企业建站视频
  • 做it行业招标网站有哪些wordpress自适应手机