Ceph-แƒ–แƒ” แƒ“แƒแƒคแƒฃแƒซแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒจแƒ”แƒœแƒแƒฎแƒ•แƒ˜แƒก แƒ™แƒฃแƒ‘แƒ”แƒ แƒœแƒ”แƒขแƒ˜แƒก แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ—แƒแƒœ แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒžแƒ แƒแƒฅแƒขแƒ˜แƒ™แƒฃแƒšแƒ˜ แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜

แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ˜แƒก แƒจแƒ”แƒœแƒแƒฎแƒ•แƒ˜แƒก แƒ˜แƒœแƒขแƒ”แƒ แƒคแƒ”แƒ˜แƒกแƒ˜ (CSI) แƒแƒ แƒ˜แƒก แƒ”แƒ แƒ—แƒ˜แƒแƒœแƒ˜ แƒ˜แƒœแƒขแƒ”แƒ แƒคแƒ”แƒ˜แƒกแƒ˜ Kubernetes-แƒกแƒ แƒ“แƒ แƒจแƒ”แƒœแƒแƒฎแƒ•แƒ˜แƒก แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ”แƒ‘แƒก แƒจแƒแƒ แƒ˜แƒก. แƒ›แƒแƒ™แƒšแƒ”แƒ“ แƒฃแƒ™แƒ•แƒ” แƒ•แƒ˜แƒกแƒแƒฃแƒ‘แƒ แƒ”แƒ— แƒ’แƒแƒœแƒฃแƒชแƒฎแƒแƒ“แƒแƒ“แƒ แƒ“แƒฆแƒ”แƒก แƒฉแƒ•แƒ”แƒœ แƒฃแƒคแƒ แƒ แƒ“แƒ”แƒขแƒแƒšแƒฃแƒ แƒแƒ“ แƒ’แƒแƒœแƒ•แƒ˜แƒฎแƒ˜แƒšแƒแƒ•แƒ— CSI-แƒกแƒ แƒ“แƒ Ceph-แƒ˜แƒก แƒ™แƒแƒ›แƒ‘แƒ˜แƒœแƒแƒชแƒ˜แƒแƒก: แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ— แƒ แƒแƒ’แƒแƒ  แƒ“แƒแƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ— Ceph แƒกแƒแƒชแƒแƒ•แƒ˜ แƒ™แƒฃแƒ‘แƒ”แƒ แƒœแƒ”แƒขแƒ˜แƒก แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒแƒ›แƒ“แƒ”.
แƒกแƒขแƒแƒขแƒ˜แƒแƒจแƒ˜ แƒ›แƒแƒชแƒ”แƒ›แƒฃแƒšแƒ˜แƒ แƒ แƒ”แƒแƒšแƒฃแƒ แƒ˜, แƒ—แƒฃแƒ›แƒชแƒ แƒแƒ“แƒœแƒแƒ• แƒ’แƒแƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ”แƒ‘แƒ˜ แƒแƒฆแƒฅแƒ›แƒ˜แƒก แƒ’แƒแƒกแƒแƒแƒ“แƒ•แƒ˜แƒšแƒ”แƒ‘แƒšแƒแƒ“. แƒฉแƒ•แƒ”แƒœ แƒแƒ  แƒ’แƒแƒœแƒ•แƒ˜แƒฎแƒ˜แƒšแƒแƒ•แƒ— Ceph แƒ“แƒ Kubernetes แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒแƒก แƒ“แƒ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒแƒก.

แƒ’แƒแƒ˜แƒœแƒขแƒ”แƒ แƒ”แƒกแƒ”แƒ‘แƒ— แƒ แƒแƒ’แƒแƒ  แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก?

Ceph-แƒ–แƒ” แƒ“แƒแƒคแƒฃแƒซแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒจแƒ”แƒœแƒแƒฎแƒ•แƒ˜แƒก แƒ™แƒฃแƒ‘แƒ”แƒ แƒœแƒ”แƒขแƒ˜แƒก แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ—แƒแƒœ แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒžแƒ แƒแƒฅแƒขแƒ˜แƒ™แƒฃแƒšแƒ˜ แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜

แƒแƒกแƒ” แƒ แƒแƒ›, แƒ—แƒฅแƒ•แƒ”แƒœ แƒ’แƒแƒฅแƒ•แƒ— Kubernetes แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ˜ แƒ—แƒฅแƒ•แƒ”แƒœแƒก แƒฎแƒ”แƒšแƒ–แƒ”, แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒฃแƒšแƒ˜, แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒ™แƒฃแƒ‘แƒ”แƒกแƒžแƒ แƒ”แƒ˜. แƒ˜แƒฅแƒ•แƒ” แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก Ceph แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ˜ - แƒ—แƒฅแƒ•แƒ”แƒœ แƒแƒกแƒ”แƒ•แƒ” แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ“แƒแƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒแƒ—, แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒแƒ›แƒ˜แƒ— แƒกแƒแƒ—แƒแƒ›แƒแƒจแƒ แƒฌแƒ˜แƒ’แƒœแƒ”แƒ‘แƒ˜แƒก แƒœแƒแƒ™แƒ แƒ”แƒ‘แƒ˜. แƒ˜แƒ›แƒ”แƒ“แƒ˜แƒ แƒแƒ  แƒแƒ แƒ˜แƒก แƒกแƒแƒญแƒ˜แƒ แƒ แƒ˜แƒ›แƒ˜แƒก แƒฎแƒกแƒ”แƒœแƒ”แƒ‘แƒ, แƒ แƒแƒ› แƒ›แƒแƒ— แƒจแƒแƒ แƒ˜แƒก แƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒฃแƒœแƒ“แƒ แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒ“แƒ”แƒก แƒฅแƒกแƒ”แƒšแƒ˜ แƒ›แƒ˜แƒœแƒ˜แƒ›แƒฃแƒ› 10 แƒ’แƒ‘แƒ˜แƒข/แƒฌแƒ› แƒกแƒ˜แƒฉแƒฅแƒแƒ แƒ˜แƒ—.

แƒ—แƒฃ แƒ”แƒก แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒ’แƒแƒฅแƒ•แƒก, แƒฌแƒแƒ•แƒ˜แƒ“แƒ”แƒ—!

แƒžแƒ˜แƒ แƒ•แƒ”แƒš แƒ แƒ˜แƒ’แƒจแƒ˜, แƒ›แƒแƒ“แƒ˜แƒ— แƒ’แƒแƒ“แƒแƒ•แƒ˜แƒ“แƒ”แƒ— Ceph-แƒ˜แƒก แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒฃแƒš แƒ™แƒ•แƒแƒœแƒซแƒจแƒ˜ แƒ“แƒ แƒจแƒ”แƒ•แƒแƒ›แƒแƒฌแƒ›แƒแƒ—, แƒ แƒแƒ› แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒฌแƒ”แƒกแƒ แƒ˜แƒ’แƒจแƒ˜แƒ:

ceph health
ceph -s

แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜, แƒฉแƒ•แƒ”แƒœ แƒ“แƒแƒฃแƒงแƒแƒ•แƒœแƒ”แƒ‘แƒšแƒ˜แƒ• แƒจแƒ”แƒ•แƒฅแƒ›แƒœแƒ˜แƒ— แƒแƒฃแƒ–แƒก RBD แƒ“แƒ˜แƒกแƒ™แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก:

