我刚刚在PersistentVolumeClaim
容器中看到了volumeMounts
,volumes
和persistentVolumeClaim
以及postgres
和PersistentVolume
的Postgres yaml文件。我找不到任何定义的postgres
。
但是,在提起PersistentVolume
容器吊舱后,我可以看到一个
persistentVolumeClaim
绑定到yaml文件中定义的PersistentVolume
。
如果仅定义PersistentVolumeClaim
,那么k8s会创建import Cocoa
import WebKit
class ViewController: NSViewController, WKNavigationDelegate {
@IBOutlet weak var webView: WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
webView.navigationDelegate = self
let url=URL(string: "https://www.example.com")
webView.load(URLRequest(url: url!))
// Do any additional setup after loading the view.
}
override var representedObject: Any? {
didSet {
// Update the view, if already loaded.
}
}
}
吗?
答案 0 :(得分:4)
是的,所以,当您的集群使用storage-classes进行动态配置时,您只需要提供PVC,配置者就会从PVC和storageClass获取相关信息,然后根据这些信息创建PV。
当管理员创建的所有静态PV均与用户的PersistentVolumeClaim不匹配时,群集可能会尝试动态地为PVC专门配置一个卷。此设置基于StorageClasses:PVC必须请求存储类,并且管理员必须已经创建并配置了该类,才能进行动态设置。 dynamic-provisining
例如,您在此处使用PVC提供以下信息
StorageClassName
请求的存储空间
AccessModes
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: task-pv-claim
spec:
storageClassName: manual
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 3Gi
在StorageClass中,您提供以下信息
Provisioner
其他信息
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: manual
provisioner: kubernetes.io/aws-ebs
parameters:
type: gp2
reclaimPolicy: Retain
volumeBindingMode: Immediate
kubectl get sc,pvc,pv
将提供相关信息
答案 1 :(得分:1)
实际上,它是由
完成的PersistentVolumes的动态配置。
PersistentVolumes 和 PersistentVolumeClaims 使开发人员无需处理下面使用的实际存储技术即可轻松获得持久性存储。但这仍然需要集群管理员预先设置实际存储。您认为必须创建 PersistentVolumes ,但不必一直如此。幸运的是,Kubernetes还可以通过 PersistentVolumes的动态配置自动执行这项工作。
集群管理员可以创建 PersistentVolume设置程序,并定义一个或多个 StorageClass 对象,以使用户选择 PersistentVolume < / strong>。用户可以在其 PersistentVolumeClaims 中引用 StorageClass ,供应商在配置持久性存储时会考虑到这一点。
kubernetes通过包含默认的 StoregeClass 定义使其变得更加简单。您无需在yaml清单中指向 StorageClass ,如下所示:
PVC yaml文件:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: postgresdb-pvc
spec:
resources:
requests:
storage: 1Gi
accessModes:
- ReadWriteOnce
此PVC定义仅包含存储大小请求和所需的访问模式,但不包含存储类。创建PVC时,将使用任何标记为默认的存储类。
$ kubectl get pvc postgresdb-pvc
NAME STATUS VOLUME CAPACITY ACCESSMODES STORAGECLASS
postgresdb-pvc Bound pvc-95a5ec12 1Gi RWO standard
$ kubectl get pv pvc-95a5ec12
NAME CAPACITY ACCESSMODES RECLAIMPOLICY STATUS STORAGECLASS
pvc-95a5ec12 1Gi RWO Delete Bound standard
这张Kubernetes In Action书中的图片完美地总结了所有步骤。