站技术沙龙三个演讲主题_第1页
站技术沙龙三个演讲主题_第2页
站技术沙龙三个演讲主题_第3页
站技术沙龙三个演讲主题_第4页
站技术沙龙三个演讲主题_第5页
已阅读5页,还剩76页未读 继续免费阅读

下载本文档

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

文档简介

Docker| Kubelet运行原 go oGolang最大特色:协程通道

执行效率可直接编译成机器码,不依赖其他内存回简单易学25个关键 定义:etcd是一个应用在分布式环境下的key/value服务。利用etcd的特性,应用程序可以在集群中共享信息、配置或作服务发现,etcd会在集群的各个节点中这些数据这些数据始终正特点:1.简单:基于HTTP+JSON的API让你用curl就可以轻松使用安全:可选SSL客户认证机制快速:每个实例每秒支持一千次写操作可信:使用Raft算法充分实现了分布式现状:etcd大大降低集群 Kubernetes,CloudFoundry,以及在 第一时间得到通知(时间上的收获watch只返回变化的信息(带宽减少轮询查询(资源上的收获 controllermanagerLister:定期(60s)调用apiserver的restapi的list接口,全量取回资源的所有信息。httpGET 资源的变化,第一时间得知某个资源发生变httpGET上述2难以想象如果没有watch接口 仅仅一条业务list就会消耗掉50Mbit/s的带宽apiserver是一个单纯的集群配置信息接口,单纯的通道,不涉及复杂的业务处理,降低复杂度,减kubernetes/openshift作为分布式系统,组件具有自我生存,自我恢复能力组件间的协作由业务承担者发出 组件的自治力完全被控制组件,容易被控制组件的强烈压榨而,控制组件需要做被kubelet以说是一个的驱动器,负责管理任务docker的实现逻辑当处理过程容易出现不可抗力的无法继续执行情况时(api阻塞,秒杀,带宽不足,数异步处理通过增强对每个异步单元的控制能力,来降低系统的不稳定性(异步处理专注于在每个业务单元的处理逻辑,提高代码的可读性同步与异步在现实生活中应用非常广泛,使用同步与异步结合可以提高非常高的效率

炫酷吊炸天的kubeletkubelet尽可能地抽象出异步处理单元,目标是提高开发效率,增加系统稳定性,增加代码可读性。kubelet把不同的工作抽象出不同的处理逻辑。尽量减少逻辑间的顺序掉用,使用异步逻辑处理增加系统初始producerListerWatcher从apiserver拉取pod(labelselector:spec.nodeName=nodename)配首先:为什么使用拉模式,而不是用推模式尽可能地掌握控制力,不依赖于其他组件<组件自apiserver一个单纯的通道kubelet是一个独立的组件,应该具有自我生存的能力,所以他的输入这是一个典型的异步处理单元,它的异步处理目标是缓存pods信息,并向后续处理逻辑提供一golang的channel,用 需要处理的pods信息kubelet处理从apiserverpods缓存对比ADDUPDATEREMOVERECONCILE分别执行各自逻辑livenessManager活性检测channel发现检测失败<syncpod每隔1秒,查询出正在启动中的pod信息,若正在pod的在其spec.activeDeadlineSs内没有启动完成,则<syncpo 负责pod的一系列资源清理工作,包括异步处理单元的数据,killpod,移除 (这里也是一个把deletepod工作分离的设计,deletepod只负责删除容器,而跟容器相关的后续清理工作不在删除逻辑里面执行,而单独划分出一个housekee 很生动形象,这样做的好处是相同逻辑的业务批处理若混杂入其他事情,会降低批处理的效率,同时删除文涉及的阻塞问题比较多,应该单独

kubeletaddpodkubelet通过containername维持与kubernetes关系

过滤掉podstatus为Failed

podWorker上面的pod会由传递给podWorker通过channel接受到请求后会最终会落地创建pod,终于可以包饺子了创建pod工 ,plugin插mount从apiserver获取交由dockermanager行后续的处理docker类似于饺子店的包饺子工人,所有材料都准备好了,她负责安createdstart调用创建dockercontainer 输入:Kubelet的

是period:1period:0

GarbageCollection(GCGetallcontainersthatareevictable.Evictablecontainersare:notrunningandcreatedmorethanMinAge(1minute)ago.Period:1使用docker户端据containerid用InspectImage接口查询当前容器的底层信息(内容还是相当多)k8s:先把不在我管辖的不正常的container先删掉,省的干扰。该干正经的工作如果container的pod已经被删掉,就先把这个pod下面的container也删因为每个pod会保留2个挂掉container,如果挂掉的container数量>2,k8s只保 版本的2个

ImageusagecapacityifusagePercent>=90%{ 清 } forrangeimages{ifimageisverynew}DELETEoneDockerimage}}}Prober异步处理单元探测器liveness负责

dockerexecpodip+proberportdialpodip+proberport

工作流 完全交给probermanager。for_,c:=rangepod.Spec.Containers{ifc.ReadinessProbe!=nil{}ifc.LivenessProbe!=nil}}

1.先找一下pod的状态,看看能不能找到,如果找不到说明要么正在创建中,要么已经被删除,这次先不干,下次检测再干如果下次找到了pod的状态,但是PodFailed或者PodSucceeded,嘿嘿,太好了 都挂了,我就退出 ,看看能不能找到,如果找不到说明要么正在创建中,要么已经被删除,这次先不干,下次检如果下次找到了container的状态 虽然找到了,但是吧,这个容器已经不再是当时的那个容器了 我更新下单前容器的检测结果为失败,把结果更新到resultManager上如果是c.LivenessProbe我更新下单前容器的检测结果为成功把结果更新到resultManager上如果下次找到了container的状态,但是吧 !=Running我更新下单前容器的检测结果为失败,把结果更新resultManager上如果容器还是当前的容器,那就检检测完后不论结果如何我先存累计下检测结Successorfailureisbelowthreshold-leavetheprobestateunchanged.把当前的检测结果需要与参数FailureThreshold与SuccessThreshold整合下。如果当前检测失败了,且总失败数>FailureThreshold,那才是真失败把结果更新到resultManager上去由此看来prober的是根据监测结果把结果更新到ReadinessProbe和LivenessProbe各自的resultManager上去泰坦爱泼特 。最有智慧的神之一,被称为先知者人类的创造者和保护者。被锁在高加索山,每曰有 啄食其肝脏。后被 剌救出。这个不一般这是一个组件自治(pull)的开源系 ,告警开源系统 基于时间序 埋点数据,数据可以包含操作系统数据,业务数据等kubernetes大量使用来收集数据基于时间序列的数据图表可以查看系统的历史性变化,通过找出某个时间段内哪 数据发生/fsouza/go-dockerclient未使用某is厂商的服务器挂载的远端的文件系统(nfs),当文件系统由于供应商的技术问题会有挂如删除container,删除image由于docker的对文件操作hang住,kubelet调用dockerremoteapihttp的功能,所有涉及docker的的api都会hang住kubelet启动参serialize-image-Pullimagesoneatatime.We mend*not*changingthedefaultvalueonnodesthatrundockerdaemonwithversion<1.9oranAufsstoragebackend.Issue#10959hasmoredetails.[default=true] Docker@MAKEDEVOPSMORE/StephenZhou SystemEngineer-5+ OSD(OnlineServiceMCSE:ServerNowfocus:ELKStack/SaltStack/Forfun:Blizzard/ACG/DockerDocker@DockerinCI/HostOS&DockerDockerMonitor:Zabbix&DockerCluster:Native/Swarm/Kubernetes/WindowsContainerOSPhysicalMachinetooVirtualMachinetooMultipleMiddlewaresandNginx/Redis/MongoDB/.Net/Java/Python/NodeJS/PHP/ManyReleaseGitlab/Rsync/Dev/QA/YZ/HowtochooseDevOps.DeployandreleasebyOpstools:Ansible/Puppet/Solution:Docker–Build,Ship,andRunAnyApp,AnywhereDocker,Containers,andtheFutureofApplicationDelivery

Dev:Buildonce,runanywhereOps:Configureonce,runanythingWhatisDevandOpsAutomationAssociatedI.Traditional /Python/Ruby/BAT/Ops.tools(Ansible/Puppet/II.StandardContinuousIntegrationbyDockerNativeCluster(IP:Socket+LoadIII.EnhancedDockerCluster:Scheduler/HealthCheck/High-Availability/Auto-ContinuousDeliveryPipelinetoimproveauto-testandreleaseDockerin沪江学习(NodeJS)(PV~ DockerDev-commitcodetoGitlab,JenkinsbuildthecodeafterPR,triggerbuilddockerimagebyDockerfileQA-pullimage,featureandperformanceImageRegistryOps–pushimageImageRegistry

ContainerContainerSourceCode

JenkinsRepackManually

DockerRun ContainerContainerContainerDockerHostOS&DockerDockerHostOSCentOS7(CurrentCoreOS(Cloud-WindowsServer2016(IntroducingSrcimagespullfromdockerhub–Usingproxy blockTODO:DIYprivateimage,integratingZabbix/salt/cmdbclientwithitAdvantage:usingcontainerlikerealDisadvantage:tooheavy,goagainstdockerDocker Monitor-NetworkMonitor-RESTFUL{"/": "latest_usage":{"cpu":325,"minute_usage": plete":"cpu":"mean":221,"max":"fifty":"ninety":"ninetyfive":"memory":{ }

"hour_usage": plete":}}

"day_usage":}Log-DockerContainer–(-v)→DockerHost/LogstashContainer→DockerContainer–(--log-driver)→RsyslogServer→RsyslogServerLogstashimage:d -log_driver:"syslog"syslog-address:command:pm2start--no-daemon#dockerrun-d-p9001:3000--add-host="TOOLS-DB:10.xx.xx.xx"-name="vocabtest"--log-driver=syslog--log-optsyslog-address=tcp://xx.xx.xx.114:10514-t Log/ELK-DockerCluster-NativeClusterPullImageAssignportReleasescriptSimpleDifficulttoscale-DifficulttoDockerCluster-DockerSwarmprovidesnativeclusteringcapabilitiestoturnagroupofDockerenginesintoasingle,virtualDockerEngineDisadvantage:SwarmcannotdetectcontainerfailedandtakingitofflineLookingforLatestRelease:Docker1.12NowwithBuilt-inDockerCluster-K8sAutomaticloadbalanceServicediscoveryandloadAutomatedrolloutsandDifficulttointegratewithF5(PhysicalLB)DockerCluster-KubernetesDockerCluster-MesosScheduler:Quorum:Network:WindowsWindowsContainerHyper-VDockerHostWindowsServer2016StandardTechnicalPreviewDockerImprovephysicalmachineMost Windows–RunasDaemon(non-

run-d-p80:80 dockerattachdockerrm-fWindows--RunasContainerImage-Manual/dockerrun-it-p/iis:windowsservercoreContainerImage-Manual/dockerrun-itd-p80:80--/iis:windowsservercoredockerattachModifiediissitecontentinthedelecho" oWorldFromaWindowsServerContainer"

温馨提示

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

评论

0/150

提交评论