ceph osd pool create kube 32
ceph osd pool application enable kube rbd

แƒ’แƒแƒ“แƒแƒ•แƒ˜แƒ“แƒ”แƒ— แƒ™แƒฃแƒ‘แƒ”แƒ แƒœแƒ”แƒขแƒ˜แƒก แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ–แƒ”. แƒ˜แƒฅ, แƒžแƒ˜แƒ แƒ•แƒ”แƒš แƒ แƒ˜แƒ’แƒจแƒ˜, แƒฉแƒ•แƒ”แƒœ แƒ“แƒแƒ•แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ— Ceph CSI แƒ“แƒ แƒแƒ˜แƒ•แƒ”แƒ แƒก RBD-แƒกแƒ—แƒ•แƒ˜แƒก. แƒฉแƒ•แƒ”แƒœ แƒ“แƒแƒ•แƒแƒ›แƒแƒœแƒขแƒแƒŸแƒ”แƒ‘แƒ—, แƒ แƒแƒ’แƒแƒ แƒช แƒ›แƒแƒกแƒแƒšแƒแƒ“แƒœแƒ”แƒšแƒ˜แƒ, Helm-แƒ˜แƒก แƒ›แƒ”แƒจแƒ•แƒ”แƒแƒ‘แƒ˜แƒ—.
แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ— แƒกแƒแƒชแƒแƒ•แƒก แƒ“แƒ˜แƒแƒ’แƒ แƒแƒ›แƒ˜แƒ—, แƒ•แƒ˜แƒฆแƒ”แƒ‘แƒ— แƒชแƒ•แƒšแƒแƒ“แƒ”แƒ‘แƒ˜แƒก แƒ™แƒแƒ›แƒžแƒšแƒ”แƒฅแƒขแƒก ceph-csi-rbd แƒ“แƒ˜แƒแƒ’แƒ แƒแƒ›แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก:

helm repo add ceph-csi https://ceph.github.io/csi-charts
helm inspect values ceph-csi/ceph-csi-rbd > cephrbd.yml

แƒแƒฎแƒšแƒ แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒจแƒ”แƒแƒ•แƒกแƒแƒ— cephrbd.yml แƒคแƒแƒ˜แƒšแƒ˜. แƒแƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก แƒ’แƒแƒแƒ แƒ™แƒ•แƒ˜แƒ”แƒ— แƒ™แƒแƒกแƒ”แƒขแƒฃแƒ แƒ˜ ID แƒ“แƒ แƒ›แƒแƒœแƒ˜แƒขแƒแƒ แƒ”แƒ‘แƒ˜แƒก IP แƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ”แƒ‘แƒ˜ Ceph-แƒจแƒ˜:

ceph fsid  # ั‚ะฐะบ ะผั‹ ัƒะทะฝะฐะตะผ clusterID
ceph mon dump  # ะฐ ั‚ะฐะบ ัƒะฒะธะดะธะผ IP-ะฐะดั€ะตัะฐ ะผะพะฝะธั‚ะพั€ะพะฒ

แƒ›แƒ˜แƒฆแƒ”แƒ‘แƒฃแƒš แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ”แƒ‘แƒก แƒจแƒ”แƒ•แƒ˜แƒงแƒ•แƒแƒœแƒ— cephrbd.yml แƒคแƒแƒ˜แƒšแƒจแƒ˜. แƒแƒ› แƒ’แƒ–แƒแƒ–แƒ” แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒซแƒšแƒ”แƒ•แƒ— แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒจแƒ”แƒฅแƒ›แƒœแƒแƒก PSP แƒžแƒแƒšแƒ˜แƒขแƒ˜แƒ™แƒ (Pod Security Policies). แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜ แƒกแƒ”แƒฅแƒชแƒ˜แƒ”แƒ‘แƒจแƒ˜ แƒ™แƒ•แƒแƒœแƒซแƒ˜แƒก แƒ“แƒแƒœแƒแƒ›แƒแƒขแƒ˜ ะธ แƒ›แƒ˜แƒ›แƒฌแƒแƒ“แƒ”แƒ‘แƒ”แƒšแƒ˜ แƒฃแƒ™แƒ•แƒ” แƒคแƒแƒ˜แƒšแƒจแƒ˜, แƒ›แƒแƒ—แƒ˜ แƒ’แƒแƒ›แƒแƒกแƒฌแƒแƒ แƒ”แƒ‘แƒ แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ, แƒ แƒแƒ’แƒแƒ แƒช แƒœแƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ˜แƒ แƒฅแƒ•แƒ”แƒ›แƒแƒ—:

csiConfig:
  - clusterID: "bcd0d202-fba8-4352-b25d-75c89258d5ab"
    monitors:
      - "v2:172.18.8.5:3300/0,v1:172.18.8.5:6789/0"
      - "v2:172.18.8.6:3300/0,v1:172.18.8.6:6789/0"
      - "v2:172.18.8.7:3300/0,v1:172.18.8.7:6789/0"

nodeplugin:
  podSecurityPolicy:
    enabled: true

provisioner:
  podSecurityPolicy:
    enabled: true

แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜, แƒฉแƒ•แƒ”แƒœแƒ—แƒ•แƒ˜แƒก แƒ แƒฉแƒ”แƒ‘แƒ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ“แƒ˜แƒแƒ’แƒ แƒแƒ›แƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ Kubernetes แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒจแƒ˜.

helm upgrade -i ceph-csi-rbd ceph-csi/ceph-csi-rbd -f cephrbd.yml -n ceph-csi-rbd --create-namespace

แƒจแƒ”แƒกแƒแƒœแƒ˜แƒจแƒœแƒแƒ•แƒ˜แƒ, RBD แƒ›แƒซแƒฆแƒแƒšแƒ˜ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก!
แƒ›แƒแƒ“แƒ˜แƒ— แƒจแƒ”แƒ•แƒฅแƒ›แƒœแƒแƒ— แƒแƒฎแƒแƒšแƒ˜ StorageClass Kubernetes-แƒจแƒ˜. แƒ”แƒก แƒ™แƒ˜แƒ“แƒ”แƒ• แƒ”แƒ แƒ—แƒฎแƒ”แƒš แƒ›แƒแƒ˜แƒ—แƒฎแƒแƒ•แƒก แƒชแƒ”แƒคแƒ—แƒแƒœ แƒชแƒแƒขแƒ แƒจแƒ”แƒฎแƒ”แƒ‘แƒแƒก.

แƒฉแƒ•แƒ”แƒœ แƒ•แƒฅแƒ›แƒœแƒ˜แƒ— แƒแƒฎแƒแƒš แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒก Ceph-แƒจแƒ˜ แƒ“แƒ แƒ•แƒแƒซแƒšแƒ”แƒ•แƒ— แƒฃแƒคแƒšแƒ”แƒ‘แƒแƒก แƒ“แƒแƒฌแƒ”แƒ แƒแƒก แƒแƒฃแƒ–แƒ–แƒ” แƒ™แƒฃแƒ‘แƒ˜:

ceph auth get-or-create client.rbdkube mon 'profile rbd' osd 'profile rbd pool=kube'

แƒแƒฎแƒšแƒ แƒ•แƒœแƒแƒฎแƒแƒ—, แƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒก แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒ˜ แƒฏแƒ”แƒ  แƒ™แƒ˜แƒ“แƒ”แƒ• แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก:

ceph auth get-key client.rbdkube

แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ แƒ’แƒแƒ›แƒแƒ•แƒ แƒ›แƒกแƒ’แƒแƒ•แƒกแƒ˜ แƒ แƒแƒ›:

AQCO9NJbhYipKRAAMqZsnqqS/T8OYQX20xIa9A==

แƒ›แƒแƒ“แƒ˜แƒ— แƒ“แƒแƒ•แƒแƒ›แƒแƒขแƒแƒ— แƒ”แƒก แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ Secret-แƒก Kubernetes แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒจแƒ˜ - แƒกแƒแƒ“แƒแƒช แƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก แƒžแƒแƒ แƒแƒšแƒ˜:

---
apiVersion: v1
kind: Secret
metadata:
  name: csi-rbd-secret
  namespace: ceph-csi-rbd
stringData:
  # ะ—ะฝะฐั‡ะตะฝะธั ะบะปัŽั‡ะตะน ัะพะพั‚ะฒะตั‚ัั‚ะฒัƒัŽั‚ ะธะผะตะฝะธ ะฟะพะปัŒะทะพะฒะฐั‚ะตะปั ะธ ะตะณะพ ะบะปัŽั‡ัƒ, ะบะฐะบ ัƒะบะฐะทะฐะฝะพ ะฒ
  # ะบะปะฐัั‚ะตั€ะต Ceph. ID ัŽะทะตั€ะฐ ะดะพะปะถะตะฝ ะธะผะตั‚ัŒ ะดะพัั‚ัƒะฟ ะบ ะฟัƒะปัƒ,
  # ัƒะบะฐะทะฐะฝะฝะพะผัƒ ะฒ storage class
  userID: rbdkube
  userKey: <user-key>

แƒ“แƒ แƒฉแƒ•แƒ”แƒœ แƒ•แƒฅแƒ›แƒœแƒ˜แƒ— แƒฉแƒ•แƒ”แƒœแƒก แƒกแƒแƒ˜แƒ“แƒฃแƒ›แƒšแƒแƒก:

kubectl apply -f secret.yaml

แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜, แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ StorageClass แƒ›แƒแƒœแƒ˜แƒคแƒ”แƒกแƒขแƒ˜ แƒ›แƒกแƒ’แƒแƒ•แƒกแƒ˜ แƒ แƒแƒ›:

---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
   name: csi-rbd-sc
provisioner: rbd.csi.ceph.com
parameters:
   clusterID: <cluster-id>
   pool: kube

   imageFeatures: layering

   # ะญั‚ะธ ัะตะบั€ะตั‚ั‹ ะดะพะปะถะฝั‹ ัะพะดะตั€ะถะฐั‚ัŒ ะดะฐะฝะฝั‹ะต ะดะปั ะฐะฒั‚ะพั€ะธะทะฐั†ะธะธ
   # ะฒ ะฒะฐัˆ ะฟัƒะป.
   csi.storage.k8s.io/provisioner-secret-name: csi-rbd-secret
   csi.storage.k8s.io/provisioner-secret-namespace: ceph-csi-rbd
   csi.storage.k8s.io/controller-expand-secret-name: csi-rbd-secret
   csi.storage.k8s.io/controller-expand-secret-namespace: ceph-csi-rbd
   csi.storage.k8s.io/node-stage-secret-name: csi-rbd-secret
   csi.storage.k8s.io/node-stage-secret-namespace: ceph-csi-rbd

   csi.storage.k8s.io/fstype: ext4

reclaimPolicy: Delete
allowVolumeExpansion: true
mountOptions:
  - discard

แƒกแƒแƒญแƒ˜แƒ แƒแƒ แƒจแƒ”แƒ•แƒกแƒ”แƒ‘แƒ แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ˜แƒก ID, แƒ แƒแƒช แƒ’แƒฃแƒœแƒ“แƒ›แƒ แƒฃแƒ™แƒ•แƒ” แƒ•แƒ˜แƒกแƒฌแƒแƒ•แƒšแƒ”แƒ— แƒชแƒ”แƒค แƒคแƒกแƒ˜แƒ“แƒ˜แƒ“แƒ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ— แƒ”แƒก แƒ›แƒแƒœแƒ˜แƒคแƒ”แƒกแƒขแƒ˜ Kubernetes แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ–แƒ”:

kubectl apply -f storageclass.yaml

แƒ˜แƒ›แƒ˜แƒก แƒจแƒ”แƒกแƒแƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒšแƒแƒ“, แƒ—แƒฃ แƒ แƒแƒ’แƒแƒ  แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ”แƒ‘แƒ˜ แƒ”แƒ แƒ—แƒแƒ“, แƒ›แƒแƒ“แƒ˜แƒ— แƒจแƒ”แƒ•แƒฅแƒ›แƒœแƒแƒ— แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ PVC (แƒ›แƒฃแƒ“แƒ›แƒ˜แƒ•แƒ˜ แƒ›แƒแƒชแƒฃแƒšแƒแƒ‘แƒ˜แƒก แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ):

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: rbd-pvc
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
  storageClassName: csi-rbd-sc

แƒ›แƒแƒ“แƒ˜แƒ— แƒ“แƒแƒฃแƒงแƒแƒ•แƒœแƒ”แƒ‘แƒšแƒ˜แƒ• แƒ•แƒœแƒแƒฎแƒแƒ—, แƒ แƒแƒ’แƒแƒ  แƒจแƒ”แƒฅแƒ›แƒœแƒ Kubernetes-แƒ›แƒ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ˜แƒšแƒ˜ แƒขแƒแƒ›แƒ˜ Ceph-แƒจแƒ˜:

kubectl get pvc
kubectl get pv

แƒ แƒแƒ’แƒแƒ แƒช แƒฉแƒแƒœแƒก, แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒ›แƒจแƒ•แƒ”แƒœแƒ˜แƒ”แƒ แƒ˜แƒ! แƒ แƒแƒก แƒฐแƒ’แƒแƒ•แƒก แƒ”แƒก แƒชแƒ”แƒคแƒ˜แƒก แƒ›แƒฎแƒแƒ แƒ”แƒก?
แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒฆแƒ”แƒ‘แƒ— แƒแƒฃแƒ–แƒจแƒ˜ แƒแƒ แƒกแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒขแƒแƒ›แƒ”แƒ‘แƒ˜แƒก แƒฉแƒแƒ›แƒแƒœแƒแƒ—แƒ•แƒแƒšแƒก แƒ“แƒ แƒ•แƒฃแƒงแƒฃแƒ แƒ”แƒ‘แƒ— แƒ˜แƒœแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒแƒก แƒฉแƒ•แƒ”แƒœแƒ˜ แƒ›แƒแƒชแƒฃแƒšแƒแƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘:

rbd ls -p kube
rbd -p kube info csi-vol-eb3d257d-8c6c-11ea-bff5-6235e7640653  # ั‚ัƒั‚, ะบะพะฝะตั‡ะฝะพ ะถะต, ะฑัƒะดะตั‚ ะดั€ัƒะณะพะน ID ั‚ะพะผะฐ, ะบะพั‚ะพั€ั‹ะน ะฒั‹ะดะฐะปะฐ ะฟั€ะตะดั‹ะดัƒั‰ะฐั ะบะพะผะฐะฝะดะฐ

