当前位置: 首页 > 知识库问答 >
问题:

Kubernetes:PersistentVolume和PersistentVolumeClaim-共享索赔

齐昊
2023-03-14

这个问题是关于Kubernetes中PersistentVolume和PersistentVolumeClaim配置的行为。我们已经通读了文档,留下了一些挥之不去的问题。

我们使用Azure Kubernetes服务来承载我们的集群,我们希望为我们的许多吊舱提供一个共享的持久存储后端。我们计划使用PersistentVolumes来实现这一点。

在这个场景中,我们希望发出一个由AzureFile存储资源支持的PersistentVolume。我们将把Jenkins部署到集群中,并将jenkins_home目录存储在PersistentVolume中,这样我们的实例就可以在pod和节点故障中幸存下来。我们将运行多个主Jenkins节点,所有节点都配置有类似的部署YAML。

首先,我们发出以下PersistentVolume配置;

apiVersion: v1
kind: PersistentVolume
metadata:
  name: jenkins-azure-file-share
  labels:
    usage: jenkins-azure-file-share
spec:
  capacity:
    storage: 100Gi
  accessModes:
   - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  azureFile:
    secretName: azure-file-secret
    shareName: jenkins
    readOnly: false
  mountOptions:
    - dir_mode=0777
    - file_mode=0777
    - uid=1000
    - gid=1000

接下来,我们发出以下PersistentVolumeClaim配置;

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: jenkins-file-claim
  annotations:
    volume.beta.kubernetes.io/storage-class: ""
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 10Gi
  volumeName: "jenkins-azure-file-share"

接下来,我们以以下方式在部署中使用这个声明;

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: jenkins-instance-name
spec:
  replicas: 1
  template:
    metadata:
      labels:
        role: jenkins
        app: jenkins-instance-name
    spec:
      containers:
      - name: jenkins-instance-name
        image: ContainerRegistry.azurecr.io/linux/jenkins_master:latest
        ports:
        - name: jenkins-port
          containerPort: 8080
        volumeMounts:
        - name: jenkins-home
          mountPath: /var/jenkins_home
          subPath: "jenkins-instance-name"
      volumes:
      - name: jenkins-home
        persistentVolumeClaim:
          claimName: "jenkins-file-claim"
      imagePullSecrets:
      - name: ImagePullSecret

C:\ashley\scm\kubernetes>kubectl get pv
NAME                        CAPACITY   ACCESS MODES   RECLAIM POLICY  STATUS    CLAIM     STORAGECLASS   REASON    AGE
jenkins-azure-file-share    100Gi     RWX            Retain           Bound     default/jenkins-file-claim                          2d

C:\ashley\scm\kubernetes>kubectl get pvc
NAME                       STATUS    VOLUME                      CAPACITY   ACCESS MODES   STORAGECLASS   AGE
jenkins-homes-file-claim   Bound     jenkins-azure-file-share    100Gi     RWX                           2d
  1. 每个部署是否只能从PersistentVolume的100gig容量中访问配置的最大10gig存储?
  2. 或者,是否每个部署都可以访问为PersistentVolume配置的100gig存储中自己的10gig片?

在这种配置下,当单个PersistentVolumeClaim容量得到充分利用时会发生什么?是否所有使用此单个PersistentVolumeClaim的部署都停止工作?

共有1个答案

郑浩博
2023-03-14

因此,对于pvc来说,这种配置肯定只有10GIG可用。对于光伏,我假设它是相同的,但在这种情况下,我不确定,但应该是,因为一致性。如果达到任何一个限制,它就停止工作,所以如果你有11个詹金斯运行,它甚至会失败,尽管你没有达到一个PVC的限制。

 类似资料:
  • 主要内容:1.缓存行,2.伪共享(False Sharing),3.填充(Padding),4.@Contended方式,5.总结Java8引入了@Contented这个新的注解来减少伪共享(False Sharing)的发生。 @sun.misc.Contended注解是被设计用来解决伪共享问题的 1.缓存行 CPU读取内存数据时并非一次只读一个字节,而是会读一段64字节长度的连续的内存块(chunks of memory),这些块我们称之为缓存行(Cache line)。 假设你有两个线程(

  • 库用于将相似函数打包在一个单元中。然后这些单元就可为其他开发人员所共享,并因此有了模块化编程这种说法— 即,从模块中构建程序。Linux支持两种类型的库,每一种库都有各自的优缺点。静态库包含在编译时静态绑定到一个程序的函数。动态库则不同,它是在加载应用程序时被加载的,而且它与应用程序是在运行时绑定的。 使用共享库的方法有两种:您既可以在运行时动态链接库,也可以动态加载库并在程序控制之下使用它们。本

  • 问题内容: 我需要在iOS下共享/打开一些不同的文件,例如,到iCloud的图像或到iBooks的pdf。文本和图像周围有几个示例,但其他方面则没有。 我创造了自己的; 简化版在这里: 并开始与以下内容共享: 我期望像这样的共享对话: 但是我得到的是: 有什么建议? 问题答案: ** 在Swift 3中使用UIActivityViewController共享PDF ** 我花了很多时间思考如何在从

  • 问题内容: 我正在编写一个HTML5应用程序,该应用程序使用JSONP从几个不同的来源收集数据。我对GET所做的任何事情都可以正常工作。我现在正尝试发布数据,并且遇到了一个有趣的问题。我需要将数据从我的应用程序发布到另一个应用程序,该应用程序从本地计算机运行。我正在尝试编写具有跨平台功能的移动应用程序(请考虑使用Pulse / Flipboard),因此该代码将始终从本地源运行。我的思考过程如下: