Support topologySpreadConstraints to spread OSD pods among failure domains as even as possible. https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/ Without this feature, the number of OSD pods would be different between the failure domains very much. At worst, there is a possibility that a failure domain has many OSDs and other failure domains have no OSDs. It can partly be mitigated with podAntiAffinity. However, it only works if there are at most one OSD per node. For more detail, please refer to the following document. https://github.com/rook/rook/blob/master/cluster/examples/kubernetes/ceph/cluster-on-pvc.yaml#L59 Closes: https://github.com/rook/rook/issues/4387 Signed-off-by: Hiroshi Muraoka <h.muraoka714@gmail.com> Signed-off-by: Satoru Takeuchi <satoru.takeuchi@gmail.com>
67 lines
2.3 KiB
YAML
67 lines
2.3 KiB
YAML
#################################################################################################################
|
|
# Create an object store with settings specific for OpenShift. A minimum of 3 OSDs are required in this example
|
|
# for the replication since the failureDomain is host.
|
|
# oc create -f object-openshift.yaml
|
|
#################################################################################################################
|
|
|
|
apiVersion: ceph.rook.io/v1
|
|
kind: CephObjectStore
|
|
metadata:
|
|
name: my-store
|
|
namespace: rook-ceph
|
|
spec:
|
|
# The pool spec used to create the metadata pools. Must use replication.
|
|
metadataPool:
|
|
failureDomain: host
|
|
replicated:
|
|
size: 3
|
|
# The pool spec used to create the data pool. Can use replication or erasure coding.
|
|
dataPool:
|
|
failureDomain: host
|
|
replicated:
|
|
size: 3
|
|
# Inline compression mode for the data pool
|
|
compressionMode: none
|
|
# Whether to preserve metadata and data pools on object store deletion
|
|
preservePoolsOnDelete: true
|
|
# The gateway service configuration
|
|
gateway:
|
|
# type of the gateway (s3)
|
|
type: s3
|
|
# A reference to the secret in the rook namespace where the ssl certificate is stored
|
|
sslCertificateRef:
|
|
# The port that RGW pods will listen on (http)
|
|
port: 8080
|
|
# The port that RGW pods will listen on (https). An ssl certificate is required.
|
|
securePort:
|
|
# The number of pods in the rgw deployment
|
|
instances: 1
|
|
# The affinity rules to apply to the rgw deployment or daemonset.
|
|
placement:
|
|
# nodeAffinity:
|
|
# requiredDuringSchedulingIgnoredDuringExecution:
|
|
# nodeSelectorTerms:
|
|
# - matchExpressions:
|
|
# - key: role
|
|
# operator: In
|
|
# values:
|
|
# - rgw-node
|
|
# topologySpreadConstraints:
|
|
# tolerations:
|
|
# - key: rgw-node
|
|
# operator: Exists
|
|
# podAffinity:
|
|
# podAntiAffinity:
|
|
# A key/value list of annotations
|
|
annotations:
|
|
# key: value
|
|
resources:
|
|
# The requests and limits set here, allow the object store gateway Pod(s) to use half of one CPU core and 1 gigabyte of memory
|
|
# limits:
|
|
# cpu: "500m"
|
|
# memory: "1024Mi"
|
|
# requests:
|
|
# cpu: "500m"
|
|
# memory: "1024Mi"
|
|
# priorityClassName: my-priority-class
|