แƒแƒฎแƒšแƒ แƒ•แƒœแƒแƒฎแƒแƒ—, แƒ แƒแƒ’แƒแƒ  แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก RBD แƒ›แƒแƒชแƒฃแƒšแƒแƒ‘แƒ˜แƒก แƒ–แƒแƒ›แƒ˜แƒก แƒจแƒ”แƒชแƒ•แƒšแƒ.
แƒจแƒ”แƒชแƒ•แƒแƒšแƒ”แƒ— แƒ›แƒแƒชแƒฃแƒšแƒแƒ‘แƒ˜แƒก แƒ–แƒแƒ›แƒ pvc.yaml แƒ›แƒแƒœแƒ˜แƒคแƒ”แƒกแƒขแƒจแƒ˜ 2Gi-แƒ–แƒ” แƒ“แƒ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ— แƒ˜แƒ’แƒ˜:

kubectl apply -f pvc.yaml

แƒ“แƒแƒ•แƒ”แƒšแƒแƒ“แƒแƒ— แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒซแƒแƒšแƒแƒจแƒ˜ แƒจแƒ”แƒกแƒ•แƒšแƒแƒก แƒ“แƒ แƒ™แƒ˜แƒ“แƒ”แƒ• แƒ”แƒ แƒ—แƒฎแƒ”แƒš แƒ’แƒแƒ“แƒแƒ•แƒฎแƒ”แƒ“แƒแƒ— แƒ›แƒแƒชแƒฃแƒšแƒแƒ‘แƒ˜แƒก แƒ–แƒแƒ›แƒแƒก.

rbd -p kube info csi-vol-eb3d257d-8c6c-11ea-bff5-6235e7640653

kubectl get pv
kubectl get pvc

แƒฉแƒ•แƒ”แƒœ แƒ•แƒฎแƒ”แƒ“แƒแƒ•แƒ—, แƒ แƒแƒ› PVC- แƒ˜แƒก แƒ–แƒแƒ›แƒ แƒแƒ  แƒจแƒ”แƒชแƒ•แƒšแƒ˜แƒšแƒ. แƒ˜แƒ›แƒ˜แƒก แƒ’แƒแƒกแƒแƒ แƒ™แƒ•แƒ”แƒ•แƒแƒ“, แƒ—แƒฃ แƒ แƒแƒขแƒแƒ›, แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ›แƒ˜แƒ›แƒแƒ แƒ—แƒแƒ— Kubernetes-แƒก PVC-แƒ˜แƒก YAML แƒแƒฆแƒฌแƒ”แƒ แƒ˜แƒšแƒแƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก:

kubectl get pvc rbd-pvc -o yaml

แƒแƒ˜ แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ:

แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ: แƒ”แƒšแƒแƒ“แƒ”แƒ‘แƒ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก (แƒฎแƒ”แƒšแƒแƒฎแƒšแƒ) แƒ“แƒแƒฌแƒงแƒ”แƒ‘แƒแƒก pod, แƒ แƒแƒ—แƒ แƒ“แƒแƒแƒกแƒ แƒฃแƒšแƒแƒก แƒคแƒแƒ˜แƒšแƒฃแƒ แƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒ›แƒแƒชแƒฃแƒšแƒแƒ‘แƒ˜แƒก แƒ–แƒแƒ›แƒ˜แƒก แƒจแƒ”แƒชแƒ•แƒšแƒ แƒ™แƒ•แƒแƒœแƒซแƒ–แƒ”. แƒขแƒ˜แƒžแƒ˜: FileSystemResizePending

แƒแƒœแƒฃ, แƒ“แƒ˜แƒกแƒ™แƒ˜ แƒ’แƒแƒ˜แƒ–แƒแƒ แƒ“แƒ, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ›แƒแƒกแƒ–แƒ” แƒแƒ แƒกแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒคแƒแƒ˜แƒšแƒฃแƒ แƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ แƒแƒ แƒ.
แƒคแƒแƒ˜แƒšแƒฃแƒ แƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒ’แƒแƒกแƒแƒ–แƒ แƒ“แƒ”แƒšแƒแƒ“, แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ“แƒแƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒแƒ— แƒ›แƒแƒชแƒฃแƒšแƒแƒ‘แƒ. แƒฉแƒ•แƒ”แƒœแƒก แƒฅแƒ•แƒ”แƒงแƒแƒœแƒแƒจแƒ˜ แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒšแƒ˜ PVC/PV แƒแƒ›แƒŸแƒแƒ›แƒแƒ“ แƒแƒ แƒแƒœแƒแƒ˜แƒ แƒแƒ“ แƒแƒ  แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ.

แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒจแƒ”แƒ•แƒฅแƒ›แƒœแƒแƒ— แƒกแƒแƒขแƒ”แƒกแƒขแƒ Pod, แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“ แƒแƒกแƒ”:

---
apiVersion: v1
kind: Pod
metadata:
  name: csi-rbd-demo-pod
spec:
  containers:
    - name: web-server
      image: nginx:1.17.6
      volumeMounts:
        - name: mypvc
          mountPath: /data
  volumes:
    - name: mypvc
      persistentVolumeClaim:
        claimName: rbd-pvc
        readOnly: false

แƒแƒฎแƒšแƒ แƒ™แƒ˜ แƒ›แƒแƒ“แƒ˜แƒ— แƒ’แƒแƒ“แƒแƒ•แƒฎแƒ”แƒ“แƒแƒ— PVC-แƒก:

kubectl get pvc

แƒ–แƒแƒ›แƒ แƒจแƒ”แƒ˜แƒชแƒ•แƒแƒšแƒ, แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒ™แƒแƒ แƒ’แƒแƒ“แƒแƒ.

แƒžแƒ˜แƒ แƒ•แƒ”แƒš แƒœแƒแƒฌแƒ˜แƒšแƒจแƒ˜ แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ— RBD แƒ‘แƒšแƒแƒ™แƒ˜แƒก แƒ›แƒแƒฌแƒงแƒแƒ‘แƒ˜แƒšแƒแƒ‘แƒแƒกแƒ—แƒแƒœ (แƒ˜แƒ’แƒ˜ แƒœแƒ˜แƒจแƒœแƒแƒ•แƒก Rados Block Device-แƒก), แƒ›แƒแƒ’แƒ แƒแƒ› แƒ”แƒก แƒแƒ  แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒแƒ™แƒ”แƒ—แƒ“แƒ”แƒก, แƒ—แƒฃ แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒ›แƒ˜แƒ™แƒ แƒแƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒก แƒกแƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒแƒ› แƒ“แƒ˜แƒกแƒ™แƒ—แƒแƒœ แƒ”แƒ แƒ—แƒ“แƒ แƒแƒฃแƒšแƒแƒ“ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ. CephFS แƒ‘แƒ”แƒ•แƒ แƒแƒ“ แƒฃแƒคแƒ แƒ แƒจแƒ”แƒกแƒแƒคแƒ”แƒ แƒ˜แƒกแƒ˜แƒ แƒคแƒแƒ˜แƒšแƒ”แƒ‘แƒ—แƒแƒœ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ•แƒ˜แƒ“แƒ แƒ” แƒ“แƒ˜แƒกแƒ™แƒ˜แƒก แƒกแƒฃแƒ แƒแƒ—แƒ”แƒ‘แƒ—แƒแƒœ.
Ceph แƒ“แƒ Kubernetes แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—, แƒฉแƒ•แƒ”แƒœ แƒ“แƒแƒ•แƒแƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒ˜แƒ แƒ”แƒ‘แƒ— CSI-แƒก แƒ“แƒ แƒกแƒฎแƒ•แƒ แƒแƒฃแƒชแƒ˜แƒšแƒ”แƒ‘แƒ”แƒš แƒ”แƒ แƒ—แƒ”แƒฃแƒšแƒ”แƒ‘แƒก CephFS-แƒ—แƒแƒœ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

