123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266 |
- #################################################################################################################
- # Define the settings for the rook-ceph cluster with common settings for a production cluster on top of bare metal.
- # This example expects three nodes, each with two available disks. Please modify it according to your environment.
- # See the documentation for more details on storage settings available.
- # For example, to create the cluster:
- # kubectl create -f crds.yaml -f common.yaml -f operator.yaml
- # kubectl create -f cluster-on-local-pvc.yaml
- #################################################################################################################
- kind: StorageClass
- apiVersion: storage.k8s.io/v1
- metadata:
- name: local-storage
- provisioner: kubernetes.io/no-provisioner
- volumeBindingMode: WaitForFirstConsumer
- ---
- kind: PersistentVolume
- apiVersion: v1
- metadata:
- name: local0-0
- spec:
- storageClassName: local-storage
- capacity:
- storage: 10Gi
- accessModes:
- - ReadWriteOnce
- persistentVolumeReclaimPolicy: Retain
- # PV for mon must be a filesystem volume.
- volumeMode: Filesystem
- local:
- # If you want to use dm devices like logical volume, please replace `/dev/sdb` with their device names like `/dev/vg-name/lv-name`.
- path: /dev/sdb
- nodeAffinity:
- required:
- nodeSelectorTerms:
- - matchExpressions:
- - key: kubernetes.io/hostname
- operator: In
- values:
- - host0
- ---
- kind: PersistentVolume
- apiVersion: v1
- metadata:
- name: local0-1
- spec:
- storageClassName: local-storage
- capacity:
- storage: 10Gi
- accessModes:
- - ReadWriteOnce
- persistentVolumeReclaimPolicy: Retain
- # PV for OSD must be a block volume.
- volumeMode: Block
- local:
- path: /dev/sdc
- nodeAffinity:
- required:
- nodeSelectorTerms:
- - matchExpressions:
- - key: kubernetes.io/hostname
- operator: In
- values:
- - host0
- ---
- kind: PersistentVolume
- apiVersion: v1
- metadata:
- name: local1-0
- spec:
- storageClassName: local-storage
- capacity:
- storage: 10Gi
- accessModes:
- - ReadWriteOnce
- persistentVolumeReclaimPolicy: Retain
- volumeMode: Filesystem
- local:
- path: /dev/sdb
- nodeAffinity:
- required:
- nodeSelectorTerms:
- - matchExpressions:
- - key: kubernetes.io/hostname
- operator: In
- values:
- - host1
- ---
- kind: PersistentVolume
- apiVersion: v1
- metadata:
- name: local1-1
- spec:
- storageClassName: local-storage
- capacity:
- storage: 10Gi
- accessModes:
- - ReadWriteOnce
- persistentVolumeReclaimPolicy: Retain
- volumeMode: Block
- local:
- path: /dev/sdc
- nodeAffinity:
- required:
- nodeSelectorTerms:
- - matchExpressions:
- - key: kubernetes.io/hostname
- operator: In
- values:
- - host1
- ---
- kind: PersistentVolume
- apiVersion: v1
- metadata:
- name: local2-0
- spec:
- storageClassName: local-storage
- capacity:
- storage: 10Gi
- accessModes:
- - ReadWriteOnce
- persistentVolumeReclaimPolicy: Retain
- volumeMode: Filesystem
- local:
- path: /dev/sdb
- nodeAffinity:
- required:
- nodeSelectorTerms:
- - matchExpressions:
- - key: kubernetes.io/hostname
- operator: In
- values:
- - host2
- ---
- kind: PersistentVolume
- apiVersion: v1
- metadata:
- name: local2-1
- spec:
- storageClassName: local-storage
- capacity:
- storage: 10Gi
- accessModes:
- - ReadWriteOnce
- persistentVolumeReclaimPolicy: Retain
- volumeMode: Block
- local:
- path: /dev/sdc
- nodeAffinity:
- required:
- nodeSelectorTerms:
- - matchExpressions:
- - key: kubernetes.io/hostname
- operator: In
- values:
- - host2
- ---
- apiVersion: ceph.rook.io/v1
- kind: CephCluster
- metadata:
- name: rook-ceph
- namespace: rook-ceph # namespace:cluster
- spec:
- dataDirHostPath: /var/lib/rook
- mon:
- count: 3
- allowMultiplePerNode: false
- volumeClaimTemplate:
- spec:
- storageClassName: local-storage
- resources:
- requests:
- storage: 10Gi
- cephVersion:
- image: quay.io/ceph/ceph:v18.2.1
- allowUnsupported: false
- skipUpgradeChecks: false
- continueUpgradeAfterChecksEvenIfNotHealthy: false
- mgr:
- count: 1
- modules:
- - name: pg_autoscaler
- enabled: true
- dashboard:
- enabled: true
- ssl: true
- crashCollector:
- disable: false
- storage:
- storageClassDeviceSets:
- - name: set1
- count: 3
- portable: false
- tuneDeviceClass: true
- tuneFastDeviceClass: false
- encrypted: false
- placement:
- topologySpreadConstraints:
- - maxSkew: 1
- topologyKey: kubernetes.io/hostname
- whenUnsatisfiable: ScheduleAnyway
- labelSelector:
- matchExpressions:
- - key: app
- operator: In
- values:
- - rook-ceph-osd
- - rook-ceph-osd-prepare
- preparePlacement:
- podAntiAffinity:
- preferredDuringSchedulingIgnoredDuringExecution:
- - weight: 100
- podAffinityTerm:
- labelSelector:
- matchExpressions:
- - key: app
- operator: In
- values:
- - rook-ceph-osd
- - key: app
- operator: In
- values:
- - rook-ceph-osd-prepare
- topologyKey: kubernetes.io/hostname
- resources:
- # These are the OSD daemon limits. For OSD prepare limits, see the separate section below for "prepareosd" resources
- # limits:
- # cpu: "500m"
- # memory: "4Gi"
- # requests:
- # cpu: "500m"
- # memory: "4Gi"
- volumeClaimTemplates:
- - metadata:
- name: data
- # if you are looking at giving your OSD a different CRUSH device class than the one detected by Ceph
- # annotations:
- # crushDeviceClass: hybrid
- spec:
- resources:
- requests:
- storage: 10Gi
- # IMPORTANT: Change the storage class depending on your environment
- storageClassName: local-storage
- volumeMode: Block
- accessModes:
- - ReadWriteOnce
- # when onlyApplyOSDPlacement is false, will merge both placement.All() and storageClassDeviceSets.Placement
- onlyApplyOSDPlacement: false
- resources:
- # prepareosd:
- # limits:
- # cpu: "200m"
- # memory: "200Mi"
- # requests:
- # cpu: "200m"
- # memory: "200Mi"
- priorityClassNames:
- mon: system-node-critical
- osd: system-node-critical
- mgr: system-cluster-critical
- disruptionManagement:
- managePodBudgets: true
- osdMaintenanceTimeout: 30
- pgHealthCheckTimeout: 0
|