mirror of
https://github.com/ceph/ceph-csi.git
synced 2024-12-26 15:00:19 +00:00
4774a82e88
1. QoS provides settings for rbd volume read/write iops and read/write bandwidth. 2. All QoS parameters are placed in the SC, send QoS parameters from SC to Cephcsi through PVC create request. 3. We need provide QoS parameters in the SC as below: - BaseReadIops - BaseWriteIops - BaseReadBytesPerSecond - BaseWriteBytesPerSecond - ReadIopsPerGB - WriteIopsPerGB - ReadBpsPerGB - WriteBpsPerGB - BaseVolSizeBytes There are 4 base qos parameters among them, when users apply for a volume capacity equal to or less than BaseVolSizebytes, use base qos limit. For the portion of capacity exceeding BaseVolSizebytes, QoS will be increased in steps set per GB. If the step size parameter per GB is not provided, only base QoS limit will be used and not associated with capacity size. 4. If PVC has resize request, adjust the QoS limit according to the QoS parameters after resizing. Signed-off-by: Yite Gu <guyite@bytedance.com>
203 lines
8.6 KiB
YAML
203 lines
8.6 KiB
YAML
---
|
|
apiVersion: storage.k8s.io/v1
|
|
kind: StorageClass
|
|
metadata:
|
|
name: csi-rbd-sc
|
|
provisioner: rbd.csi.ceph.com
|
|
# If topology based provisioning is desired, delayed provisioning of
|
|
# PV is required and is enabled using the following attribute
|
|
# For further information read TODO<doc>
|
|
# volumeBindingMode: WaitForFirstConsumer
|
|
parameters:
|
|
# (required) String representing a Ceph cluster to provision storage from.
|
|
# Should be unique across all Ceph clusters in use for provisioning,
|
|
# cannot be greater than 36 bytes in length, and should remain immutable for
|
|
# the lifetime of the StorageClass in use.
|
|
# Ensure to create an entry in the configmap named ceph-csi-config, based on
|
|
# csi-config-map-sample.yaml, to accompany the string chosen to
|
|
# represent the Ceph cluster in clusterID below
|
|
clusterID: <cluster-id>
|
|
|
|
# (optional) If you want to use erasure coded pool with RBD, you need to
|
|
# create two pools. one erasure coded and one replicated.
|
|
# You need to specify the replicated pool here in the `pool` parameter, it is
|
|
# used for the metadata of the images.
|
|
# The erasure coded pool must be set as the `dataPool` parameter below.
|
|
# dataPool: <ec-data-pool>
|
|
|
|
# (required) Ceph pool into which the RBD image shall be created
|
|
# (optional) If the topologyConstrainedPools is provided
|
|
# eg: pool: rbdpool
|
|
pool: <rbd-pool-name>
|
|
|
|
# (optional) RBD image features, CSI creates image with image-format 2 CSI
|
|
# RBD currently supports `layering`, `journaling`, `exclusive-lock`,
|
|
# `object-map`, `fast-diff`, `deep-flatten` features.
|
|
# Refer https://docs.ceph.com/en/latest/rbd/rbd-config-ref/#image-features
|
|
# for image feature dependencies.
|
|
# imageFeatures: layering,journaling,exclusive-lock,object-map,fast-diff
|
|
imageFeatures: "layering"
|
|
|
|
# (optional) Options to pass to the `mkfs` command while creating the
|
|
# filesystem on the RBD device. Check the man-page for the `mkfs` command
|
|
# for the filesystem for more details. When `mkfsOptions` is set here, the
|
|
# defaults will not be used, consider including them in this parameter.
|
|
#
|
|
# The default options depend on the csi.storage.k8s.io/fstype setting:
|
|
# - ext4: "-m0 -Enodiscard,lazy_itable_init=1,lazy_journal_init=1"
|
|
# - xfs: "-K"
|
|
#
|
|
# mkfsOptions: "-m0 -Ediscard -i1024"
|
|
|
|
# (optional) Specifies whether to try other mounters in case if the current
|
|
# mounter fails to mount the rbd image for any reason. True means fallback
|
|
# to next mounter, default is set to false.
|
|
# Note: tryOtherMounters is currently useful to fallback from krbd to rbd-nbd
|
|
# in case if any of the specified imageFeatures is not supported by krbd
|
|
# driver on node scheduled for application pod launch, but in the future this
|
|
# should work with any mounter type.
|
|
# tryOtherMounters: false
|
|
|
|
# (optional) mapOptions is a comma-separated list of map options.
|
|
# For krbd options refer
|
|
# https://docs.ceph.com/docs/master/man/8/rbd/#kernel-rbd-krbd-options
|
|
# For nbd options refer
|
|
# https://docs.ceph.com/docs/master/man/8/rbd-nbd/#options
|
|
# Format:
|
|
# mapOptions: "<mounter>:op1,op2;<mounter>:op1,op2"
|
|
# An empty mounter field is treated as krbd type for compatibility.
|
|
# eg:
|
|
# mapOptions: "krbd:lock_on_read,queue_depth=1024;nbd:try-netlink"
|
|
|
|
# (optional) unmapOptions is a comma-separated list of unmap options.
|
|
# For krbd options refer
|
|
# https://docs.ceph.com/docs/master/man/8/rbd/#kernel-rbd-krbd-options
|
|
# For nbd options refer
|
|
# https://docs.ceph.com/docs/master/man/8/rbd-nbd/#options
|
|
# Format:
|
|
# unmapOptions: "<mounter>:op1,op2;<mounter>:op1,op2"
|
|
# An empty mounter field is treated as krbd type for compatibility.
|
|
# eg:
|
|
# unmapOptions: "krbd:force;nbd:force"
|
|
|
|
# The secrets have to contain Ceph credentials with required access
|
|
# to the 'pool'.
|
|
csi.storage.k8s.io/provisioner-secret-name: csi-rbd-secret
|
|
csi.storage.k8s.io/provisioner-secret-namespace: default
|
|
csi.storage.k8s.io/controller-expand-secret-name: csi-rbd-secret
|
|
csi.storage.k8s.io/controller-expand-secret-namespace: default
|
|
csi.storage.k8s.io/node-stage-secret-name: csi-rbd-secret
|
|
csi.storage.k8s.io/node-stage-secret-namespace: default
|
|
|
|
# (optional) Specify the filesystem type of the volume. If not specified,
|
|
# csi-provisioner will set default as `ext4`.
|
|
csi.storage.k8s.io/fstype: ext4
|
|
|
|
# (optional) uncomment the following to use rbd-nbd as mounter
|
|
# on supported nodes
|
|
# mounter: rbd-nbd
|
|
|
|
# (optional) ceph client log location, eg: rbd-nbd
|
|
# By default host-path /var/log/ceph of node is bind-mounted into
|
|
# csi-rbdplugin pod at /var/log/ceph mount path. This is to configure
|
|
# target bindmount path used inside container for ceph clients logging.
|
|
# See docs/design/proposals/rbd-nbd.md for available configuration options.
|
|
# cephLogDir: /var/log/ceph
|
|
|
|
# (optional) ceph client log strategy
|
|
# By default, log file belonging to a particular volume will be deleted
|
|
# on unmap, but you can choose to just compress instead of deleting it
|
|
# or even preserve the log file in text format as it is.
|
|
# Available options `remove` or `compress` or `preserve`
|
|
# cephLogStrategy: remove
|
|
|
|
# (optional) Prefix to use for naming RBD images.
|
|
# If omitted, defaults to "csi-vol-".
|
|
# volumeNamePrefix: "foo-bar-"
|
|
|
|
# (optional) Instruct the plugin it has to encrypt the volume
|
|
# By default it is disabled. Valid values are "true" or "false".
|
|
# A string is expected here, i.e. "true", not true.
|
|
# encrypted: "true"
|
|
|
|
# (optional) Select the encryption type when encrypted: "true" above.
|
|
# Valid values are:
|
|
# "file": Enable file encryption on the mounted filesystem
|
|
# "block": Encrypt RBD block device
|
|
# When unspecified assume type "block". "file" and "block" are
|
|
# mutually exclusive.
|
|
# encryptionType: "block"
|
|
|
|
# (optional) Use external key management system for encryption passphrases by
|
|
# specifying a unique ID matching KMS ConfigMap. The ID is only used for
|
|
# correlation to configmap entry.
|
|
# encryptionKMSID: <kms-config-id>
|
|
|
|
# Add topology constrained pools configuration, if topology based pools
|
|
# are setup, and topology constrained provisioning is required.
|
|
# For further information read TODO<doc>
|
|
# topologyConstrainedPools: |
|
|
# [{"poolName":"pool0",
|
|
# "dataPool":"ec-pool0" # optional, erasure-coded pool for data
|
|
# "domainSegments":[
|
|
# {"domainLabel":"region","value":"east"},
|
|
# {"domainLabel":"zone","value":"zone1"}]},
|
|
# {"poolName":"pool1",
|
|
# "dataPool":"ec-pool1" # optional, erasure-coded pool for data
|
|
# "domainSegments":[
|
|
# {"domainLabel":"region","value":"east"},
|
|
# {"domainLabel":"zone","value":"zone2"}]},
|
|
# {"poolName":"pool2",
|
|
# "dataPool":"ec-pool2" # optional, erasure-coded pool for data
|
|
# "domainSegments":[
|
|
# {"domainLabel":"region","value":"west"},
|
|
# {"domainLabel":"zone","value":"zone1"}]}
|
|
# ]
|
|
|
|
# Image striping, Refer https://docs.ceph.com/en/latest/man/8/rbd/#striping
|
|
# For more details
|
|
# (optional) stripe unit in bytes.
|
|
# stripeUnit: <>
|
|
# (optional) objects to stripe over before looping.
|
|
# stripeCount: <>
|
|
# (optional) The object size in bytes.
|
|
# objectSize: <>
|
|
|
|
# rbd volume QoS.
|
|
# QoS provides settings for rbd volume read/write iops
|
|
# and read/write bandwidth. There are 4 base qos parameters
|
|
# among them, when users apply for a volume capacity equal
|
|
# to or less than BaseVolSizebytes, use base qos limit.
|
|
# For the portion of capacity exceeding BaseVolSizebytes,
|
|
# QoS will be increased in steps set per GiB. If the step
|
|
# size parameter per GiB is not provided, only base QoS limit
|
|
# will be used and not associated with capacity size.
|
|
#
|
|
# note: currently supports rbd-nbd mounter.
|
|
#
|
|
# For more details
|
|
# (optional) the base limit of read operations per second.
|
|
# BaseReadIops: <>
|
|
# (optional) the base limit of write operations per second.
|
|
# BaseWriteIops: <>
|
|
# (optional) the base limit of read bytes per second.
|
|
# BaseReadBytesPerSecond: <>
|
|
# (optional) the base limit of write bytes per second.
|
|
# BaseWriteBytesPerSecond: <>
|
|
# (optional) the limit of read operations per GiB.
|
|
# ReadIopsPerGB: <>
|
|
# (optional) the limit of write operations per GiB.
|
|
# WriteIopsPerGB: <>
|
|
# (optional) the limit of read bytes per GiB.
|
|
# ReadBpsPerGB: <>
|
|
# (optional) the limit of write bytes per GiB.
|
|
# WriteBpsPerGB: <>
|
|
# (optional) min size of volume what use to calc qos beased on capacity.
|
|
# BaseVolSizeBytes:<>
|
|
reclaimPolicy: Delete
|
|
allowVolumeExpansion: true
|
|
|
|
# If filesystem is xfs, nouuid will be automatically added to mountOptions
|
|
mountOptions:
|
|
- discard
|