แƒ›แƒแƒ“แƒ˜แƒ— แƒ›แƒ˜แƒ•แƒ˜แƒฆแƒแƒ— แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ”แƒ‘แƒ˜ แƒแƒฎแƒแƒšแƒ˜ Helm แƒ“แƒ˜แƒแƒ’แƒ แƒแƒ›แƒ˜แƒ“แƒแƒœ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ:

helm inspect values ceph-csi/ceph-csi-cephfs > cephfs.yml

แƒ˜แƒกแƒ”แƒ• แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒจแƒ”แƒแƒ•แƒกแƒแƒ— cephfs.yml แƒคแƒแƒ˜แƒšแƒ˜. แƒ แƒแƒ’แƒแƒ แƒช แƒแƒ“แƒ แƒ”, Ceph แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒ“แƒแƒ’แƒ”แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒแƒ—:

ceph fsid
ceph mon dump

แƒจแƒ”แƒแƒ•แƒกแƒ”แƒ— แƒคแƒแƒ˜แƒšแƒ˜ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ”แƒ‘แƒ˜แƒ—:

csiConfig:
  - clusterID: "bcd0d202-fba8-4352-b25d-75c89258d5ab"
    monitors:
      - "172.18.8.5:6789"
      - "172.18.8.6:6789"
      - "172.18.8.7:6789"

nodeplugin:
  httpMetrics:
    enabled: true
    containerPort: 8091
  podSecurityPolicy:
    enabled: true

provisioner:
  replicaCount: 1
  podSecurityPolicy:
    enabled: true

แƒ’แƒ—แƒฎแƒแƒ•แƒ— แƒ’แƒแƒ˜แƒ—แƒ•แƒแƒšแƒ˜แƒกแƒฌแƒ˜แƒœแƒแƒ—, แƒ แƒแƒ› แƒ›แƒแƒœแƒ˜แƒขแƒแƒ แƒ˜แƒก แƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ”แƒ‘แƒ˜ แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜ แƒคแƒแƒ แƒ›แƒ˜แƒ— แƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ˜:แƒžแƒแƒ แƒขแƒ˜. แƒ™แƒ•แƒแƒœแƒซแƒ–แƒ” cephf-แƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒกแƒแƒงแƒ”แƒœแƒ”แƒ‘แƒšแƒแƒ“, แƒ”แƒก แƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ”แƒ‘แƒ˜ แƒ’แƒแƒ“แƒแƒ“แƒ˜แƒก แƒ‘แƒ˜แƒ แƒ—แƒ•แƒ˜แƒก แƒ›แƒแƒ“แƒฃแƒšแƒจแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ›แƒแƒช แƒฏแƒ”แƒ  แƒแƒ  แƒ˜แƒชแƒ˜แƒก แƒ แƒแƒ’แƒแƒ  แƒ˜แƒ›แƒฃแƒจแƒแƒแƒก v2 แƒ›แƒแƒœแƒ˜แƒขแƒแƒ แƒ˜แƒก แƒžแƒ แƒแƒขแƒแƒ™แƒแƒšแƒ—แƒแƒœ.
แƒฉแƒ•แƒ”แƒœ แƒ•แƒชแƒ•แƒšแƒ˜แƒ— แƒžแƒแƒ แƒขแƒก httpMetrics-แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก (แƒžแƒ แƒแƒ›แƒ”แƒ—แƒ” แƒฌแƒแƒ•แƒ แƒ˜แƒฅ แƒ›แƒ”แƒขแƒ แƒ˜แƒ™แƒ˜แƒก แƒ›แƒแƒœแƒ˜แƒขแƒแƒ แƒ˜แƒœแƒ’แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก) แƒ˜แƒกแƒ”, แƒ แƒแƒ› แƒ˜แƒ’แƒ˜ แƒแƒ  แƒ”แƒฌแƒ˜แƒœแƒแƒแƒฆแƒ›แƒ“แƒ”แƒ’แƒ”แƒ‘แƒแƒ“แƒ”แƒก nginx-proxy-แƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ“แƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ Kubespray-แƒ˜แƒก แƒ›แƒ˜แƒ”แƒ . แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ”แƒก แƒแƒ  แƒ“แƒแƒ’แƒญแƒ˜แƒ แƒ“แƒ”แƒ—.

แƒ“แƒแƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒ”แƒ— Helm แƒกแƒฅแƒ”แƒ›แƒ Kubernetes แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒจแƒ˜:

helm upgrade -i ceph-csi-cephfs ceph-csi/ceph-csi-cephfs -f cephfs.yml -n ceph-csi-cephfs --create-namespace

แƒ›แƒแƒ“แƒ˜แƒ— แƒ’แƒแƒ“แƒแƒ•แƒ˜แƒ“แƒ”แƒ— Ceph แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ›แƒแƒฆแƒแƒ–แƒ˜แƒแƒจแƒ˜, แƒ แƒแƒ› แƒ˜แƒฅ แƒชแƒแƒšแƒ™แƒ” แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒ˜ แƒจแƒ”แƒ•แƒฅแƒ›แƒœแƒแƒ—. แƒ“แƒแƒ™แƒฃแƒ›แƒ”แƒœแƒขแƒแƒชแƒ˜แƒแƒจแƒ˜ แƒœแƒแƒ—แƒฅแƒ•แƒแƒ›แƒ˜แƒ, แƒ แƒแƒ› CephFS แƒžแƒ แƒแƒ•แƒแƒ˜แƒ“แƒ”แƒ แƒ˜ แƒ›แƒแƒ˜แƒ—แƒฎแƒแƒ•แƒก แƒ™แƒšแƒแƒกแƒขแƒ”แƒ  แƒแƒ“แƒ›แƒ˜แƒœแƒ˜แƒกแƒขแƒ แƒแƒขแƒแƒ แƒ˜แƒก แƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒก แƒฃแƒคแƒšแƒ”แƒ‘แƒ”แƒ‘แƒก. แƒ›แƒแƒ’แƒ แƒแƒ› แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ•แƒฅแƒ›แƒœแƒ˜แƒ— แƒชแƒแƒšแƒ™แƒ” แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒก fs แƒจแƒ”แƒ–แƒฆแƒฃแƒ“แƒฃแƒšแƒ˜ แƒฃแƒคแƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒ—:

ceph auth get-or-create client.fs mon 'allow r' mgr 'allow rw' mds 'allow rws' osd 'allow rw pool=cephfs_data, allow rw pool=cephfs_metadata'

แƒ“แƒ แƒ›แƒแƒ“แƒ˜แƒ— แƒ“แƒแƒฃแƒงแƒแƒ•แƒœแƒ”แƒ‘แƒšแƒ˜แƒ• แƒ’แƒแƒ“แƒแƒ•แƒฎแƒ”แƒ“แƒแƒ— แƒ›แƒ˜แƒก แƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒก แƒฆแƒ˜แƒšแƒแƒ™แƒก, แƒ›แƒแƒ’แƒ•แƒ˜แƒแƒœแƒ”แƒ‘แƒ˜แƒ— แƒ“แƒแƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ:

