Lau*_*ica 1 kubernetes rancher kubernetes-pvc
我正在尝试利用 k8s 的本地卷动态配置程序(Rancher 的一个),具有多个实例,每个实例都有自己的存储类,以便我可以根据性能提供多种类型的本地卷(例如 ssd、hdd 等)。
底层基础设施不对称;有些节点只有 SSD,有些只有 HDD,有些节点两者都有。
我知道我可以通过为 Pod 提供节点关联性规则来提示调度程序选择正确的节点。
但是,是否有更好的方法仅在配置者/存储类级别解决此问题?例如,使存储类仅可用于集群节点的子集。
我知道我可以通过为 Pod 提供节点关联性规则来提示调度程序选择正确的节点。
Pod
使用本地持久卷时,无需在级别上定义节点亲和性规则。节点关联性可以在定义中指定PersistentVolume
。
但是,是否有更好的方法仅在配置者/存储类级别解决此问题?例如,使存储类仅可用于集群节点的子集。
不,不能在StorageClass
级别上指定。您也不能StorageClass
仅让节点的子集可用。
但当谈到配置器时,我会说是的,它应该是可行的,因为主要的存储配置器任务之一是创建匹配的PersistentVolume
对象以响应PersistentVolumeClaim
用户创建的对象。你可以在这里读到它:
动态卷配置允许按需创建存储卷。如果没有动态配置,集群管理员必须手动调用其云或存储提供商来创建新的存储卷,然后创建 PersistentVolume 对象来在 Kubernetes 中表示它们。动态配置功能使集群管理员无需预先配置存储。相反,它会在用户请求时自动配置存储。
因此,从一开始看整个卷提供过程如下:
用户仅创建PersistenVolumeClaim
对象,并在其中指定StorageClass
:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: myclaim
spec:
accessModes:
- ReadWriteOnce
volumeMode: Filesystem
resources:
requests:
storage: 10Gi
storageClassName: local-storage ###
Run Code Online (Sandbox Code Playgroud)
它可以用在Pod
定义中:
apiVersion: v1
kind: Pod
metadata:
name: mypod
spec:
containers:
- name: myfrontend
image: nginx
volumeMounts:
- mountPath: "/var/www/html"
name: mypd
volumes:
- name: mypd
persistentVolumeClaim:
claimName: myclaim ###
Run Code Online (Sandbox Code Playgroud)
因此在实践中,在Pod
定义中您只需要指定正确的PVC
. 不需要在这里定义任何节点亲和性规则。
APod
引用 a PVC
,PVC
然后引用 a StorageClass
,StorageClass
引用provisioner
应该使用的 the :
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: local-storage
provisioner: kubernetes.io/my-fancy-provisioner ###
volumeBindingMode: WaitForFirstConsumer
Run Code Online (Sandbox Code Playgroud)
所以最终 a 的任务就是provisioner
创建匹配的PersistentVolume
对象。它可以如下所示:
apiVersion: v1
kind: PersistentVolume
metadata:
name: example-pv
spec:
capacity:
storage: 10Gi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Delete
storageClassName: local-storage
local:
path: /var/tmp/test
nodeAffinity: ###
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- ssd-node ###
Run Code Online (Sandbox Code Playgroud)
因此,Pod
使用myclaim PVC
-> 引用local-storage StorageClass
-> 选择适当的存储provisioner
将自动调度在PV
此配置程序创建的定义中选择的节点上。
归档时间: |
|
查看次数: |
6945 次 |
最近记录: |