Kubernetes部署持久卷和VM磁盘大小

时间:2019-07-16 01:02:05

标签: amazon-web-services kubernetes eks

为在集群中运行的一个部署创建NFS持久卷后,这些容器能够相互存储和共享文件数据。文件数据在容器生命周期之间也是持久的。太好了!但是我不知道此文件数据究竟存储在哪里:“物理上”位于何处?它是保存在容器本身上还是保存在VM的磁盘(用于运行Deployment的VM)上?

默认情况下,用于承载Deployment的VM仅具有20 Gb可用磁盘空间。假设我正在运行某个文件服务器的节点(又名VM)上的Pod中运行一个Docker容器。如果我尝试将100 Gb文件传输到该文件服务器会怎样?如果VM磁盘本身只有20 Gb可用空间,那么该巨大文件将保存在哪里?

稍后通过附加yaml文件部分进行编辑:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pv-claim
  labels:
    app: deployment
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 20Gi
# ---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: deployment
spec:
  selector:
    matchLabels:
      app: app
  replicas: 1
  minReadySeconds: 10
  strategy:
    type: RollingUpdate # Recreate
    rollingUpdate:
      maxUnavailable: 1
      maxSurge: 1
  template:
    metadata:
      labels:
        app: app
    spec:
      containers:
      - name: container
        image: 12345.dkr.ecr.us-west-2.amazonaws.com/container:v001      
        ports:
        - containerPort: 80
        imagePullPolicy: IfNotPresent
        volumeMounts:
        - name: volume-mount
          mountPath: /data      
      volumes:
      - name: volume-mount
        persistentVolumeClaim:
          claimName: pv-claim

2 个答案:

答案 0 :(得分:1)

卷的“物理”位置由配置者定义,由存储类定义。您的PV声明未分配存储类别。这意味着将使用默认存储类,并且可以是任何类型。我怀疑在EKS中默认的存储类将是EBS,但是您应该仔细检查。

首先,查看实际上已将哪些存储类分配给持久卷:

import pandas as pd


import re    


raw_data = {'ID': [1,2,3,4,5,6,7,8,9,10], 
    'body': ['FITrnXS$100', '$1000rnReason', 'rnIf', 'bevlauedrnrnnext', 
    'obccrnrnnoncrnrnactionrn', 'rnrnnotification', 'insdrnrnnon', 
    'rnrnupdated', 
    'rnreason', 'rnrnrnLOR']}


df = pd.DataFrame(raw_data, columns = ['ID', 'body'])
remove_string = ['rn']
cleaned_text=[i.replace("rn", " ") for i in df.body]
removed_string_len=[len(re.findall('\s',i)) for i in cleaned_text]
removed_final=[i*'rn' for i in removed_string]
cleaned_final=[i.strip() for i in cleaned_text]
df['cleaned_txt']=cleaned_final
df['Removed']=removed_final
df

然后查看为该存储类分配了哪些预配器:

kubectl get pv -o wide

您很有可能会看到类似kubectl get storageclass 的内容。然后,谷歌为特定的供应商提供文档,以了解“物理地”存储卷的位置。

答案 1 :(得分:0)

在您的情况下,数据存储在NFS共享上。连接到NFS服务器并浏览共享,找到挂载到Pod的共享。