ceph auth get-key client.fs

แƒ›แƒแƒ“แƒ˜แƒ— แƒจแƒ”แƒ•แƒฅแƒ›แƒœแƒแƒ— แƒชแƒแƒšแƒ™แƒ” Secret แƒ“แƒ StorageClass.
แƒแƒฎแƒแƒšแƒ˜ แƒแƒ แƒแƒคแƒ”แƒ แƒ˜แƒ, แƒ”แƒก แƒฃแƒ™แƒ•แƒ” แƒ•แƒœแƒแƒฎแƒ”แƒ— RBD-แƒ˜แƒก แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒจแƒ˜:

---
apiVersion: v1
kind: Secret
metadata:
  name: csi-cephfs-secret
  namespace: ceph-csi-cephfs
stringData:
  # ะะตะพะฑั…ะพะดะธะผะพ ะดะปั ะดะธะฝะฐะผะธั‡ะตัะบะธ ัะพะทะดะฐะฒะฐะตะผั‹ั… ั‚ะพะผะพะฒ
  adminID: fs
  adminKey: <ะฒั‹ะฒะพะด ะฟั€ะตะดั‹ะดัƒั‰ะตะน ะบะพะผะฐะฝะดั‹>

แƒ›แƒแƒœแƒ˜แƒคแƒ”แƒกแƒขแƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ:

kubectl apply -f secret.yaml

แƒแƒฎแƒšแƒ แƒ™แƒ˜ - แƒชแƒแƒšแƒ™แƒ” StorageClass:

---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: csi-cephfs-sc
provisioner: cephfs.csi.ceph.com
parameters:
  clusterID: <cluster-id>

  # ะ˜ะผั ั„ะฐะนะปะพะฒะพะน ัะธัั‚ะตะผั‹ CephFS, ะฒ ะบะพั‚ะพั€ะพะน ะฑัƒะดะตั‚ ัะพะทะดะฐะฝ ั‚ะพะผ
  fsName: cephfs

  # (ะฝะตะพะฑัะทะฐั‚ะตะปัŒะฝะพ) ะŸัƒะป Ceph, ะฒ ะบะพั‚ะพั€ะพะผ ะฑัƒะดัƒั‚ ั…ั€ะฐะฝะธั‚ัŒัั ะดะฐะฝะฝั‹ะต ั‚ะพะผะฐ
  # pool: cephfs_data

  # (ะฝะตะพะฑัะทะฐั‚ะตะปัŒะฝะพ) ะ ะฐะทะดะตะปะตะฝะฝั‹ะต ะทะฐะฟัั‚ั‹ะผะธ ะพะฟั†ะธะธ ะผะพะฝั‚ะธั€ะพะฒะฐะฝะธั ะดะปั Ceph-fuse
  # ะฝะฐะฟั€ะธะผะตั€:
  # fuseMountOptions: debug

  # (ะฝะตะพะฑัะทะฐั‚ะตะปัŒะฝะพ) ะ ะฐะทะดะตะปะตะฝะฝั‹ะต ะทะฐะฟัั‚ั‹ะผะธ ะพะฟั†ะธะธ ะผะพะฝั‚ะธั€ะพะฒะฐะฝะธั CephFS ะดะปั ัะดั€ะฐ
  # ะกะผ. man mount.ceph ั‡ั‚ะพะฑั‹ ัƒะทะฝะฐั‚ัŒ ัะฟะธัะพะบ ัั‚ะธั… ะพะฟั†ะธะน. ะะฐะฟั€ะธะผะตั€:
  # kernelMountOptions: readdir_max_bytes=1048576,norbytes

  # ะกะตะบั€ะตั‚ั‹ ะดะพะปะถะฝั‹ ัะพะดะตั€ะถะฐั‚ัŒ ะดะพัั‚ัƒะฟั‹ ะดะปั ะฐะดะผะธะฝะฐ ะธ/ะธะปะธ ัŽะทะตั€ะฐ Ceph.
  csi.storage.k8s.io/provisioner-secret-name: csi-cephfs-secret
  csi.storage.k8s.io/provisioner-secret-namespace: ceph-csi-cephfs
  csi.storage.k8s.io/controller-expand-secret-name: csi-cephfs-secret
  csi.storage.k8s.io/controller-expand-secret-namespace: ceph-csi-cephfs
  csi.storage.k8s.io/node-stage-secret-name: csi-cephfs-secret
  csi.storage.k8s.io/node-stage-secret-namespace: ceph-csi-cephfs

  # (ะฝะตะพะฑัะทะฐั‚ะตะปัŒะฝะพ) ะ”ั€ะฐะนะฒะตั€ ะผะพะถะตั‚ ะธัะฟะพะปัŒะทะพะฒะฐั‚ัŒ ะปะธะฑะพ ceph-fuse (fuse), 
  # ะปะธะฑะพ ceph kernelclient (kernel).
  # ะ•ัะปะธ ะฝะต ัƒะบะฐะทะฐะฝะพ, ะฑัƒะดะตั‚ ะธัะฟะพะปัŒะทะพะฒะฐั‚ัŒัั ะผะพะฝั‚ะธั€ะพะฒะฐะฝะธะต ั‚ะพะผะพะฒ ะฟะพ ัƒะผะพะปั‡ะฐะฝะธัŽ,
  # ัั‚ะพ ะพะฟั€ะตะดะตะปัะตั‚ัั ะฟะพะธัะบะพะผ ceph-fuse ะธ mount.ceph
  # mounter: kernel
reclaimPolicy: Delete
allowVolumeExpansion: true
mountOptions:
  - debug

แƒจแƒ”แƒ•แƒแƒ•แƒกแƒแƒ— แƒแƒฅ แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ˜แƒก ID แƒ“แƒ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ Kubernetes-แƒจแƒ˜:

kubectl apply -f storageclass.yaml

ะŸั€ะพะฒะตั€ะบะฐ

แƒจแƒ”แƒกแƒแƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒšแƒแƒ“, แƒ แƒแƒ’แƒแƒ แƒช แƒฌแƒ˜แƒœแƒ แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒจแƒ˜, แƒ›แƒแƒ“แƒ˜แƒ— แƒจแƒ”แƒ•แƒฅแƒ›แƒœแƒแƒ— PVC:

---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: csi-cephfs-pvc
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 5Gi
  storageClassName: csi-cephfs-sc

แƒ“แƒ แƒจแƒ”แƒแƒ›แƒแƒฌแƒ›แƒ”แƒ— PVC/PV-แƒก แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒ:

kubectl get pvc
kubectl get pv

แƒ—แƒฃ แƒ’แƒกแƒฃแƒ แƒ— แƒœแƒแƒฎแƒแƒ— แƒคแƒแƒ˜แƒšแƒ”แƒ‘แƒ˜ แƒ“แƒ แƒ“แƒ˜แƒ แƒ”แƒฅแƒขแƒแƒ แƒ˜แƒ”แƒ‘แƒ˜ CephFS-แƒจแƒ˜, แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒกแƒแƒ“แƒ›แƒ” แƒ“แƒแƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒแƒ— แƒ”แƒก แƒคแƒแƒ˜แƒšแƒฃแƒ แƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ. แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒ แƒแƒ’แƒแƒ แƒช แƒœแƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ˜แƒ แƒฅแƒ•แƒ”แƒ›แƒแƒ—.

