摘要: 前言 我们都知道 Vue 对于响应式属性的更新,只会精确更新依赖收集的当前组件,而不会递归的去更新子组件,这也是它性能强大的原因之一。 例子 举例来说 这样的一个组件: <template> <div> {{ msg }} <ChildComponent /> </div> </template> 阅读全文
posted @ 2020-04-28 16:57 ppjj 阅读(1044) 评论(0) 推荐(0)
摘要: 理解etcd性能:etcd集群架构图,包含raft层,storage层(storage层包含treeindex层和boltdb底层持久化存储key-value层),它们每一层都可能造成性能损失,raft层需要网络同步数据,网络io节点之间的rtt和带宽都会影响etcd性能,另外wal也会受到磁盘io 阅读全文
posted @ 2020-04-28 16:53 ppjj 阅读(172) 评论(0) 推荐(0)
摘要: etcd是一个分布式,可靠的key-value存储系统,etcd集群通常有3个或5个节点组成,之间通过raft一致性算法进行协同,算法会选举主节点作为leader,由leader负责数据的同步和数据分发,当leader出现故障会选举另一个节点作为leader,并重新完成数据同步呢分发。 在整个架构中 阅读全文
posted @ 2020-04-28 16:52 ppjj 阅读(181) 评论(0) 推荐(0)
摘要: 容器技术:最下面是磁盘,容器镜像是放在磁盘disk上的,上层是容器引擎,容器引擎可以是docker,也可以是其他,引擎向下发一个请求比如创建容器,这个时候引擎就把磁盘上面的容器镜像运行成宿主机上的一个进程。 对于容器来说,最重要怎么保证进程用到的资源被隔离和被限制,在Linux内核上面有cgroup 阅读全文
posted @ 2020-04-28 16:51 ppjj 阅读(141) 评论(0) 推荐(0)
摘要: helm:开发者把需要的资源文件包装起来,通过模板化方法,将一些可变字段暴露给用户,用户就可以自己设置了,放在指定的仓库中供用户下载,对用户而言,使用helm一条简单命令就可以install安装,卸载uninstall和升级update。使用create创建命令之后会生成charts.yaml(ch 阅读全文
posted @ 2020-04-28 16:49 ppjj 阅读(33) 评论(0) 推荐(0)
摘要: k8s通过pod部署应用,但是pod生命周期短暂,删除了重启之后IP地址就变了,这时需要service服务发现,对内的话对所有pod提供统一的访问入口,让pod网络暴露出去,对外的话提供统一的访问地址,包含负载均衡。 创建完成service有一个唯一的ClusterIP字段,它通过service的唯 阅读全文
posted @ 2020-04-28 16:49 ppjj 阅读(79) 评论(0) 推荐(0)
摘要: k8s网络模型约法三章:任意两个pod之间可以直接通信,无需经过显示使用nat来接受数据和地址的转换;node和pod直接通信,无需明显地址转换;pod看见自己的ip跟别人看见IP是一样的,无需转换。 network namespace是实现网络虚拟化的内核基础,创建了隔离的网络空间,拥有独立的附属 阅读全文
posted @ 2020-04-28 16:48 ppjj 阅读(78) 评论(0) 推荐(0)
摘要: 在k8s中监控和日志属于生态一部分,并不是核心组件,定义了介入的接口标准和规范,供其他厂商组件快速集成。监控类型:资源监控,性能监控apm监控,安全监控,事件监控,监控的接口标准:resource metrice(实现类metrics-server常见有节点级别,pod级别,namespace级别, 阅读全文
posted @ 2020-04-28 16:47 ppjj 阅读(67) 评论(0) 推荐(0)
摘要: 探针监测,实时进行观测,资源使用情况,日志,liveness(存货探针,失败之后会杀掉pod,支持重新拉起pod)和readness(就绪探针,失败之后切断流量,启动之后无法立即对外服务),三种方式:httpget请求,exec执行容器命令,TCPsocket(容器的IP和port),三种命令都有的 阅读全文
posted @ 2020-04-28 16:47 ppjj 阅读(61) 评论(0) 推荐(0)
摘要: k8s通过csi snapshot controller来实现存储快照功能,可以快速restore,可以快速复制以及迁移等操作。他设计理念跟PVC和pv很像,volumnsnapshot相当于PVC,volumnsnapshotclass相当于storageclass集群管理员,volumnsnap 阅读全文
posted @ 2020-04-28 16:43 ppjj 阅读(134) 评论(0) 推荐(0)
摘要: 使用volumns字段声明卷的名字和类型,本地卷包含emptydir和hostpath,一个随着pod删除也删除,一个是不会删除。 使用的时候用volumnmounts,name字段表示使用哪个卷,subpath:在多个容器共享一个卷的时候,为了隔离数据。 声明静态PV需要关注三个字段,capaci 阅读全文
posted @ 2020-04-28 16:41 ppjj 阅读(431) 评论(0) 推荐(0)
摘要: pod volumn可以在容器重启之后,之前的数据不丢失,可以共享数据,有本地存储和网络存储(in-tree,out-of-tree),它是独立于pod之外的,volume是存在于pod里面的,pod volune将配置信息以卷的形式挂载在容器中,容器通过posix访问数据,但是它无法准备表达数据v 阅读全文
posted @ 2020-04-28 16:37 ppjj 阅读(70) 评论(0) 推荐(0)
摘要: secret用来存储经过base64编码的密码token等敏感信息的资源对象,有type属性(opaque,service-account-token,dockerconfigjson,bootstrap.token),data属性,是用来存储secret数据的,以key-value形式。 创建方式 阅读全文
posted @ 2020-04-28 16:35 ppjj 阅读(68) 评论(0) 推荐(0)
摘要: pod配置管理方式:可变配置configmap,敏感信息secret,身份认证serviceaccount,资源配置resource,安全管控securitycontext,前置校验initcontroller。configmap的好处让可变配置和镜像进行解耦,保证容器可移植性。主要被pod使用,可 阅读全文
posted @ 2020-04-28 16:33 ppjj 阅读(81) 评论(0) 推荐(0)
摘要: job就是job-controller里面的一种类型,下面spec.template就是pod的spec,唯一多了restartpolicy重启策略和job运行失败时候的重试次数backofflimit查看pod,其实job最后执行单元还是pod,它比普通的pod多了一个ownerreference 阅读全文
posted @ 2020-04-28 16:32 ppjj 阅读(33) 评论(0) 推荐(0)
摘要: deployment中第一个replicas就是deployment期望的或最终数量,第二个template就是pod的模板查看pod:nginx-deployment-hhhhhh-uwh3e最前面一段是pod所属的deployment.name,中间一段template-hash,这里三个pod 阅读全文
posted @ 2020-04-28 16:31 ppjj 阅读(70) 评论(0) 推荐(0)
摘要: k8s资源对象:spec期望的状态,status观测到的状态,metadata:labels,annotations,ownerreference(所有者,即集合类资源,比如pod集合:replicaset,statefulset)控制器模式,它是声明式api驱动的,不是命令式,是基于k8s资源对象 阅读全文
posted @ 2020-04-28 16:30 ppjj 阅读(49) 评论(0) 推荐(0)
摘要: 容器是视图隔离,资源控制,独立的文件系统,就是进程的集合。容器镜像是运行容器所需要的文件集合,它有分层和复用的优势。具有一次构建,到处运行的特点。dockfile是描述镜像构建步骤。changeset是构建步骤所产生的文件系统的变化,包含新建,删除,修改文件。容器生命周期:init生命周期=容器生命 阅读全文
posted @ 2020-04-28 16:27 ppjj 阅读(49) 评论(0) 推荐(0)
摘要: 1,先拉去主分支带代码到本地。 2,然后在idea配置主分支remote属性(在vcs-》git-》remote),在里面添加fork分支。 3,然后在本地代码中fetch一下,获取最新代码,这样就把fork分支拉取到本地了。 4,然后在idea到右下角选择你fork到分支,并checkout出来。 阅读全文
posted @ 2020-04-28 16:25 ppjj 阅读(6772) 评论(0) 推荐(0)
摘要: 在idea中配置文件中设置maven: set maven.home default ${maven.home}/conf 阅读全文
posted @ 2020-04-28 16:14 ppjj 阅读(1137) 评论(0) 推荐(0)
摘要: @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE, classes={HelloService.impl}) //这样每个测试方法完成的时候就不会重复重启springboot 阅读全文
posted @ 2020-04-28 16:11 ppjj 阅读(1187) 评论(0) 推荐(0)
摘要: kata containers像一个pod sandbox,里面只有guest kernel跑着一些容器本事的打包和容器应用,可以通过k8s从外部管理pod容器,获取metrics/debug信息而不登陆虚拟机,而且系统是只读的,并不包含完整的操作系统,并不像传统虚拟机。对于容器来说,它只有容器引擎 阅读全文
posted @ 2020-04-28 16:04 ppjj 阅读(32) 评论(0) 推荐(0)
摘要: k8s APIserver不仅面向最终用户,同时面向工具和扩展开发者,是开放生态系统的基础,是k8s系统的入口,封装了核心对象的增删改查操作,以restful接口方式提供给外部客户和内部组件调用。 kube-proxy是一个简单的网络代理和负载均衡器,它具体实现service模型,每个service 阅读全文
posted @ 2020-04-28 16:02 ppjj 阅读(1907) 评论(0) 推荐(0)
摘要: runtimeclass是k8s对一种内置的全局域资源,是容器运行时,解决了集群里有哪些可用的容器运行时,让pod选择合适的容器运行时,让pod调度到安装有指定的容器运行时的节点上,统计容器运行时产生的业务运行以外的开销,还有scheduling和overhead功能。 它的核心是handler,表 阅读全文
posted @ 2020-04-28 16:01 ppjj 阅读(193) 评论(0) 推荐(0)
摘要: 容器运行时就是启动和停止容器的组件,有docker等,在cri出现之前,docker作为第一个容器运行时,kubelet通过内嵌的dockershim操作docker API来操作容器,达到面向终态的效果,但是难以维护,太复杂,到后来就是对容器运行时的操作抽象出一个接口,将kubelet代码与具体容 阅读全文
posted @ 2020-04-28 16:00 ppjj 阅读(81) 评论(0) 推荐(0)
摘要: k8s API请求从发起到持久化入库:首先是人机交互,kubelet对APIserver的请求过程,然后是机机交互,pod中业务逻辑与APIserver之间的交互,这里面分为三个步骤,首先是authentication认证,可能返回401错误,然后是authorization鉴权,可能返回403错误 阅读全文
posted @ 2020-04-28 15:59 ppjj 阅读(25) 评论(0) 推荐(0)
摘要: cni是容器网络的API接口,它是k8s中一个调用网络实现的接口,通过这个API调用不同的网络插件,包括calico,flannel,terway,weaver以及contiv。 k8s通过配置文件决定使用什么样的cni:首先在每个节点上配置cni配置文件(/etc/cni/net.d/xxnet. 阅读全文
posted @ 2020-04-28 15:58 ppjj 阅读(60) 评论(0) 推荐(0)
摘要: pod的IP是真身份证,唯一的,拒绝任何变造nat,pod内的容器共享。这个身份证,实现方法有通过外部路由器,或者自己overlay。 协议层次:需要从l2层(MAC寻址)到l3层(IP寻址)到l4+层(4层协议+端口)。网络拓扑:从容器到宿主机到远端。 容器网络解决方案:接入(veth+bridg 阅读全文
posted @ 2020-04-28 15:57 ppjj 阅读(1907) 评论(0) 推荐(0)
摘要: deployment认为管理的所有同版本的pod都是一模一样的副本,也就是在deployment controller看来,所有同版本的pod,不管里面部署的应用还是行为,都是完全相同,满足了无状态应用,但是不满足有状态应用。 这时需要statefulset,支持pod之间并非相同的副本,每一个po 阅读全文
posted @ 2020-04-28 15:56 ppjj 阅读(53) 评论(0) 推荐(0)
摘要: crd是k8s在1.7版本引入,用户根据自己的需求自定义k8s资源,自己添加的对象资源是native,一等公民,跟k8s中的资源拥有相同的对象资源,都存在etcd中,APIversion就是crd的一个声明,kind就是customresourcedefinition,name资源的名字,spec用 阅读全文
posted @ 2020-04-28 15:53 ppjj 阅读(55) 评论(0) 推荐(0)
摘要: k8s挂载volume过程: 第一步,用户创建包含PVC的pod, 第二步,PVC controller会不断观察APIserver,如果发现创建完成的PVC处于未绑定状态,它就会试图绑定pv跟PVC, 第三步,通过scheduler完成调度, 第四步,pod调度到节点之后,但是pv还没有被挂载at 阅读全文
posted @ 2020-04-28 15:52 ppjj 阅读(764) 评论(0) 推荐(0)