为在集群中运行的一个部署创建NFS持久卷后,这些容器能够相互存储和共享文件数据。文件数据在容器生命周期之间也是持久的。太好了!但是我不知道此文件数据究竟存储在哪里:“物理上”位于何处?它是保存在容器本身上还是保存在VM的磁盘(用于运行Deployment的VM)上?
默认情况下,用于承载Deployment的VM仅具有20 Gb可用磁盘空间。假设我正在运行某个文件服务器的节点(又名VM)上的Pod中运行一个Docker容器。如果我尝试将100 Gb文件传输到该文件服务器会怎样?如果VM磁盘本身只有20 Gb可用空间,那么该巨大文件将保存在哪里?
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
答案 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的共享。