เช เชฎเชนเชฟเชจเชพเชจเซ เชถเชฐเซเชเชคเชฎเชพเช, 3 เชฎเซเชจเชพ เชฐเซเช, "เชเซเชฌเชฐเชจเซเชเซเชธเชฎเชพเช เชตเชฟเชคเชฐเชฟเชค เชกเซเชเชพ เชธเซเชเซเชฐเซเช เชฎเชพเชเซ เชฎเซเชจเซเชเชฎเซเชจเซเช เชธเชฟเชธเซเชเชฎ" เชจเซ เชฎเซเชเซเชฏ เชฐเชเซเชเชคเชจเซ เชเชพเชนเซเชฐเชพเชค เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชนเชคเซ -
เชเซเชเชเชฎเชพเช, เชฐเซเช เชเช เชธเชฎเซเชน เชเซ
เช เชเซเชทเชฃเซ เชธเซเชฅเซ เชตเชงเซ เชตเชฟเชเชธเชฟเชค (เช
เชจเซ
เชจเซเชเชงเชฃเซ: Ceph เชธเชเชฌเชเชงเชฟเชค เชฐเซเช 1.0.0 เชฐเชฟเชฒเซเชเชฎเชพเช เชจเซเชเชงเชชเชพเชคเซเชฐ เชซเซเชฐเชซเชพเชฐเซ เชชเซเชเซ, เช เชฎเซ Ceph Nautilus เชฎเชพเชเซ เชธเชฎเชฐเซเชฅเชจ เช เชจเซ CephFS เช เชฅเชตเชพ RGW เชฌเชเซเชเซเชธ เชฎเชพเชเซ NFS เชจเซ เชเชชเชฏเซเช เชเชฐเชตเชพเชจเซ เชเซเชทเชฎเชคเชพเชจเซ เชจเซเชเชงเซ เชถเชเซเช เชเซเช. เชฌเซเชเชพ เชธเซเชคเชฐ เชชเชฐ เชเชเชเชซเชเชธ เชธเชชเซเชฐเซเชเชจเซ เชชเชฐเชฟเชชเชเซเชตเชคเชพ เช เช เชจเซเชฏ เชฒเซเชเซเชฎเชพเช เช เชฒเช เชเซ.
เชคเซเชฅเซ, เช เชฒเซเชเชฎเชพเช เชเชชเชฃเซ:
- เชเซเชฌเชฐเชจเซเชเซเชธ เชเซเชฒเชธเซเชเชฐเชฎเชพเช เชธเซเชซเชจเซ เชเชฎเชพเชตเชตเชพ เชฎเชพเชเซ เชฐเซเชเชจเซ เชเชชเชฏเซเช เชเชฐเชตเชพเชฅเซ เชเชชเชฃเชจเซ เชเชฏเชพ เชซเชพเชฏเชฆเชพ เชฆเซเชเชพเชฏ เชเซ เชคเซ เช เชเชเซเชจเชพ เชชเซเชฐเชถเซเชจเชจเซ เชเชตเชพเชฌ เชเชชเซเช;
- เช เชฎเซ เชเชคเซเชชเชพเชฆเชจเชฎเชพเช เชฐเซเชเชจเซ เชเชชเชฏเซเช เชเชฐเชตเชพเชจเชพ เช เชฎเชพเชฐเชพ เช เชจเซเชญเชต เช เชจเซ เชเชพเชชเชจเซ เชถเซเชฐ เชเชฐเซเชถเซเช;
- เชเชพเชฒเซ เชคเชฎเชจเซ เชเชนเซเช เชเซ เชถเชพ เชฎเชพเชเซ เช เชฎเซ เชฐเซเชเชจเซ โเชนเชพ!โ เชเชนเซเช เชเซเช เช เชจเซ เชคเซเชจเชพ เชฎเชพเชเซ เช เชฎเชพเชฐเซ เชฏเซเชเชจเชพเช เชตเชฟเชถเซ.
เชเชพเชฒเซ เชธเชพเชฎเชพเชจเซเชฏ เชเซเชฏเชพเชฒเซ เช เชจเซ เชธเชฟเชฆเซเชงเชพเชเชค เชธเชพเชฅเซ เชชเซเชฐเชพเชฐเชเชญ เชเชฐเซเช.
"เชฎเชจเซ เชเช เชฐเซเชเชจเซ เชซเชพเชฏเชฆเซ เชเซ!" (เช เชเชพเชฃเซเชฏเชพ เชเซเชธ เชเซเชฒเชพเชกเซ)
เชฐเซเชเชจเชพ เชฎเซเชเซเชฏ เชซเชพเชฏเชฆเชพเชเชฎเชพเชเชจเซ เชเช เช เชเซ เชเซ เชกเซเชเชพ เชธเซเชเซเชฐเซเชธ เชธเชพเชฅเซเชจเซ เชเซเชฐเชฟเชฏเชพเชชเซเชฐเชคเชฟเชเซเชฐเชฟเชฏเชพ เชเซเชฌเชฐเชจเซเชเซเชธ เชฎเชฟเชเซเชจเชฟเชเชฎเซเชธ เชฆเซเชตเชพเชฐเชพ เชนเชพเชฅ เชงเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ. เชเชจเซ เช
เชฐเซเชฅ เช เชเซ เชเซ เชคเชฎเชพเชฐเซ เชนเชตเซ เชเชจเซเชธเซเชฒเชฎเชพเช เชถเซเชเชฎเชพเชเชฅเซ Ceph เชจเซ เชเซเช เชตเชตเชพ เชฎเชพเชเซ เชเชฆเซเชถเซเชจเซ เชจเชเชฒ เชเชฐเชตเชพเชจเซ เชเชฐเซเชฐ เชจเชฅเซ.
โ เชถเซเช เชคเชฎเซ เชเซเชฒเชธเซเชเชฐเชฎเชพเช CephFS เชเชฎเชพเชตเชตเชพ เชฎเชพเชเชเซ เชเซ? เชซเชเซเชค YAML เชซเชพเชเชฒ เชฒเชเซ!
- เชถเซเช? เชถเซเช เชคเชฎเซ S3 API เชธเชพเชฅเซ เชเชฌเซเชเซเชเซเช เชธเซเชเซเชฐ เชชเชฃ เชเชฎเชพเชตเชตเชพ เชฎเชพเชเชเซ เชเซ? เชซเชเซเชค เชฌเซเชเซ YAML เชซเชพเชเชฒ เชฒเชเซ!
เชฐเซเช เชธเชพเชฎเชพเชจเซเชฏ เชเชชเชฐเซเชเชฐเชจเชพ เชคเชฎเชพเชฎ เชจเชฟเชฏเชฎเซ เช
เชจเซเชธเชพเชฐ เชฌเชจเชพเชตเชตเชพเชฎเชพเช เชเชตเซ เชเซ. เชคเซเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชคเซเชจเซ เชธเชพเชฅเซ เชเซเชฐเชฟเชฏเชพเชชเซเชฐเชคเชฟเชเซเชฐเชฟเชฏเชพ เชฅเชพเชฏ เชเซ
เชเชพเชฒเซ เชเชฌเซเชเซเชเซเช เชธเซเชเซเชฐ เชฌเชจเชพเชตเชตเชพเชจเชพ เชเชฆเชพเชนเชฐเชฃเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชธเซเชชเชทเซเชเซเชเชฐเชฃเซ เชเซเชเช, เช
เชฅเชตเชพ เชคเซเชจเชพ เชฌเชฆเชฒเซ - CephObjectStoreUser
.
apiVersion: ceph.rook.io/v1
kind: CephObjectStore
metadata:
name: {{ .Values.s3.crdName }}
namespace: kube-rook
spec:
metadataPool:
failureDomain: host
replicated:
size: 3
dataPool:
failureDomain: host
erasureCoded:
dataChunks: 2
codingChunks: 1
gateway:
type: s3
sslCertificateRef:
port: 80
securePort:
instances: 1
allNodes: false
---
apiVersion: ceph.rook.io/v1
kind: CephObjectStoreUser
metadata:
name: {{ .Values.s3.crdName }}
namespace: kube-rook
spec:
store: {{ .Values.s3.crdName }}
displayName: {{ .Values.s3.username }}
เชธเซเชเชฟเชฎเชพเช เชฆเชฐเซเชถเชพเชตเซเชฒ เชชเชฐเชฟเชฎเชพเชฃเซ เชคเชฆเซเชฆเชจ เชชเซเชฐเชฎเชพเชฃเชญเซเชค เชเซ เช เชจเซ เชญเชพเชเซเชฏเซ เช เชเชฟเชชเซเชชเชฃเซเชเชจเซ เชเชฐเซเชฐ เชเซ, เชชเชฐเชเชคเซ เชเซเชฎเซเชชเชฒเซเช เชตเซเชฐเซเชเชฌเชฒเซเชธเชจเซ เชซเชพเชณเชตเชตเชพเชฎเชพเช เชเชตเซเชฒเชพ เชชเชฐ เชตเชฟเชถเซเชท เชงเซเชฏเชพเชจ เชเชชเชตเซเช เชฏเซเชเซเชฏ เชเซ.
เชเชพเชฐเซเชฏเชจเซ เชธเชพเชฎเชพเชจเซเชฏ เชฏเซเชเชจเชพ เช เชนเชเซเชเชค เชชเชฐ เชเชตเซ เชเซ เชเซ เช เชฎเซ YAML เชซเชพเชเชฒ เชฆเซเชตเชพเชฐเชพ เชธเชเชธเชพเชงเชจเซเชจเซ "เชเชฐเซเชกเชฐ" เชเชฐเซเช เชเซเช, เชเซเชจเชพ เชฎเชพเชเซ เชเชชเชฐเซเชเชฐ เชเชฐเซเชฐเซ เชเชฆเซเชถเซ เชเชฒเชพเชตเซ เชเซ เช เชจเซ เช เชฎเชจเซ "เช เชคเซเชฏเชเชค เชตเชพเชธเซเชคเชตเชฟเช" เชฐเชนเชธเซเชฏ เชเชชเซ เชเซ เชเซเชจเซ เชธเชพเชฅเซ เช เชฎเซ เชเชเชณ เชเชพเชฎ เชเชฐเซ เชถเชเซเช เชเซเช. (เชจเซเชเซ เชเซเช). เช เชจเซ เชเชชเชฐ เชธเซเชเชฟเชฌเชฆเซเชง เชเชฒเซเชฎเชพเชเชฅเซ, เชเชฆเซเชถ เช เชจเซ เชเซเชชเซเชค เชจเชพเชฎเชจเซเช เชธเชเชเชฒเชจ เชเชฐเชตเชพเชฎเชพเช เชเชตเชถเซ.
เช เชเซเชตเชพ เชชเซเชฐเชเชพเชฐเชจเซ เชเซเชฎ เชเซ? เชเชฌเซเชเซเชเซเช เชธเซเชเซเชฐเซเช เชฎเชพเชเซ เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพ เชฌเชจเชพเชตเชคเซ เชตเชเชคเซ, เชชเซเชกเชจเซ เช เชเชฆเชฐ เชฐเซเช เชเชชเชฐเซเชเชฐ เชจเซเชเซ เชฎเซเชเชฌ เชเชฐเชถเซ:
radosgw-admin user create --uid="rook-user" --display-name="{{ .Values.s3.username }}"
เช เชเชฆเซเชถ เชเชฒเชพเชตเชตเชพเชจเซเช เชชเชฐเชฟเชฃเชพเชฎ JSON เชฎเชพเชณเชเซเช เชนเชถเซ:
{
"user_id": "rook-user",
"display_name": "{{ .Values.s3.username }}",
"keys": [
{
"user": "rook-user",
"access_key": "NRWGT19TWMYOB1YDBV1Y",
"secret_key": "gr1VEGIV7rxcP3xvXDFCo4UDwwl2YoNrmtRlIAty"
}
],
...
}
Keys
- S3 API เชฆเซเชตเชพเชฐเชพ เชเชฌเซเชเซเชเซเช เชธเซเชเซเชฐเซเชเชจเซ เชเชเซเชธเซเชธ เชเชฐเชตเชพ เชฎเชพเชเซ เชญเชตเชฟเชทเซเชฏเชจเซ เชเช เชเชชเซเชฒเชฟเชเซเชถเชจเซเชธเชจเซ เชเชฐเซเชฐ เชชเชกเชถเซ. เชฐเซเช เชเชชเชฐเซเชเชฐ เชเซเชชเชพ เชเชฐเซเชจเซ เชคเซเชฎเชจเซ เชชเชธเชเชฆ เชเชฐเซ เชเซ เช
เชจเซ เชจเชพเชฎ เชธเชพเชฅเซ เชเซเชชเซเชค เชธเซเชตเชฐเซเชชเชฎเชพเช เชคเซเชฎเชจเซ เชจเซเชฎเชธเซเชชเซเชธเชฎเชพเช เชฎเซเชเซ เชเซ. rook-ceph-object-user-{{ $.Values.s3.crdName }}-{{ $.Values.s3.username }}
.
เช เชธเชฟเชเซเชฐเซเชเชฎเชพเชเชฅเซ เชกเซเชเชพเชจเซ เชเชชเชฏเซเช เชเชฐเชตเชพ เชฎเชพเชเซ, เชซเชเซเชค เชคเซเชจเซ เชเชจเซเชเซเชจเชฐเชฎเชพเช เชเชจเซเชตเชพเชฏเชฐเซเชจเชฎเซเชจเซเช เชตเซเชฐเชฟเชฏเซเชฌเชฒเซเชธ เชคเชฐเซเชเซ เชเชฎเซเชฐเซ. เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ, เชนเซเช เชเซเชฌ เชฎเชพเชเซ เชเช เชเซเชฎเซเชชเชฒเซเช เชเชชเซเชถ, เชเซเชฎเชพเช เช เชฎเซ เชฆเชฐเซเช เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพ เชชเชฐเซเชฏเชพเชตเชฐเชฃ เชฎเชพเชเซ เชเชชเชฎเซเชณเซ เชฌเชเซเช เชฌเชจเชพเชตเซเช เชเซเช:
{{- range $bucket := $.Values.s3.bucketNames }}
apiVersion: batch/v1
kind: Job
metadata:
name: create-{{ $bucket }}-bucket-job
annotations:
"helm.sh/hook": post-install
"helm.sh/hook-weight": "2"
spec:
template:
metadata:
name: create-{{ $bucket }}-bucket-job
spec:
restartPolicy: Never
initContainers:
- name: waitdns
image: alpine:3.6
command: ["/bin/sh", "-c", "while ! getent ahostsv4 rook-ceph-rgw-{{ $.Values.s3.crdName }}; do sleep 1; done" ]
- name: config
image: rook/ceph:v1.0.0
command: ["/bin/sh", "-c"]
args: ["s3cmd --configure --access_key=$(ACCESS-KEY) --secret_key=$(SECRET-KEY) -s --no-ssl --dump-config | tee /config/.s3cfg"]
volumeMounts:
- name: config
mountPath: /config
env:
- name: ACCESS-KEY
valueFrom:
secretKeyRef:
name: rook-ceph-object-user-{{ $.Values.s3.crdName }}-{{ $.Values.s3.username }}
key: AccessKey
- name: SECRET-KEY
valueFrom:
secretKeyRef:
name: rook-ceph-object-user-{{ $.Values.s3.crdName }}-{{ $.Values.s3.username }}
key: SecretKey
containers:
- name: create-bucket
image: rook/ceph:v1.0.0
command:
- "s3cmd"
- "mb"
- "--host=rook-ceph-rgw-{{ $.Values.s3.crdName }}"
- "--host-bucket= "
- "s3://{{ $bucket }}"
ports:
- name: s3-no-sll
containerPort: 80
volumeMounts:
- name: config
mountPath: /root
volumes:
- name: config
emptyDir: {}
---
{{- end }}
เช เชเซเชฌเชฎเชพเช เชธเซเชเชฟเชฌเชฆเซเชง เชคเชฎเชพเชฎ เชเซเชฐเชฟเชฏเชพเช เชเซเชฌเชฐเชจเซเชเซเชธเชจเชพ เชฎเชพเชณเชเชพเชฎเชพเช เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชนเชคเซ. YAML เชซเชพเชเชฒเซเชฎเชพเช เชตเชฐเซเชฃเชตเซเชฒ เชธเซเชเซเชฐเชเซเชเชฐเซเชธ เชเชฟเช เชฐเชฟเชชเซเชเซเชเชฐเซเชฎเชพเช เชธเชเชเซเชฐเชนเชฟเชค เชฅเชพเชฏ เชเซ เช เชจเซ เชเชฃเซ เชตเชเชค เชชเซเชจเชเชเชชเชฏเซเช เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ. เช เชฎเซ เชเชจเซ DevOps เชเชจเซเชเชฟเชจเชฟเชฏเชฐเซ เช เชจเซ เชธเชฎเชเซเชฐ เชฐเซเชคเซ CI/CD เชชเซเชฐเชเซเชฐเชฟเชฏเชพ เชฎเชพเชเซ เชเช เชตเชฟเชถเชพเชณ เชตเชคเซเชคเชพ เชคเชฐเซเชเซ เชเซเชเช เชเซเช.
เชฐเซเช เช เชจเซ เชฐเชพเชกเซเชธเชฅเซ เชเซเชถ
Ceph + RBD เชเซเชฎเซเชฌเชฟเชจเซเชถเชจเชจเซ เชเชชเชฏเซเช เชชเซเชกเซเชธ เชชเชฐ เชตเซเชฒเซเชฏเซเชฎเชจเซ เชฎเชพเชเชจเซเช เชเชฐเชตเชพ เชชเชฐ เชเซเชเซเชเชธ เชจเชฟเชฏเชเชคเซเชฐเชฃเซ เชฒเชพเชฆเซ เชเซ.
เชเชพเชธ เชเชฐเซเชจเซ, เชธเซเชเซเชเชซเซเชฒ เชเชชเซเชฒเซเชเซเชถเชจ เชเชพเชฐเซเชฏ เชเชฐเชตเชพ เชฎเชพเชเซ เชจเซเชฎเชธเซเชชเซเชธเชฎเชพเช Ceph เชจเซ เชเชเซเชธเซเชธ เชเชฐเชตเชพ เชฎเชพเชเซ เชเช เชฐเชนเชธเซเชฏ เชนเซเชตเซเช เชเชตเชถเซเชฏเช เชเซ. เชเซ เชคเชฎเชพเชฐเซ เชชเชพเชธเซ เชคเซเชฎเชจเซ เชจเซเชฎเชธเซเชชเซเชธเชฎเชพเช 2-3 เชตเชพเชคเชพเชตเชฐเชฃ เชนเซเชฏ เชคเซ เชคเซ เช เซเช เชเซ: เชคเชฎเซ เชเชพเชคเซ เชเชเชจเซ เชเซเชชเซเชคเชจเซ เชจเชเชฒ เชเชฐเซ เชถเชเซ เชเซ. เชชเชฐเชเชคเซ เชเซ เชฆเชฐเซเช เชธเซเชตเชฟเชงเชพ เชฎเชพเชเซ เชตเชฟเชเชพเชธเชเชฐเซเชคเชพเช เชฎเชพเชเซ เชคเซเชจเชพ เชชเซเชคเชพเชจเชพ เชจเซเชฎเชธเซเชชเซเชธ เชธเชพเชฅเซเชจเซเช เช เชฒเช เชตเชพเชคเชพเชตเชฐเชฃ เชฌเชจเชพเชตเชตเชพเชฎเชพเช เชเชตเซ เชคเซ เชถเซเช?
เช
เชฎเซ เช เชธเชฎเชธเซเชฏเชพเชจเซ เชเชพเชคเซ เช เชนเชฒ เชเชฐเซ เชเซ
#! /bin/bash
if [[ $1 == โ--configโ ]]; then
cat <<EOF
{"onKubernetesEvent":[
{"name": "OnNewNamespace",
"kind": "namespace",
"event": ["add"]
}
]}
EOF
else
NAMESPACE=$(kubectl get namespace -o json | jq '.items | max_by( .metadata.creationTimestamp ) | .metadata.name')
kubectl -n ${CEPH_SECRET_NAMESPACE} get secret ${CEPH_SECRET_NAME} -o json | jq ".metadata.namespace="${NAMESPACE}"" | kubectl apply -f -
fi
เชเซ เชเซ, เชฐเซเชเชจเซ เชเชชเชฏเซเช เชเชฐเชคเซ เชตเชเชคเซ เช เชธเชฎเชธเซเชฏเชพ เช
เชธเซเชคเชฟเชคเซเชตเชฎเชพเช เชจเชฅเซ. เชฎเชพเชเชจเซเชเชฟเชเช เชชเซเชฐเชเซเชฐเชฟเชฏเชพ เชคเซเชจเชพ เชเชงเชพเชฐเซ เชคเซเชจเชพ เชชเซเชคเชพเชจเชพ เชกเซเชฐเชพเชเชตเชฐเซเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชฅเชพเชฏ เชเซ
เชฐเซเช เชเชชเชฎเซเชณเซ เชเชฃเซ เชธเชฎเชธเซเชฏเชพเช เชนเชฒ เชเชฐเซ เชเซ, เชเซ เช เชฎเชจเซ เชจเชตเชพ เชชเซเชฐเซเชเซเชเซเชเซเชธเชฎเชพเช เชคเซเชจเซ เชเชชเชฏเซเช เชเชฐเชตเชพ เชชเซเชฐเซเชคเซเชธเชพเชนเชฟเชค เชเชฐเซ เชเซ.
เชฐเซเชเชจเซ เชเซเชฐเซ
เชเชพเชฒเซ เชฐเซเช เช เชจเซ เชธเซเชซเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชตเซเชฏเชตเชนเชพเชฐเซ เชญเชพเช เชชเซเชฐเซเชฃ เชเชฐเซเช เชเซเชฅเซ เชเชฐเซเชจเซ เชเชชเชฃเซ เชเชชเชฃเชพ เชชเซเชคเชพเชจเชพ เชชเซเชฐเชฏเซเชเซ เชเชฐเซ เชถเชเซเช. เช เช เชญเซเชฆเซเชฏ เชเชพเชตเชฐ เชชเชฐ เชคเซเชซเชพเชจ เชเชฐเชตเชพเชจเซเช เชธเชฐเชณ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชเซ, เชตเชฟเชเชพเชธเชเชฐเซเชคเชพเชเช เชนเซเชฒเซเชฎ เชชเซเชเซเช เชคเซเชฏเชพเชฐ เชเชฐเซเชฏเซเช เชเซ. เชเชพเชฒเซ เชคเซเชจเซ เชกเชพเชเชจเชฒเซเชก เชเชฐเซเช:
$ helm fetch rook-master/rook-ceph --untar --version 1.0.0
เชซเชพเชเชฒเชฎเชพเช rook-ceph/values.yaml
เชคเชฎเซ เชเชฃเซ เชตเชฟเชตเชฟเชง เชธเซเชเชฟเชเชเซเชธ เชถเซเชงเซ เชถเชเซ เชเซ. เชธเซเชฅเซ เชฎเชนเชคเซเชตเชจเซ เชฌเชพเชฌเชค เช เชเซ เชเซ เชเชเชจเซเชเซ เช
เชจเซ เชถเซเชง เชฎเชพเชเซ เชธเชนเชจเชถเซเชฒเชคเชพเชจเซ เชเชฒเซเชฒเซเช เชเชฐเชตเซ. เช
เชฎเซ เชตเชฟเชเชคเชตเชพเชฐ เชตเชฐเซเชฃเชจ เชเชฐเซเชฏเซเช เชเซ เชเซ เชฆเซเชทเชฟเชคเชคเชพ/เชธเชนเชจเชถเซเชฒเชคเชพ เชชเชฆเซเชงเชคเชฟเชจเซ เชเชชเชฏเซเช เชถเซเช เชฎเชพเชเซ เชฅเช เชถเชเซ เชเซ
เชเซเชเชเชฎเชพเช, เช เชฎเซ เชจเชฅเซ เชเชเซเชเชคเชพ เชเซ เชเซเชฒเชพเชฏเชเช เชเชชเซเชฒเชฟเชเซเชถเชจ เชชเซเชกเซเชธ เชกเซเชเชพ เชธเซเชเซเชฐเซเช เชกเชฟเชธเซเช เชเซเชตเชพ เช เชจเซเชกเซเชธ เชชเชฐ เชธเซเชฅเชฟเชค เชนเซเชฏ. เชเชพเชฐเชฃ เชธเชฐเชณ เชเซ: เช เชฐเซเชคเซ เชฐเซเช เชเชเชจเซเชเซเชจเซเช เชเชพเชฐเซเชฏ เชเชชเซเชฒเชฟเชเซเชถเชจเชจเซ เช เชธเชฐ เชเชฐเชถเซ เชจเชนเซเช.
เชคเซเชฅเซ, เชซเชพเชเชฒ เชเซเชฒเซ rook-ceph/values.yaml
เชคเชฎเชพเชฐเชพ เชฎเชจเชชเชธเชเชฆ เชธเชเชชเชพเชฆเช เชธเชพเชฅเซ เช
เชจเซ เช
เชเชคเซ เชจเซเชเซเชจเซ เชฌเซเชฒเซเช เชเชฎเซเชฐเซ:
discover:
toleration: NoExecute
tolerationKey: node-role/storage
agent:
toleration: NoExecute
tolerationKey: node-role/storage
mountSecurityMode: Any
เชกเซเชเชพ เชธเซเชเซเชฐเซเช เชฎเชพเชเซ เชเชฐเชเซเชทเชฟเชค เชฆเชฐเซเช เชจเซเชก เชฎเชพเชเซ, เช เชจเซเชฐเซเชช เชเชฒเชเช เชเชฎเซเชฐเซ:
$ kubectl taint node ${NODE_NAME} node-role/storage="":NoExecute
เชชเชเซ เชเชฆเซเชถ เชธเชพเชฅเซ เชนเซเชฒเซเชฎ เชเชพเชฐเซเช เชเชจเซเชธเซเชเซเชฒ เชเชฐเซ:
$ helm install --namespace ${ROOK_NAMESPACE} ./rook-ceph
เชนเชตเซ เชคเชฎเชพเชฐเซ เชเซเชฒเชธเซเชเชฐ เชฌเชจเชพเชตเชตเชพเชจเซ เช
เชจเซ เชธเซเชฅเชพเชจเชจเซ เชเชฒเซเชฒเซเช เชเชฐเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ
apiVersion: ceph.rook.io/v1
kind: CephCluster
metadata:
clusterName: "ceph"
finalizers:
- cephcluster.ceph.rook.io
generation: 1
name: rook-ceph
spec:
cephVersion:
image: ceph/ceph:v13
dashboard:
enabled: true
dataDirHostPath: /var/lib/rook/osd
mon:
allowMultiplePerNode: false
count: 3
network:
hostNetwork: true
rbdMirroring:
workers: 1
placement:
all:
tolerations:
- key: node-role/storage
operator: Exists
storage:
useAllNodes: false
useAllDevices: false
config:
osdsPerDevice: "1"
storeType: filestore
resources:
limits:
memory: "1024Mi"
requests:
memory: "1024Mi"
nodes:
- name: host-1
directories:
- path: "/mnt/osd"
- name: host-2
directories:
- path: "/mnt/osd"
- name: host-3
directories:
- path: "/mnt/osd"
Ceph เชธเซเชฅเชฟเชคเชฟ เชคเชชเชพเชธเซ เชฐเชนเซเชฏเซเช เชเซ - เชเซเชตเชพเชจเซ เช
เชชเซเชเซเชทเชพ HEALTH_OK
:
$ kubectl -n ${ROOK_NAMESPACE} exec $(kubectl -n ${ROOK_NAMESPACE} get pod -l app=rook-ceph-operator -o name -o jsonpath='{.items[0].metadata.name}') -- ceph -s
เชคเซ เช เชธเชฎเชฏเซ, เชเชพเชฒเซ เชคเชชเชพเชธ เชเชฐเซเช เชเซ เชเซเชฒเชพเชฏเชเช เชเชชเซเชฒเชฟเชเซเชถเชจ เชธเชพเชฅเซเชจเชพ เชชเซเชกเซเชธ Ceph เชฎเชพเชเซ เชเชฐเชเซเชทเชฟเชค เชจเซเชกเซเชธ เชชเชฐ เชธเชฎเชพเชชเซเชค เชฅเชคเชพ เชจเชฅเซ:
$ kubectl -n ${APPLICATION_NAMESPACE} get pods -o custom-columns=NAME:.metadata.name,NODE:.spec.nodeName
เชตเชงเซเชฎเชพเช, เชตเชงเชพเชฐเชพเชจเชพ เชเชเชเซเชจเซ เชเชเซเชเชพ เชชเซเชฐเชฎเชพเชฃเซ เชเซเช เชตเซ เชถเชเชพเชฏ เชเซ. เชคเซเชฎเชจเชพ เชตเชฟเชถเซ เชตเชงเซ เชตเชฟเชเชคเซ เชเชฎเชพเช เชธเซเชเชตเชตเชพเชฎเชพเช เชเชตเซ เชเซ
เชฐเซเช เช เชจเซ เชนเซเชเซเชธ: เชถเซเช เชฐเซเช เชฆเชฐเซเช เชตเชธเซเชคเซ เชฎเชพเชเซ เชชเซเชฐเชคเซเช เชเซ?
เชเซเชฎ เชคเชฎเซ เชเซเช เชถเชเซ เชเซ, เชฐเซเชเชจเซ เชตเชฟเชเชพเชธ เชชเซเชฐเชเซเชถเชฎเชพเช เชเซ. เชชเชฐเชเชคเซ เชนเชเซ เชชเชฃ เชเชตเซ เชธเชฎเชธเซเชฏเชพเช เชเซ เชเซ เช เชฎเชจเซ เชธเซเชซเชจเชพ เชฎเซเชจเซเชฏเซเช เชฒ เชเซเช เชตเชฃเซเชจเซ เชธเชเชชเซเชฐเซเชฃเชชเชฃเซ เชเซเชกเซ เชฆเซเชตเชพเชจเซ เชฎเชเชเซเชฐเซ เชเชชเชคเซ เชจเชฅเซ:
- เชเซเช เชฐเซเช เชกเซเชฐเชพเชเชตเชฐ เชจเชฅเซ
เชเชฐเซ เชถเชเชคเชพ เชจเชฅเซ เชฎเชพเชเชจเซเชเซเชก เชฌเซเชฒเซเชเซเชธเชจเชพ เชเชชเชฏเซเช เชชเชฐ เชจเชฟเชเชพเชธ เชฎเซเชเซเชฐเชฟเชเซเชธ, เชเซ เช เชฎเชจเซ เชฆเซเชเชฐเซเชเชฅเซ เชตเชเชเชฟเชค เชฐเชพเชเซ เชเซ. - เชซเซเชฒเซเชเซเชธเชตเซเชฒเซเชฏเซเชฎ เช
เชจเซ CSI
เชเซเชตเซ เชฐเซเชคเซ เชเชฌเชฐ เชจเชฅเซ เชตเซเชฒเซเชฏเซเชฎเชจเซเช เชเชฆ เชฌเชฆเชฒเซ (เชธเชฎเชพเชจ เชเชฐเชฌเซเชกเซเชจเซ เชตเชฟเชฐเซเชฆเซเชง), เชคเซเชฅเซ เชฐเซเช เชเชชเชฏเซเชเซ (เช เชจเซ เชเซเชฏเชพเชฐเซเช เชตเชฟเชตเซเชเชจเชพเชคเซเชฎเช เชฐเซเชคเซ เชเชฐเซเชฐเซ!) เชธเชพเชงเชจเชฅเซ เชตเชเชเชฟเชค เชฐเชนเซ เชเซ. - เชฐเซเช เชนเชเซ เชชเชฃ เชจเชฟเชฏเชฎเชฟเชค เชเซเชซเชจเซ เชเซเชฎ เชฒเชตเชเซเช เชจเชฅเซ. เชเซ เชเชชเชฃเซ เชธเซเชซเชเชซเชเชธ เชฎเซเชเชพเชกเซเชเชพเชจเซ SSD เชชเชฐ เชธเชเชเซเชฐเชนเชฟเชค เชเชฐเชตเชพ เชฎเชพเชเซ เชชเซเชฒเชจเซ เชเซเช เชตเชตเชพ เชฎเชพเชเชเซเช เชเซเช, เช เชจเซ เชกเซเชเชพ เชชเซเชคเซ HDD เชชเชฐ เชธเชเชเซเชฐเชนเชฟเชค เชฅเชพเชฏ เชเซ, เชคเซ เช เชฎเชพเชฐเซ CRUSH เชจเชเชถเชพเชฎเชพเช เชฎเซเชจเซเชฏเซเช เชฒเซ เชเชชเชเชฐเชฃเซเชจเชพ เช เชฒเช เชเซเชฅเซเชจเซ เชจเซเชเชงเชฃเซ เชเชฐเชตเชพเชจเซ เชเชฐเซเชฐ เชชเชกเชถเซ.
- เชฐเซเช-เชธเซเชซ-เชเชชเชฐเซเชเชฐเชจเซ เชธเซเชฅเชฟเชฐ เชฎเชพเชจเชตเชพเชฎเชพเช เชเชตเซ เชเซ เชคเซ เชนเชเซเชเชค เชนเซเชตเชพ เชเชคเชพเช, เชนเชพเชฒเชฎเชพเช เชธเชเชธเซเชเชฐเชฃ 13 เชฅเซ 14 เชธเซเชงเซ Ceph เชจเซ เช เชชเชเซเชฐเซเชก เชเชฐเชคเซ เชตเชเชคเซ เชเซเชเชฒเซเช เชธเชฎเชธเซเชฏเชพเช เชเซ.
เชคเชพเชฐเชฃเซ
"เช เชคเซเชฏเชพเชฐเซ เชฐเซเช เชฌเชนเชพเชฐเชจเซ เชฆเซเชจเชฟเชฏเชพเชฅเซ เชชเซเชฏเชพเชฆเชพเช เชฆเซเชตเชพเชฐเชพ เชฌเชเชง เชเซ, เชชเชฐเชเชคเซ เช เชฎเซ เชฎเชพเชจเซเช เชเซเช เชเซ เชเช เชฆเชฟเชตเชธ เชคเซ เชฐเชฎเชคเชฎเชพเช เชจเชฟเชฐเซเชฃเชพเชฏเช เชญเซเชฎเชฟเชเชพ เชญเชเชตเชถเซ!" (เช เชฒเซเช เชฎเชพเชเซ เชเชพเชธ เชถเซเชงเชพเชฏเซเชฒ เช เชตเชคเชฐเชฃ)
เชฐเซเช เชชเซเชฐเซเชเซเชเซเชเซ เชจเชฟเชเชถเชเชเชชเชฃเซ เช เชฎเชพเชฐเซเช เชนเซเชฆเชฏ เชเซเชคเซ เชฒเซเชงเซเช เชเซ - เช เชฎเซ เชฎเชพเชจเซเช เชเซเช เชเซ [เชคเซเชจเชพ เชคเชฎเชพเชฎ เชเซเชฃเชฆเซเชท เชธเชพเชฅเซ] เชคเซ เชเซเชเซเชเชธเชชเชฃเซ เชคเชฎเชพเชฐเชพ เชงเซเชฏเชพเชจเชจเซ เชชเชพเชคเซเชฐ เชเซ.
เช
เชฎเชพเชฐเซ เชญเชพเชตเชฟ เชฏเซเชเชจเชพเช เชฐเซเช-เชธเซเชซ เชฎเชพเชเซ เชฎเซเชกเซเชฏเซเชฒ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชเซ เชเชเชณเซ เชเซ
PS
เช เชฎเชพเชฐเชพ เชฌเซเชฒเซเช เชชเชฐ เชชเชฃ เชตเชพเชเชเซ:
- ยซ
เชฐเซเช - เชเซเชฌเชฐเชจเซเชเซเชธ เชฎเชพเชเซ "เชธเซเชต-เชธเซเชตเชพ" เชกเซเชเชพ เชตเซเชฐเชนเชพเชเชธ ยป; - ยซ
Ceph เชชเชฐ เชเชงเชพเชฐเชฟเชค เชเซเชฌเชฐเชจเซเชเซเชธเชฎเชพเช เชเซเชเชตเชพเช เชธเชพเชฅเซ เชธเชคเชค เชธเซเชเซเชฐเซเช เชฌเชจเชพเชตเชตเซเช ยป; - ยซ
เชกเซเชเชพเชฌเซเชธเซเชธ เช เชจเซ เชเซเชฌเชฐเชจเซเชเซเชธ (เชธเชฎเซเชเซเชทเชพ เช เชจเซ เชตเชฟเชกเชฟเชฏเซ เชฐเชฟเชชเซเชฐเซเช) ยป; - ยซ
เชถเซเชฒ-เชเชชเชฐเซเชเชฐเชจเซ เชชเชฐเชฟเชเชฏ: เชเซเชฌเชฐเชจเซเชเซเชธ เชฎเชพเชเซ เชเชชเชฐเซเชเชฐ เชฌเชจเชพเชตเชตเชพเชจเซเช เชธเชฐเชณ เชฌเชจเซเชฏเซเช เชเซ ยป; - ยซ
เชเซเชฌเชฐเชจเซเชเซเชธ เชฎเชพเชเซ เชเชชเชฐเซเชเชฐเซเชธ: เชธเซเชเซเชเชซเซเชฒ เชเชชเซเชฒเชฟเชเซเชถเชจ เชเซเชตเซ เชฐเซเชคเซ เชเชฒเชพเชตเชตเซ ยป.
เชธเซเชฐเซเชธ: www.habr.com