随笔分类 - Kubernetes专题精讲
摘要:Headless 类型的 Service 资源 Service 对象隐藏了各 Pod 资源,并负责将客户端的请求流量调度到该组 Pod 对象之上。 不过偶尔也存在这样一类需求:客户端需要直接访问 Service 资源后端的所有 Pod 资源,这时就应该向客户端暴露每个 Pod 资源的 IP 地址,而
阅读全文
摘要:服务暴露 Service 的 IP 地址仅在集群内可达,然而,总会有些服务需要暴露到外部网络中接受各类客户端的访问,例如分层架构应用中的前端 Web 应用程序等。此时,就需要在集群的边缘为其添加一层转发机制,以实现将外部请求流量接入到集群的 Service 资源之上,这种操作也称为发布服务到外部网络
阅读全文
摘要:服务发现方式 微服务意味着存在更多的独立服务,但它们并非独立的个体,而是存在着复杂的依赖关系且彼此之间通常需要进行非常频繁地交互和通信的群体。然而,建立通信之前,服务和服务之间该如何获知彼此的地址呢? 在 Kubernetes 系统上,Service 为 Pod 中的服务类应用提供了一个稳定的入口,
阅读全文
摘要:Service资源 一、Service 资源概述 Service 是 Kubernetes 的核心资源类型之一,通常可看作微服务的一种实现。事实上它是一种抽象:通过规则定义出由多个 Pod 对象组合而成的逻辑集合,以及访问这组 Pod 的策略。 Service 关联 Pod 资源的规则要借助于标签选
阅读全文
摘要:CronJob控制器 CronJob 控制器用于管理 Job 控制器资源的运行时间。Job 控制器定义的作业任务在其控制器资源创建之后立即执行,但 CronJob 可以以类似于 Linux 操作系统的周期性任务作业计划(contab)的方式控制其运行的时间点及重复运行的方式,具体如下: 在未来某时间
阅读全文
摘要:Job控制器 与 Deployment 及 DaemonSet 控制器管理的守护进程类的服务应用不同的是,Job 控制器用于调配 Pod 对象运行一次性任务,容器中的进程在正常运行结束后不会对其进行重启,而是将 Pod 对象置于 "Completed"(完成)状态。 若容器中的进程因错误而终止,则需
阅读全文
摘要:DaemonSet 控制器 DaemonSet 是 Pod 控制器的又一种实现,用于在集群中的全部节点上同时运行一份指定的 Pod 资源副本,后续新加入集群的工作节点也会自动创建一个相关的 Pod 对象,当从集群移除节点时,此类 Pod 对象也将被自动回收而无须重建。管理员也可以使用节点选择器及节点
阅读全文
摘要:Deployment控制器 Deployment(简写 deploy)是 Kubernetes 控制器的又一种实现,它构建于 ReplicaSet 控制器之上,可为 Pod 和 ReplicaSet 资源提供声明式更新。 Deployment 控制器资源的主要职责同样是为了保证 Pod 资源的健康运
阅读全文
摘要:ReplicaSet 控制器 Kubernetes 较早期的版本中仅有 ReplicationController 一种类型的 Pod 控制器,后来的版本中陆续引入了更多的控制器实现,这其中就包括用来取代 ReplicationController 的新一代实现 ResplicaSet。 事实上,除
阅读全文
摘要:资源需求及资源限制 一、资源需求 目前来说,资源隔离尚且属于容器级别,CPU 和 内存 资源的配置需要在 Pod 中的容器上进行,每种资源均可由 "requests" 属性定义其请求的确保可用值,即容器运行可能用不到这些额度的资源,但用到时必须要确保有如此多的资源可用,而 "limits" 属性则用
阅读全文
摘要:Pod就绪性探测 Pod 对象启动后,容器应用通常需要一段时间才能完成其初始化过程,例如加载配置或数据,甚至有些程序需要运行某类的预热过程,若在此阶段完成之前即接入客户端的请求,势必会因为等待太久而影响用户体验。因此,应该避免于 Pod 对象启动后立即让其处理客户端请求,而是等待初始化工作完成并转为
阅读全文
摘要:Pod 存活性探测 有不少程序长时间持续运行后逐渐转为不可用状态,并且仅能通过重启恢复,Kubernetes 的容器存活性探测机制可发现诸如此类的问题,并依据探测结果结合重启策略触发后续的行为。 存活性探测是隶属于容器级别的配置,kubelet 可基于它判定何时需要重启一个容器。 1、设置 exec
阅读全文
摘要:Pod对象的声明周期(Pod的相位、创建过程、重要行为、探测、重启策略、终止过程) Pod 对象自从其创建开始至其终止退出的时间范围称为其生命周期。在这段时间中,Pod 会处于多种不同的状态,并执行一些操作;其中,创建主容器(main container)为必须的操作,其他可选的操作还包括进行初始化
阅读全文
摘要:Pod资源使用资源注解(annotation) 一、注解概述 注解(annotation)是 "键值" 类型的数据,不过它不能用于标签及挑选 Kubernetes 对象,仅可用于为资源提供“元数据”信息。另外,注解中的元数据不受字符数量的限制,它可大可小,可以为结构化或非结构化形式,也支持使用在标签
阅读全文
摘要:Pod镜像及其获取策略 各工作节点负责运行 Pod 对象,而 Pod 的核心功能在于运行容器,因此工作节点上必须配置容器运行引擎,如 Docker 等。启动容器时,容器引擎将首先于本地查找指定的镜像文件,不存在的镜像则需要从指定的镜像仓库(Registry)下载到本地,如下图所示: Kubernet
阅读全文
摘要:分布式系统设计中几种容器运行模型 一、Sidecar pattern(边车模型或跨斗模型) 为 Pod 主应用容器提供协同的辅助应用容器,每个应用独立运行,最为典型的代表是将主应用容器中的日志使用 agent 收集至日志服务器中时,可以将 agent 运行为辅助应用容器,即 sidecar。另一个典
阅读全文
摘要:spec和status字段 Kubernetes 用 spec 来描述所期望的对象应该具有的状态,而用 status 字段来记录对象在系统上的当前状态,因此 status 字段仅对活动对象才有意义。 这两个字段都属于嵌套类型的字段。在定义资源配置清单时, spce 是必须定义的字段,用于描述对象的目
阅读全文
摘要:使用部署工具安装 Kubernetes https://kubernetes.io/zh/docs/setup/production-environment/tools/,此页面是 Kubernetes 的官方概述。 使用 kubeadm 引导集群 使用 Kops 安装 Kubernetes 使用
阅读全文
摘要:k8s网络模型基础 云计算的核心是虚拟化技术,网络虚拟化又是其最重要的组成部分,用于在物理网络上虚拟多个相互隔离的虚拟网络,实现网络资源切片,提高网络资源利用率,实现弹性化网络。Kubernetes 作为容器云技术栈中的容器编排组件,必然需要在多租户(名称空间)的基础上实现弹性网络管理,这也是“基础
阅读全文
摘要:k8s集群组件 一个典型的 Kubernetes 集群由多个工作节点(worker node)和一个集群控制平面(control plane,即 Master),以及一个集群状态存储系统(etcd)组成。其中 Master 节点负责整个集群的管理工作,为集群提供管理接口,并监控和编排集群中的各个工作
阅读全文