前文我们了解了k8s上的pod控制器中的常用的两种控制器ReplicaSet和Deployment控制器的相关话题,回顾请参考:https://www.cnblogs.com/qiuhom-1874/p/14149042.html:今天我们来了解下DaemonSet.Job和CronJob控制器相关话题: 1.DaemonSet控制 从名字上就可以看出这个控制器是管理守护进程类的pod:DaemonSet控制器的主要作用是管理守护进程类的Pod,通常用于在每个节点需要运行一个这样的Pod场景:比…
一.kubernetes简介 1.什么是kubernetes?它是干什么用的? kubernetes是google公司用go语言开发的一套容器编排系统,简称k8s:它主要用于容器编排:所谓容器编排简单的我们可以理解为管理容器:这个有点类似openstack,不同的是openstack是用来管理虚拟机,而k8s中是管理的pod(所谓pod就是容器的一个外壳,里面可以跑一个或多个容器,可以理解为pod就是将一个或多个容器逻辑的组织在一起):k8s除了可以全生命周期的管理pod,它还可以实现pod的自…
通过重新构建Kubernetes来实现更具弹性的容器编排系统 译自:rearchitecting-kubernetes-for-the-edge 摘要 近年来,kubernetes已经发展为容器编排的首要选择.kubernetes主要面向云环境,但新的边缘场景要求性能.可用性和可扩展编排.kubernetes在etcd(一个强一致的键值存储)中保存了所有集群信息.我们发现规模较大的etcd集群可以提供更高的可用性,但请求延迟也会显著增加,吞吐量显著下降.再加上大约30%的Kubernetes请求…
本文由云+社区发表 作者:turboxu Kubernetes作为容器编排生态圈中重要一员,是Google大规模容器管理系统borg的开源版本实现,吸收借鉴了google过去十年间在生产环境上所学到的经验与教训. Kubernetes提供应用部署.维护. 扩展机制等功能,利用Kubernetes能方便地管理跨机器运行容器化的应用.当前Kubernetes支持GCE.vShpere.CoreOS.OpenShift.Azure等平台,除此之外,也可以直接运行在物理机上.kubernetes是一个开…
前文我们了解了k8s上的Pod资源的生命周期.健康状态和就绪状态探测以及资源限制相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/14143610.html:今天我们来了解下Pod控制器相关话题: 在k8s上控制器就是k8s的"大脑",在聊k8s开篇时,我们说过控制器主要负责创建,管理k8s上的资源,如果对应资源不吻合用户定义的资源状态,它就会尝试重启或重建的方式让其状态和用户定义的状态吻合:在k8s上控制器的类型有很多,比如pod控制,s…
前文我们了解了k8s上的DemonSet.Job和CronJob控制器的相关话题,回顾请参考:https://www.cnblogs.com/qiuhom-1874/p/14157306.html:今天我们来了解下k8s上的service资源的相关话题: Service资源在k8s上主要用来解决pod访问问题:我们知道在k8s上pod由于各种原因重建,对于重建后的podip地址和名称都是变化的,这样一来使得我们访问pod就变得有些不便:为了解决pod访问能有一个固定的端点,在k8s上就是用ser…
前文我们聊到了k8s上webui的安装和相关用户授权,回顾请参考:https://www.cnblogs.com/qiuhom-1874/p/14222930.html:今天我们来聊一聊k8s上的网络相关话题: 在说k8s网络之前,我们先来回顾下docker中的网络是怎么实现的,在docker中,容器有4种类型,第一种是closed container类型,这种容器类型,容器内部只有一个lo接口,它无法实现和外部网络通信:第二种是bridged container,这种类型容器就是默认的容器类型…
前文我们聊到了k8s的apiservice资源结合自定义apiserver扩展原生apiserver功能的相关话题,回顾请参考:https://www.cnblogs.com/qiuhom-1874/p/14279850.html:今天我们来聊一聊监控k8s集群相关话题: 前文我们使用自定义apiserver metrics server扩展了原生apiserver的功能,让其原生apiserver能够通过kubectl top node/pod 命令来获取对应节点或名称空间下pod的cpu和内…
前文我们了解了k8s的架构和基本的工作过程以及测试环境的k8s集群部署,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/14126750.html:今天我们主要来了解下k8s命令行工具kubectl的基础操作: kubectl简介 kubectl是k8s官方提供的工具,它是一款命令行工具,我们可以使用它来部署k8s集群,管理k8s集群上的资源:kubectl这个工具有很多子命令,每个子命令都有不同的功能,比如创建资源我们可以使用create或apply子命令…
前文我们了解了k8s上的service资源的相关话题,回顾请参考:https://www.cnblogs.com/qiuhom-1874/p/14161950.html:今天我们来了解下k8s上的Ingress资源的相关话题: 我们知道在k8s上service是用来解决Pod访问问题,它是通过kube-proxy在每个节点上创建iptables规则或ipvs规则,在用户请求某个pod时,用户的请求会被其service规则所捕获,从而实现访问对应pod:对于service来讲,用户请求直接在传输层…
前文我们聊到了k8s上的ingress资源相关话题,回顾请参考:https://www.cnblogs.com/qiuhom-1874/p/14167581.html:今天们来聊一下k8s上volume相关话题: 在说k8s上的volume的使用前,我们先来回顾下docker里的volume:对于docker容器来说,镜像是分成构建的且每一层都是只读的,只读就意味着不能修改数据:只有当一个镜像运行为容器以后,在镜像的最顶端才会加上一个可写层,一旦这个容器被删除,对应可写层上的数据也随之被删除:为…
前文我们了解了k8s上的pv/pvc/sc资源的使用和相关说明,回顾请参考:https://www.cnblogs.com/qiuhom-1874/p/14188621.html:今天我们主要来聊一下k8s上配置应用相关话题: 在说configmap和secret资源之前,我们先来回顾下在docker环境下怎么给容器提供配置信息:在docker容器里我们要给容器里的应用提供配置的方式有两种,一种是通过环境变量的方式,把对应容器里跑的程序的某些属性通过一个环境变量传递给容器运行时的环境中去,这样容…
前文我们聊到了k8s的statefulset控制器相关使用说明,回顾请参考:https://www.cnblogs.com/qiuhom-1874/p/14201103.html:今天我们来聊一下k8s安全相关话题: 我们知道在k8s上APIserver是整个集群的访问入口,etcd是保存整个集群所有资源状态配置信息的kv键值存储数据库,一旦etcd宕机,k8s整个集群将无法正常工作,为此我们需要对etcd做高可用:除此之外为了保证etcd中的数据安全,k8s只允许APIserver去访问/操作…
前文我们聊到了k8s的访问控制第二关RBAC授权插件的相关话题,回顾请参考:https://www.cnblogs.com/qiuhom-1874/p/14216634.html:今天我们来聊一下k8s上的访问控制第三关准入控制相关话题: 在说准入控制之前,我们先来回顾下之前的用户认证和授权,在k8s上用户认证和授权机制都是通过一个个插件进行功能的扩展,我们要要想使用某种用户认证和授权机制,相应的我们应该去启用对应的插件:对于用户认证和授权这两个机制来说,它们的工作逻辑都是一样的,都是一票通过的…
Docker: Docker Engine, 一个client-server 结构的应用, 包含Docker daemon,一个 用来和daemon 交互的REST API, 一个命令行应用CLI. Docker Engine 在命令行中接收并解析.执行docker  命令; etcd:    是 CoreOS 团队发起的一个管理配置信息和服务发现(service discovery)的项目; 可以参考: http://www.dockerinfo.net/etcd%E9%A1%B9%E7%9B…
前文我们了解了k8s上的集群管理工具kubectl的基础操作以及相关资源的管理,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/14130540.html:今天我们来聊一下pod资源配置清单的相关话题: 我们知道在k8s上管理资源的方式有两种,一种是陈述式接口,一种是声明式接口:在前文我们用kubectl create的方式创建pod控制器,创建service,创建名称空间都是使用的陈述式命令的方式在k8s上管理资源:陈述式命令接口管理k8s上的资源的确很方…
前文我们了解了在k8s上的资源标签.标签选择器以及资源注解相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/14141080.html:今天我们来聊下k8s上的核心资源pod生命周期.健康/就绪状态探测以及pod资源限制相关话题: 1.Pod生命周期 pod生命周期是指在pod开始创建到pod退出所消耗的时间范围,我们把开始到结束的这段时间范围就叫做pod的生命周期:其大概过程如下图所示 提示:上图主要描述了一个pod从创建到退出,中间这段时间经历的…
前文我们聊到了k8s中给Pod添加存储卷相关话题,回顾请参考:https://www.cnblogs.com/qiuhom-1874/p/14180752.html:今天我们来聊一下持久存储卷相关话题: volume的基础使用,需要我们用户手动来向不同类型存储接口传递不同的参数,从而实现把外部存储映射到k8s上的一个volume对象,使得pod才能正常的挂载对应的存储卷,对应pod里的容器才能正常使用:这种使用方式的前提是用户必须了解对应的存储系统,了解对应类型的存储接口,以及相关参数:这使得用…
前文我们聊到了k8s的configmap和secret资源的说明和相关使用示例,回顾请参考:https://www.cnblogs.com/qiuhom-1874/p/14194944.html:今天我们来了解下k8s上的statefulSet控制器的相关话题: 1.statefulset控制器的作用 简单讲statefulset控制器主要用来在k8s上管理有状态应用pod:我们经常运维的一些应用主要可以分为4类,分别从是否有状态和是否有存储两个维度去描述,我们可以将应用分为有状态无存储,有状态…
前文我们了解了k8s上的访问控制机制,主要对访问控制中的第一关用户认证做了相关说明以及常规用户的配置文件的制作,回顾请参考:https://www.cnblogs.com/qiuhom-1874/p/14207381.html:今天我们来了解下k8s上的访问控制第二关RBAC授权相关话题: 在k8s上授权的机制有很多,最常用的有ABAC和RBAC:ABAC(attribute based access control)这种是基于属性做访问控制:RBAC(role based access con…
前文我们了解了k8s的网络插件flannel的基础工作逻辑,回顾请参考:https://www.cnblogs.com/qiuhom-1874/p/14225657.html:今天我们来聊一下k8s上的NetworkPolicy相关话题: NetworkPolicy资源是做什么用的? 我们知道在k8s上我们可以用名称空间来隔离多个资源,在不同名称空间下我们可以创建相同名称和相同类型的资源:有些资源还必须依赖名称空间才可以被创建:但是在k8s上,名称空间不可以隔离网络,所谓隔离网络是指不管pod创…
前文我们了解了k8s上的NetworkPolicy资源的使用和工作逻辑,回顾请参考:https://www.cnblogs.com/qiuhom-1874/p/14227660.html:今天我们来聊一聊Pod调度策略相关话题: 在k8s上有一个非常重要的组件kube-scheduler,它主要作用是监听apiserver上的pod资源中的nodename字段是否为空,如果该字段为空就表示对应pod还没有被调度,此时kube-scheduler就会从k8s众多节点中,根据pod资源的定义相关属性…
前文我们了解了k8s上的kube-scheduler的工作方式,以及pod调度策略的定义:回顾请参考:https://www.cnblogs.com/qiuhom-1874/p/14243312.html:今天我们来聊一下k8s上的节点污点和pod容忍度相关话题: 节点污点是什么呢? 节点污点有点类似节点上的标签或注解信息,它们都是用来描述对应节点的元数据信息:污点定义的格式和标签.注解的定义方式很类似,都是用一个kv数据来表示,不同于节点标签,污点的键值数据中包含对应污点的effect,污点的…
前文我们聊到了k8s上crd资源的使用和相关说明,回顾请参考:https://www.cnblogs.com/qiuhom-1874/p/14267400.html:今天我们来了解下k8s的第二种扩展机制自定义apiserver,以及apiservice资源的相关话题: 在开始聊自定义apiserver前,我们先来了解下k8s原生的apiserver:其实apiserver就是一个https服务器,我们可以使用kubectl工具通过https协议请求apiserver创建资源,删除资源,查看资源…
前文我们了解了用Prometheus监控k8s上的节点和pod资源,回顾请参考:https://www.cnblogs.com/qiuhom-1874/p/14287942.html:今天我们来了解下k8s上的HPA资源的使用: HPA的全称是Horizontal Pod Autoscaler,从字面意思理解它就是水平pod自动伸缩器:简单讲HPA的主要作用是根据指定的指标数据,监控对应的pod控制器,一旦对应pod控制器下的pod的对应指标数据达到我们定义的阀值,即HPA就会被触发,它会根据对…
前文我们聊到了使用k8s资源配置清单定义资源的相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/14132890.html:今天我们来聊下资源标签,标签选择器以及资源注解相关话题: 1.标签和标签选择器 对于pod来讲,我们知道使用pod控制器创建的pod在pod故障以后,重建后的pod它的ip地址和名称是变化的,为了解决pod访问问题,我们特此创建了service,我们访问service的ip地址就可以正常访问到pod:那么问题来了,service…
前文我们了解了k8s的访问控制第三关准入控制相关插件的使用,回顾请参考:https://www.cnblogs.com/qiuhom-1874/p/14220402.html:今天我们来了解下k8s的web ui 组件的安装和用户授权相关话题: k8s的webui是一个插件运行在k8s之上,以pod的方式提供服务:它能够给使用k8s用户提供一个web面板,我们可以基于这个web面板来管理k8s集群:比如创建pod,创建svc,部署应用等等:在部署之前,先说一下dashboard认证过程:dash…
前文我们了解了k8s节点污点和pod的对节点污点容忍度相关话题,回顾请参考:https://www.cnblogs.com/qiuhom-1874/p/14255486.html:今天我们来聊一下扩展k8s相关话题: k8s上创建资源对象的过程 我们知道在k8s上,资源是有类型的,不同类型的资源,其定义方式和使用的字段各不相同:用户创建一个资源,实际上就是把k8s抽象的资源做实例化,即把k8s抽象出来的资源,通过资源清单赋值,创建出来的对象就是我们实例化对应类型资源的结果:用户创建一个资源,首先…
前文我们了解了k8s上的hpa资源的使用,回顾请参考:https://www.cnblogs.com/qiuhom-1874/p/14293237.html:今天我们来聊一下k8s包管理器helm的相关话题: helm是什么? 如果我们把k8s的资源清单类比成centos上的rpm包,那么helm的作用就如同yum:简单讲helm就是类似yum这样的包管理器,它能够让我们在k8s上部署应用变得简单,我们需要部署某些应用到k8s上,我们直接使用helm就可以完成一键部署:有了helm工具,我们甚至…
前文我们介绍了helm的相关术语和使用helm安装和卸载应用,回顾请参考:https://www.cnblogs.com/qiuhom-1874/p/14305902.html:今天我们来介绍下自定义chart以及打包chart,helm其他命令使用和私有helm仓库搭建相关话题: 继上一篇博客,我们了解了使用helm在k8s上安装应用,卸载应用,以及仓库的添加删除更新等等操作:对于helm chart来说,它就是一个打包文件,把我们需要用到的配置清单,以模板的形式发布出来,用户使用时,可以根据…