存储管理6:Projected Volume 在 Kubernetes 中,有几种特殊的 Volume,它们存在的意义不是为了存放容器里的数据,也不是用来进行容器和宿主机之间的数据交换。而是为容器提供预先定义好的数据。从容器的角度来看,这些 Volume 中的信息仿佛是被 Kubernetes“投射”(Project)到容器当中的。这正是 Projected Volume 的含义。到目前为止,Kubernetes 支持的 Projected 2020-10-05 容器 #Kubernetes
存储管理5:实践Local PV 在开始使用 Local Persistent Volume 之前,我们首先需要在集群里配置好磁盘或者块设备。在公有云上,这个操作等同于给虚拟机额外挂载一个磁盘,比如 GCE 的 Local SSD 类型的磁盘就是一个典型例子。而在我们部署的私有环境中,有两种办法来完成这个步骤。 第一种,当然就是给宿主机挂载并格式化一个可用的本地磁盘,这也是最常规的操作; 第二种,对于实验环境,你其实可以在 2020-10-05 容器 #Kubernetes
存储管理4:理解Local PV 在前面的文章中,我们都是基于一个外部的存储服务来提供PV。此时,我们可能有这样的疑问:能否直接使用宿主机上的目录或磁盘作为PV呢?答案是肯定的。这就是我们今天就要讨论的主题:Local Persistent Volume。 1.1、什么是Local PV Kubernetes 支持直接使用宿主机上目录或磁盘,而不依赖于远程存储服务来提供“持久化”的 Volume。这样做的好处显而易见:由于这个 V 2020-10-05 容器 #Kubernetes
存储管理3:理解StorageClass 在前面的文章中,我们通过手动方式创建出了所需要的PV。接下来,我们来看一种自动创建PV的方式。 1.1、Static Provisioning & Dynamic Provisioning 在一个大规模的Kubernetes集群中,集群用户可能会创建出成千上万个PVC,这时,集群管理员就需要不停地创建出满足一定条件的PV,否则新Pod就会因为PVC无法绑定PV而运行失败。显然,在实际操作中 2020-10-05 容器 #Kubernetes
存储管理2:Kubernetes是如何准备持久化目录的 我们要知道的是,所谓的容器Volume,其实就是将宿主机上的一个目录,跟容器中的一个目录绑定挂载在一起。而所谓的“持久化Volume”,指的就是宿主机上的目录具备“持久性”。即,这个目录里的内容,即不会因为容器的删除而被清理掉,也不会跟当前的宿主机绑定。这样,当容器被重启或者在其它节点上重建,它仍然能通过挂载这个Volume,访问到这些内容。 那么,在Kubernetes中又是如何准备持久化目录的 2020-10-05 容器 #Kubernetes
存储管理1:理解PV、PVC对象 一个优秀的云计算项目自然少不了存储资源的管理。在kubernetes中,为了简化用户使用持久化存储的门槛,引入了一组叫作 Persistent Volume(PV)和Persistent Volume Claim(PVC)的 API 对象。 1.1、PV对象 PV对象用于描述集群中的存储资源。它主要定义了存储服务的访问信息(或实现细节),比如一个NFS服务的共享信息。通常情况下,PV对象是由集群 2020-10-05 容器 #Kubernetes
容器编排8:Operator 在 Kubernetes 中,管理“有状态应用”是一个比较复杂的过程,尤其是编写 Pod 模板的时候,总有一种“在 YAML 文件里编程序”的感觉,让人很不舒服。而在 Kubernetes 生态中,还有一个相对更加灵活和编程友好的管理“有状态应用”的解决方案,它就是:Operator。接下来,我们就以 Etcd Operator 为例,讨论一下 Operator 的工作原理和编写方法。 一、Ope 2020-10-04 容器 #Kubernetes
容器编排7:Job与CronJob 在前面的文章中,我们已经讨论Deployment、StatefulSet以及DaemonSet这三个编排对象。接下来,我们讨论另一种重要的对象:Job 一、在线业务 vs 离线业务 Deployment、StatefulSet,以及 DaemonSet 这三个编排对象,它们主要编排的都是“在线业务”,即:Long Running Task(长作业)。比如,我在前面举例时常用的 Nginx、Tomc 2020-10-04 容器 #Kubernetes
容器编排6:DaemonSet 在前面的文章中,我们讨论了StatefulSet的工作原理。接下来,我们再看看容器化守护进程的意义,即:DaemonSet。 一、从滚动更新StatefulSet说起 StatefulSet 其实就是对现有典型运维业务的容器化抽象。也就是说,我们一定有方法在不使用 Kubernetes、甚至不使用容器的情况下,自己 DIY 一个类似的方案出来。但是,一旦涉及到升级、版本管理等更工程化的能力,Kub 2020-10-04 容器 #Kubernetes
容器编排5:深入理解StatefulSet之部署一个有状态应用 在前面的文章中,我们主要讨论了StatefulSet是如何处理拓扑状态和存储状态的,以及StatefulSet的工作原理。接下来,我们通过一个实际例子,熟悉一下部署一个StatefulSet的完整流程。 一、部署MySQL主从集群的三座大山 相比于 Etcd、Cassandra 等“原生”就考虑了分布式需求的项目,MySQL 以及很多其他的数据库项目,在分布式集群的搭建上并不友好,甚至有点“原始” 2020-10-03 容器 #Kubernetes