随笔分类 - kubernates
kubernates
摘要:k8s网络模型约法三章:任意两个pod之间可以直接通信,无需经过显示使用nat来接受数据和地址的转换;node和pod直接通信,无需明显地址转换;pod看见自己的ip跟别人看见IP是一样的,无需转换。 network namespace是实现网络虚拟化的内核基础,创建了隔离的网络空间,拥有独立的附属
阅读全文
摘要:在k8s中监控和日志属于生态一部分,并不是核心组件,定义了介入的接口标准和规范,供其他厂商组件快速集成。监控类型:资源监控,性能监控apm监控,安全监控,事件监控,监控的接口标准:resource metrice(实现类metrics-server常见有节点级别,pod级别,namespace级别,
阅读全文
摘要:探针监测,实时进行观测,资源使用情况,日志,liveness(存货探针,失败之后会杀掉pod,支持重新拉起pod)和readness(就绪探针,失败之后切断流量,启动之后无法立即对外服务),三种方式:httpget请求,exec执行容器命令,TCPsocket(容器的IP和port),三种命令都有的
阅读全文
摘要:k8s通过csi snapshot controller来实现存储快照功能,可以快速restore,可以快速复制以及迁移等操作。他设计理念跟PVC和pv很像,volumnsnapshot相当于PVC,volumnsnapshotclass相当于storageclass集群管理员,volumnsnap
阅读全文
摘要:使用volumns字段声明卷的名字和类型,本地卷包含emptydir和hostpath,一个随着pod删除也删除,一个是不会删除。 使用的时候用volumnmounts,name字段表示使用哪个卷,subpath:在多个容器共享一个卷的时候,为了隔离数据。 声明静态PV需要关注三个字段,capaci
阅读全文
摘要:pod volumn可以在容器重启之后,之前的数据不丢失,可以共享数据,有本地存储和网络存储(in-tree,out-of-tree),它是独立于pod之外的,volume是存在于pod里面的,pod volune将配置信息以卷的形式挂载在容器中,容器通过posix访问数据,但是它无法准备表达数据v
阅读全文
摘要:secret用来存储经过base64编码的密码token等敏感信息的资源对象,有type属性(opaque,service-account-token,dockerconfigjson,bootstrap.token),data属性,是用来存储secret数据的,以key-value形式。 创建方式
阅读全文
摘要:pod配置管理方式:可变配置configmap,敏感信息secret,身份认证serviceaccount,资源配置resource,安全管控securitycontext,前置校验initcontroller。configmap的好处让可变配置和镜像进行解耦,保证容器可移植性。主要被pod使用,可
阅读全文
摘要:job就是job-controller里面的一种类型,下面spec.template就是pod的spec,唯一多了restartpolicy重启策略和job运行失败时候的重试次数backofflimit查看pod,其实job最后执行单元还是pod,它比普通的pod多了一个ownerreference
阅读全文
摘要:deployment中第一个replicas就是deployment期望的或最终数量,第二个template就是pod的模板查看pod:nginx-deployment-hhhhhh-uwh3e最前面一段是pod所属的deployment.name,中间一段template-hash,这里三个pod
阅读全文
摘要:k8s资源对象:spec期望的状态,status观测到的状态,metadata:labels,annotations,ownerreference(所有者,即集合类资源,比如pod集合:replicaset,statefulset)控制器模式,它是声明式api驱动的,不是命令式,是基于k8s资源对象
阅读全文
摘要:容器是视图隔离,资源控制,独立的文件系统,就是进程的集合。容器镜像是运行容器所需要的文件集合,它有分层和复用的优势。具有一次构建,到处运行的特点。dockfile是描述镜像构建步骤。changeset是构建步骤所产生的文件系统的变化,包含新建,删除,修改文件。容器生命周期:init生命周期=容器生命
阅读全文
摘要:kata containers像一个pod sandbox,里面只有guest kernel跑着一些容器本事的打包和容器应用,可以通过k8s从外部管理pod容器,获取metrics/debug信息而不登陆虚拟机,而且系统是只读的,并不包含完整的操作系统,并不像传统虚拟机。对于容器来说,它只有容器引擎
阅读全文
摘要:k8s APIserver不仅面向最终用户,同时面向工具和扩展开发者,是开放生态系统的基础,是k8s系统的入口,封装了核心对象的增删改查操作,以restful接口方式提供给外部客户和内部组件调用。 kube-proxy是一个简单的网络代理和负载均衡器,它具体实现service模型,每个service
阅读全文
摘要:runtimeclass是k8s对一种内置的全局域资源,是容器运行时,解决了集群里有哪些可用的容器运行时,让pod选择合适的容器运行时,让pod调度到安装有指定的容器运行时的节点上,统计容器运行时产生的业务运行以外的开销,还有scheduling和overhead功能。 它的核心是handler,表
阅读全文
摘要:容器运行时就是启动和停止容器的组件,有docker等,在cri出现之前,docker作为第一个容器运行时,kubelet通过内嵌的dockershim操作docker API来操作容器,达到面向终态的效果,但是难以维护,太复杂,到后来就是对容器运行时的操作抽象出一个接口,将kubelet代码与具体容
阅读全文
摘要:k8s API请求从发起到持久化入库:首先是人机交互,kubelet对APIserver的请求过程,然后是机机交互,pod中业务逻辑与APIserver之间的交互,这里面分为三个步骤,首先是authentication认证,可能返回401错误,然后是authorization鉴权,可能返回403错误
阅读全文
摘要:cni是容器网络的API接口,它是k8s中一个调用网络实现的接口,通过这个API调用不同的网络插件,包括calico,flannel,terway,weaver以及contiv。 k8s通过配置文件决定使用什么样的cni:首先在每个节点上配置cni配置文件(/etc/cni/net.d/xxnet.
阅读全文
摘要:pod的IP是真身份证,唯一的,拒绝任何变造nat,pod内的容器共享。这个身份证,实现方法有通过外部路由器,或者自己overlay。 协议层次:需要从l2层(MAC寻址)到l3层(IP寻址)到l4+层(4层协议+端口)。网络拓扑:从容器到宿主机到远端。 容器网络解决方案:接入(veth+bridg
阅读全文
摘要:deployment认为管理的所有同版本的pod都是一模一样的副本,也就是在deployment controller看来,所有同版本的pod,不管里面部署的应用还是行为,都是完全相同,满足了无状态应用,但是不满足有状态应用。 这时需要statefulset,支持pod之间并非相同的副本,每一个po
阅读全文