随笔分类 - 云原生devops
云原生devops主要介绍使用jenkins,tekton等工具打造基于docker和kubernetes的devops平台
摘要:"系列目录" Pod可以拥有优先级.优先意味着相对于其它pod某个pod更为重要.如果重要的pod不能被调度,则kubernetes调度器会优先于(驱离)低优先级的pod来让处于pending状态的高优先级pod被调度. kubernetes 1.9以后,优先级会影响pod的调度顺序和资源耗尽时po
阅读全文
摘要:"系列目录" 前面说过,资源配额限制在指定名称空间下,对资源对象数量和特定类型的资源的限制,你可以在 中指定配额 创建名称空间 我们创建一个新的名称空间来演示 创建资源配额 以下是资源配额对象的配置 通过 创建配额对象 查看资源配额详细信息 输出信息显示,在 名称空间下,只允许最多有一个 ,最多有两
阅读全文
摘要:"系列目录" 当多个用户或者开发团队共享一个有固定节点的的kubernetes集群时,一个团队或者一个用户使用的资源超过他应当使用的资源是需要关注的问题,资源配额是管理员用来解决这个问题的一个工具. 资源配额,通过 定义,提供了对某一名称空间使用资源的总体约束.它即可以限制这个名称空间下有多少个对象
阅读全文
摘要:"系列目录" 当你编排一个pod的时候,你也可以可选地指定每个容器需要多少CPU和多少内存(RAM).当容器请求特定的资源时,调度器可以更好地根据资源请求来确定把pod调度到哪个节点上.当容器请求限制特定资源时,特定节点会以指定方式对容器的资源进行限制. 对于资源请求和资源限制的区别,可以查看 "Q
阅读全文
摘要:"系列目录" Service Account Service Account概念的引入是基于这样的使用场景:运行在pod里的进程需要调用Kubernetes API以及非Kubernetes API的其它服务。Service Account它并不是给kubernetes集群的用户使用的,而是给pod
阅读全文
摘要:"系列目录" 概述 RC、Deployment、DaemonSet都是面向无状态的服务,它们所管理的Pod的IP、名字,启停顺序等都是随机的,而StatefulSet是什么?顾名思义,有状态的集合,管理所有有状态的服务,比如MySQL、MongoDB集群等。 StatefulSet本质上是Deplo
阅读全文
摘要:"系列目录" 节点亲和性(affinity),是节点的一种属性,让符合条件的pod亲附于它(倾向于或者硬性要求).污点是一种相反的行为,它会使pod抗拒此节点(即pod调度的时候不被调度到此节点) 污点和容易结合在一起以确保pod不会被调度到不适合的节点上.当一个或者多个污点添加到某个节点上,则意味
阅读全文
摘要:"系列目录" 部署pod时,大多数情况下kubernetes的调度程序能将pod调度到集群中合适的节点上。但有些情况下用户需要对pod调度到哪个节点上施加更多控制,比如将特定pod部署到拥有SSD存储节点、将同一个服务的多个后端部署在不同的机器上提高安全性、将通信频繁的服务部署在同一个可用区域降低通
阅读全文
摘要:"系列目录" kubernetes支持多种资源调度模式,前面讲过简单的基于 和`nodeSelector 用户绑定策略 PriorityClass 抢占式调度策略` 现在版本支持Pod优先级抢占,通过PriorityClass来实现同一个Node节点内部的Pod对象抢占。根据 Pod 中运行的作业类
阅读全文
摘要:"系列目录" 在编排kubernetes时,Deployment的Pod项有containerPort,Service文件里的port,targetPort, nodePort,这些pod概念有些时候可能会让人感到非常困惑,这里通过示例来简单介绍各种port的含义
阅读全文
摘要:"系列目录" Kubernetes的调度有简单,有复杂,指定NodeName和使用NodeSelector调度是最简单的,可以将Pod调度到期望的节点上。 本文主要介绍kubernetes调度框架中的NodeName和NodeSelector。 NodeName 用于强制约束将Pod调度到指定的No
阅读全文
摘要:"系列目录" kubernetes 滚动升级 Kubernetes 中采用ReplicaSet(简称RS)来管理Pod。如果当前集群中的Pod实例数少于目标值,RS 会拉起新的Pod,反之,则根据策略删除多余的Pod。Deployment正是利用了这样的特性,通过控制两个RS里面的Pod,从而实现升
阅读全文
摘要:"系列目录" 在为对象定义好Label后,其他对象就可以通过Label来对对象进行引用。Label的最常见的用法便是通过spec.selector来引用对象。 关于Label的用法重点在于这两步: + 通过 字段 。在上面的例子中,新建了一个名称为nginx的Pod,它拥有一个键值对为app:ngi
阅读全文
摘要:"系列目录" 容器经常是为了解决单一的,窄范围的问题,比如说微服务.然而现实中,一些复杂问题的完成往往需要多个容器.这里我们讨论一下如何把多个容器放在同一个pod里以及容器间的通信 什么是pod pod是kubernetes里的一个基本概念,可能我们从一开始接触kubernetes的时候就开始接触p
阅读全文
摘要:"系列目录" 理解初始容器 一个pod里可以运行多个容器,它也可以运行一个或者多个初始容器,初始容器先于应用容器运行,除了以下两点外,初始容器和普通容器没有什么两样: + 它们总是 + 一个初始容器必须成功运行另一个才能运行 如果pod中的一个初始容器运行失败,则kubernetes会尝试重启pod
阅读全文
摘要:"系列目录" DaemonSet确保集群中每个(部分)node运行一份pod副本,当node加入集群时创建pod,当node离开集群时回收pod。如果删除DaemonSet,其创建的所有pod也被删除,DaemonSet中的pod覆盖整个集群。 当需要在集群内每个node运行同一个pod,使用Dae
阅读全文
摘要:"系列目录" 概述 向外网暴露集群内服务,以使客户端能够访问,有以下几种方法,本文重点描述Ingress。 LoadBalancer LoadBalancer一般由云服务供应商提供或者用户自定义,运行在集群之外。在创建service时为其配置LoadBalancer相关参数,当从外网访问集群内ser
阅读全文
摘要:"系列目录" 概述 Volume是对各种存储资源的抽象、虚拟化。为管理、控制、使用存储资源提供统一接口。Openstack中的volume为虚拟机提供存储,Docker中的volume为容器提供存储。因为在kubernetes中可部署运行最小单位是pod ,所以kubernetes的volume为p
阅读全文
摘要:"系列目录" 概述 Kubernetes要求集群中所有pod,无论是节点内还是跨节点,都可以直接通信,或者说所有pod工作在同一跨节点网络,此网络一般是二层虚拟网络,称为pod网络。在安装引导kubernetes时,由选择并安装的network plugin实现。默认情况下,集群中所有pod之间、p
阅读全文
摘要:"系列目录" Secrets是Kubernetes中一种对象类型,用来保存密码、私钥、口令等敏感信息。与直接将敏感信息嵌入image、pod相比,Secrets更安全、更灵活,用户对敏感信息的控制力更强。同Docker对敏感信息的管理类似,首先用户创建Secrets将敏感信息加密后保存在集群中,创建
阅读全文