แƒ›แƒแƒ“แƒ˜แƒ— แƒ’แƒแƒ“แƒแƒ•แƒ˜แƒ“แƒ”แƒ— Ceph แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒฃแƒš แƒ™แƒ•แƒแƒœแƒซแƒจแƒ˜ แƒ“แƒ แƒจแƒ”แƒแƒกแƒ แƒฃแƒšแƒแƒ— แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ แƒ›แƒแƒฅแƒ›แƒ”แƒ“แƒ”แƒ‘แƒ”แƒ‘แƒ˜:

# ะขะพั‡ะบะฐ ะผะพะฝั‚ะธั€ะพะฒะฐะฝะธั
mkdir -p /mnt/cephfs

# ะกะพะทะดะฐั‘ะผ ั„ะฐะนะป ั ะบะปัŽั‡ะพะผ ะฐะดะผะธะฝะธัั‚ั€ะฐั‚ะพั€ะฐ
ceph auth get-key client.admin >/etc/ceph/secret.key

# ะ”ะพะฑะฐะฒะปัะตะผ ะทะฐะฟะธััŒ ะฒ /etc/fstab
# !! ะ˜ะทะผะตะฝัะตะผ ip ะฐะดั€ะตั ะฝะฐ ะฐะดั€ะตั ะฝะฐัˆะตะณะพ ัƒะทะปะฐ
echo "172.18.8.6:6789:/ /mnt/cephfs ceph name=admin,secretfile=/etc/ceph/secret.key,noatime,_netdev    0       2" >> /etc/fstab

mount /mnt/cephfs

แƒ แƒแƒกแƒแƒ™แƒ•แƒ˜แƒ แƒ•แƒ”แƒšแƒ˜แƒ, แƒชแƒ”แƒคแƒ˜แƒก แƒ™แƒ•แƒแƒœแƒซแƒ–แƒ” FS-แƒ˜แƒก แƒ“แƒแƒ›แƒแƒœแƒขแƒแƒŸแƒ”แƒ‘แƒ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒกแƒแƒ•แƒแƒ แƒฏแƒ˜แƒจแƒ แƒ›แƒ˜แƒ–แƒœแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒกแƒแƒ แƒจแƒ”แƒกแƒแƒคแƒ”แƒ แƒ˜แƒกแƒ˜, แƒ แƒแƒกแƒแƒช แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒ— แƒกแƒšแƒฃแƒ›แƒฃแƒ แƒ˜ แƒ™แƒฃแƒ แƒกแƒ”แƒ‘แƒ˜. แƒแƒ แƒ แƒ›แƒ’แƒแƒœแƒ˜แƒ, แƒ•แƒ˜แƒœแƒ›แƒ” แƒแƒ›แƒแƒก แƒ’แƒแƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒก แƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒแƒจแƒ˜; แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ•แƒแƒœแƒ˜ แƒคแƒแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒ˜แƒ— แƒฌแƒแƒจแƒšแƒ˜แƒก แƒ›แƒแƒฆแƒแƒšแƒ˜ แƒ แƒ˜แƒกแƒ™แƒ˜แƒ.

แƒ“แƒ แƒ‘แƒแƒšแƒแƒก, แƒ›แƒแƒ“แƒ˜แƒ— แƒจแƒ”แƒ•แƒแƒ›แƒแƒฌแƒ›แƒแƒ— แƒ แƒแƒ’แƒแƒ  แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก แƒขแƒแƒ›แƒ”แƒ‘แƒ˜แƒก แƒ–แƒแƒ›แƒ˜แƒก แƒจแƒ”แƒชแƒ•แƒšแƒ CephFS-แƒ˜แƒก แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜. แƒ›แƒแƒ“แƒ˜แƒ— แƒ“แƒแƒ•แƒฃแƒ‘แƒ แƒฃแƒœแƒ“แƒ”แƒ— Kubernetes-แƒก แƒ“แƒ แƒ“แƒแƒแƒ แƒ”แƒ“แƒแƒฅแƒขแƒ˜แƒ แƒแƒ— แƒฉแƒ•แƒ”แƒœแƒ˜ แƒ›แƒแƒœแƒ˜แƒคแƒ”แƒกแƒขแƒ˜ PVC-แƒกแƒ—แƒ•แƒ˜แƒก - แƒ’แƒแƒ–แƒแƒ แƒ“แƒ”แƒ— แƒ–แƒแƒ›แƒ แƒ˜แƒฅ, แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, 7Gi-แƒ›แƒ“แƒ”.

แƒ›แƒแƒ“แƒ˜แƒ— แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒแƒ— แƒ แƒ”แƒ“แƒแƒฅแƒขแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒคแƒแƒ˜แƒšแƒ˜:

kubectl apply -f pvc.yaml

แƒ›แƒแƒ“แƒ˜แƒ— แƒจแƒ”แƒ•แƒฎแƒ”แƒ“แƒแƒ— แƒ“แƒแƒ›แƒแƒœแƒขแƒแƒŸแƒ”แƒ‘แƒฃแƒš แƒ“แƒ˜แƒ แƒ”แƒฅแƒขแƒแƒ แƒ˜แƒแƒก, แƒ แƒแƒ› แƒœแƒแƒฎแƒแƒ— แƒ แƒแƒ’แƒแƒ  แƒจแƒ”แƒ˜แƒชแƒ•แƒแƒšแƒ แƒ™แƒ•แƒแƒขแƒ:

getfattr -n ceph.quota.max_bytes <ะบะฐั‚ะฐะปะพะณ-ั-ะดะฐะฝะฝั‹ะผะธ>

แƒ˜แƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ› แƒแƒ› แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒแƒ› แƒ˜แƒ›แƒฃแƒจแƒแƒแƒก, แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ“แƒแƒ’แƒญแƒ˜แƒ แƒ“แƒ”แƒ— แƒžแƒแƒ™แƒ”แƒขแƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒ—แƒฅแƒ•แƒ”แƒœแƒก แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒแƒจแƒ˜ attr.

แƒ—แƒ•แƒแƒšแƒ”แƒ‘แƒก แƒ”แƒจแƒ˜แƒœแƒ˜แƒแƒ—, แƒ›แƒแƒ’แƒ แƒแƒ› แƒฎแƒ”แƒšแƒ”แƒ‘แƒก แƒ”แƒจแƒ˜แƒœแƒ˜แƒแƒ—

แƒงแƒ•แƒ”แƒšแƒ แƒ”แƒก แƒจแƒ”แƒšแƒแƒชแƒ•แƒ แƒ“แƒ แƒ’แƒ แƒซแƒ”แƒšแƒ˜ YAML แƒ›แƒแƒœแƒ˜แƒคแƒ”แƒกแƒขแƒแƒชแƒ˜แƒ”แƒ‘แƒ˜ แƒ’แƒแƒ แƒ”แƒ’แƒœแƒฃแƒšแƒแƒ“ แƒ แƒ—แƒฃแƒšแƒ˜ แƒฉแƒแƒœแƒก, แƒ›แƒแƒ’แƒ แƒแƒ› แƒžแƒ แƒแƒฅแƒขแƒ˜แƒ™แƒแƒจแƒ˜, Slurm แƒกแƒขแƒฃแƒ“แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜ แƒ›แƒแƒ— แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒกแƒฌแƒ แƒแƒคแƒแƒ“ แƒแƒ แƒ—แƒ›แƒ”แƒ•แƒ”แƒœ แƒ—แƒแƒ•แƒก.
แƒแƒ› แƒกแƒขแƒแƒขแƒ˜แƒแƒจแƒ˜ แƒฉแƒ•แƒ”แƒœ แƒแƒ  แƒจแƒ”แƒ•แƒ”แƒ“แƒ˜แƒ— แƒฏแƒฃแƒœแƒ’แƒšแƒ”แƒ‘แƒจแƒ˜ แƒฆแƒ แƒ›แƒแƒ“ - แƒแƒ›แƒ˜แƒก แƒแƒคแƒ˜แƒชแƒ˜แƒแƒšแƒฃแƒ แƒ˜ แƒ“แƒแƒ™แƒฃแƒ›แƒ”แƒœแƒขแƒแƒชแƒ˜แƒ แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก. แƒ—แƒฃ แƒ’แƒแƒ˜แƒœแƒขแƒ”แƒ แƒ”แƒกแƒ”แƒ‘แƒ— แƒ™แƒฃแƒ‘แƒ”แƒ แƒœแƒ”แƒขแƒ˜แƒก แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ—แƒแƒœ Ceph แƒจแƒ”แƒœแƒแƒฎแƒ•แƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒก แƒ“แƒ”แƒขแƒแƒšแƒ”แƒ‘แƒ˜, แƒ”แƒก แƒ‘แƒ›แƒฃแƒšแƒ”แƒ‘แƒ˜ แƒ“แƒแƒ’แƒ”แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒแƒ—:

แƒ™แƒฃแƒ‘แƒ”แƒ แƒœแƒ”แƒขแƒ”แƒ‘แƒ˜แƒก แƒขแƒแƒ›แƒ”แƒ‘แƒ—แƒแƒœ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒก แƒ–แƒแƒ’แƒแƒ“แƒ˜ แƒžแƒ แƒ˜แƒœแƒชแƒ˜แƒžแƒ”แƒ‘แƒ˜
RBD แƒ“แƒแƒ™แƒฃแƒ›แƒ”แƒœแƒขแƒแƒชแƒ˜แƒ
RBD-แƒ˜แƒกแƒ แƒ“แƒ Kubernetes-แƒ˜แƒก แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒ˜แƒ แƒ”แƒ‘แƒ แƒชแƒ”แƒคแƒ˜แƒก แƒžแƒ”แƒ แƒกแƒžแƒ”แƒฅแƒขแƒ˜แƒ•แƒ˜แƒ“แƒแƒœ
RBD-แƒ˜แƒกแƒ แƒ“แƒ Kubernetes-แƒ˜แƒก แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒ˜แƒ แƒ”แƒ‘แƒ CSI แƒžแƒ”แƒ แƒกแƒžแƒ”แƒฅแƒขแƒ˜แƒ•แƒ˜แƒ“แƒแƒœ
แƒ–แƒแƒ’แƒแƒ“แƒ˜ CephFS แƒ“แƒแƒ™แƒฃแƒ›แƒ”แƒœแƒขแƒแƒชแƒ˜แƒ
CephFS-แƒ˜แƒกแƒ แƒ“แƒ Kubernetes-แƒ˜แƒก แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒ˜แƒ แƒ”แƒ‘แƒ CSI แƒžแƒ”แƒ แƒกแƒžแƒ”แƒฅแƒขแƒ˜แƒ•แƒ˜แƒ“แƒแƒœ

Slurm แƒ™แƒฃแƒ แƒกแƒ–แƒ” แƒ™แƒฃแƒ‘แƒ”แƒ แƒœแƒ”แƒขแƒ˜แƒก แƒ‘แƒแƒ–แƒ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒชแƒแƒขแƒ แƒฌแƒ˜แƒœ แƒฌแƒแƒฎแƒ•แƒ˜แƒ“แƒ”แƒ— แƒ“แƒ แƒ’แƒแƒœแƒแƒ—แƒแƒ•แƒกแƒแƒ— แƒ แƒ”แƒแƒšแƒฃแƒ แƒ˜ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ Kubernetes-แƒจแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒก CephFS-แƒก แƒคแƒแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒœแƒแƒฎแƒแƒ“. GET/POST แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ˜แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒ˜แƒ— แƒ—แƒฅแƒ•แƒ”แƒœ แƒจแƒ”แƒซแƒšแƒ”แƒ‘แƒ— แƒคแƒแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ“แƒแƒขแƒแƒœแƒแƒก แƒ“แƒ แƒ›แƒแƒ— แƒ›แƒ˜แƒฆแƒ”แƒ‘แƒแƒก Ceph-แƒ˜แƒกแƒ’แƒแƒœ.

แƒ“แƒ แƒ—แƒฃ แƒฃแƒคแƒ แƒ แƒ›แƒ”แƒขแƒแƒ“ แƒ’แƒแƒ˜แƒœแƒขแƒ”แƒ แƒ”แƒกแƒ”แƒ‘แƒ— แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒจแƒ”แƒœแƒแƒฎแƒ•แƒ, แƒ›แƒแƒจแƒ˜แƒœ แƒ“แƒแƒ แƒ”แƒ’แƒ˜แƒกแƒขแƒ แƒ˜แƒ แƒ“แƒ˜แƒ— แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒฃแƒ แƒกแƒ˜ Ceph. แƒกแƒแƒœแƒแƒ› แƒ‘แƒ”แƒขแƒ แƒขแƒ”แƒกแƒขแƒ˜ แƒ’แƒ แƒซแƒ”แƒšแƒ“แƒ”แƒ‘แƒ, แƒ™แƒฃแƒ แƒกแƒ˜แƒก แƒ›แƒ˜แƒฆแƒ”แƒ‘แƒ แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ แƒคแƒแƒกแƒ“แƒแƒ™แƒšแƒ”แƒ‘แƒ˜แƒ— แƒ“แƒ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ’แƒแƒ•แƒšแƒ”แƒœแƒ แƒ›แƒแƒแƒฎแƒ“แƒ˜แƒœแƒแƒ— แƒ›แƒ˜แƒก แƒจแƒ˜แƒœแƒแƒแƒ แƒกแƒ–แƒ”.

แƒกแƒขแƒแƒขแƒ˜แƒ˜แƒก แƒแƒ•แƒขแƒแƒ แƒ˜: แƒแƒšแƒ”แƒฅแƒกแƒแƒœแƒ“แƒ แƒ” แƒจแƒ•แƒแƒšแƒแƒ•แƒ˜, แƒžแƒ แƒแƒฅแƒขแƒ˜แƒ™แƒแƒกแƒ˜ แƒ˜แƒœแƒŸแƒ˜แƒœแƒ”แƒ แƒ˜ Southbridge, Kubernetes-แƒ˜แƒก แƒกแƒ”แƒ แƒขแƒ˜แƒคแƒ˜แƒชแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒแƒ“แƒ›แƒ˜แƒœแƒ˜แƒกแƒขแƒ แƒแƒขแƒแƒ แƒ˜, Slurm แƒ™แƒฃแƒ แƒกแƒ”แƒ‘แƒ˜แƒก แƒแƒ•แƒขแƒแƒ แƒ˜ แƒ“แƒ แƒจแƒ”แƒ›แƒฅแƒ›แƒœแƒ”แƒšแƒ˜.

แƒฌแƒงแƒแƒ แƒ: www.habr.com