利用Kubernetes实现容器的持久化存储
这是因为存储“供应”和存储“消费”之间存在明显的分离。与静态创建的存储类相比,使用存储类创建的持久卷的消耗有一些巨大的优势,最大的优点之一是能够操作仅在资源创建时可用的存储资源值。这意味着我们可以准确地提供用户请求的存储量,而无需集群管理员进行任何手动干预。由于存储类需要由集群管理员提前定义,因此它们仍然会控制哪些类型的存储对最终用户可用,同时抽象出所有供应逻辑。 存储类和持久卷声明的要点: *存储类和持久卷声明允许最终用户使用存储资源的动态供应,从而消除集群管理员所需的任何手动干预。 *存储类抽象了存储供应的细节,而依赖于指定的供应程序来处理供应逻辑。 应用程序状态 当我们考虑状态时,持久存储是至关重要的。我的数据在哪里?当我的应用程序故障时,它是如何做到持久化的?而某些应用程序本身也需要状态管理,不仅仅是持久化数据。这在利用多个不可互换Pod的应用程序中最容易看到(例如,主数据库Pod及其某些分布式应用程序如Zookeeper或Elasticsearch的副本)。诸如此类的应用程序要求能够在任何重新调度期间为每个Pod hat分配惟一标识符。Kubernetes通过使用StatefulSet提供了这种功能。 Kubernetes StatefulSets Kubernetes StatefulSet提供类似于ReplicaSets 和Deployments的功能,但是具有稳定的重新调度。对于需要稳定标识符和有序部署、伸缩和删除的应用程序来说,这种差异非常重要。StatefulSet有几种不同的特性,可以帮助提供这些必要的功能。 惟一网络标识符——StatefulSet中的每个Pod都从StatefulSet的名称和Pod的序号派生其主机名。这个Pod的标识是粘滞的,不管这个Pod被调度到哪个节点,也不管它被重新调度了多少次。这种功能对于会形成不可互换的Pod逻辑“组”的应用程序特别有用,这类应用程序典型例子是分布式系统中的数据库副本和代理。识别单个Pod的能力是StatefulSet的优势的核心。 有序的部署、伸缩和删除——StatefulSet中的Pod标识符不仅是惟一的,而且是有序的。StatefulSet中的Pod是按顺序创建的,在转移到下一个Pod之前,等待中的上一个Pod处于健康状态。这种行为也扩展到了Pod的伸缩和删除,在Pod的所有前身都处于健康状态之前,任何Pod都不能进行更新或扩展。类似地,在Pod终止之前,必须关闭所有后续的Pod。这些功能允许对StatefulSet进行稳定的、可预测的更改。 下面是StatefulSet定义的一个示例: apiVersion: v1 kind: StatefulSet metadata: name: web spec: selector: matchLabels: app: nginx # has to match .spec.template.metadata.labels replicas: 3 template: metadata: labels: app: nginx # has to match .spec.selector.matchLabels spec: terminationGracePeriodSeconds: 10 containers: — name: nginx image: nginx ports: — containerPort: 80 name: web volumeMounts: — name: www mountPath: /usr/share/nginx/html volumeClaimTemplates: — metadata: name: www spec: storageClassName: mysc resources: requests: storage: 1Gi 如上所示,StatefulSet的名称在metada下的name中指定,在创建封闭的Pod时将使用该名称。这个StatefulSets定义将产生名为web-0、web-1和web-2的三个Pod。 这个特定的StatefulSet通过spec下的volumeClaimTemplates字段利用Pvc,以便将持久卷附加到每个Pod。 StatefulSet的关键要点: * StatefulSet将其封闭的pod命名为唯一的,允许存在需要不可互换pod的应用程序 *以有序的方式处理StatefulSet的部署、扩展和删除 虽然StatefulSet提供了部署和管理不可互换Pod的能力,但仍然存在一个问题:我如何找到和使用它们。这就是Headless Service发挥作用的地方。 Kubernetes Headless服务 (编辑:温州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |