ื”ื ื™ืกื™ื•ืŸ ืฉืœื ื• ื‘ืคื™ืชื•ื— ืžื ื”ืœ ื”ืชืงืŸ CSI ื‘-Kubernetes ืขื‘ื•ืจ Yandex.Cloud

ื”ื ื™ืกื™ื•ืŸ ืฉืœื ื• ื‘ืคื™ืชื•ื— ืžื ื”ืœ ื”ืชืงืŸ CSI ื‘-Kubernetes ืขื‘ื•ืจ Yandex.Cloud

ืื ื• ืฉืžื—ื™ื ืœื”ื•ื“ื™ืข โ€‹โ€‹ืฉ-Flant ืžืจื—ื™ื‘ื” ืืช ืชืจื•ืžืชื” ืœื›ืœื™ ืงื•ื“ ืคืชื•ื— ืขื‘ื•ืจ Kubernetes ืขืœ ื™ื“ื™ ืฉื—ืจื•ืจ ื’ืจืกืช ืืœืคื ืฉืœ ืžื ื”ืœ ื”ื”ืชืงืŸ CSI (ืžืžืฉืง ืื—ืกื•ืŸ ืžื™ื›ืœ) ืขื‘ื•ืจ Yandex.Cloud.

ืื‘ืœ ืœืคื ื™ ืฉื ืขื‘ื•ืจ ืœืคืจื˜ื™ ื”ื™ื™ืฉื•ื, ื‘ื•ืื• ื ืขื ื” ืขืœ ื”ืฉืืœื” ืžื“ื•ืข ื–ื” ื ื—ื•ืฅ ื‘ื›ืœืœ ื›ืืฉืจ ืœ-Yandex ื›ื‘ืจ ื™ืฉ ืฉื™ืจื•ืช ืฉื™ืจื•ืช ืžื ื•ื”ืœ ืขื‘ื•ืจ Kubernetes.

ืžื‘ื•ื

ืœืžื” ื–ื”?

ื‘ืชื•ืš ื”ื—ื‘ืจื” ืฉืœื ื•, ื›ื‘ืจ ืžืชื—ื™ืœืช ื”ืฉื™ืžื•ืฉ ื‘-Kubernetes ื‘ื™ื™ืฆื•ืจ (ื›ืœื•ืžืจ ื›ื‘ืจ ื›ืžื” ืฉื ื™ื), ืื ื—ื ื• ืžืคืชื—ื™ื ื›ืœื™ ืžืฉืœื ื• (ื“ckhouse), ืฉืื’ื‘, ืื ื—ื ื• ื’ื ืžืชื›ื ื ื™ื ืœื”ืคื•ืš ืื•ืชื• ืœื–ืžื™ืŸ ื‘ืงืจื•ื‘ ื›ืคืจื•ื™ืงื˜ ืงื•ื“ ืคืชื•ื—. . ื‘ืขื–ืจืชื”, ืื ื• ืžื’ื“ื™ืจื™ื ื•ืžื’ื“ื™ืจื™ื ื‘ืื•ืคืŸ ืื—ื™ื“ ืืช ื›ืœ ื”ืืฉื›ื•ืœื•ืช ืฉืœื ื•, ื•ื›ืจื’ืข ื™ืฉ ื›ื‘ืจ ื™ื•ืชืจ ืž-100 ืžื”ื, ื‘ืžื’ื•ื•ืŸ ืจื—ื‘ ืฉืœ ืชืฆื•ืจื•ืช ื—ื•ืžืจื” ื•ื‘ื›ืœ ืฉื™ืจื•ืชื™ ื”ืขื ืŸ ื”ื–ืžื™ื ื™ื.

ืœืืฉื›ื•ืœื•ืช ื”ืžืฉืชืžืฉื™ื ื‘-deckhouse ื™ืฉ ืืช ื›ืœ ื”ืจื›ื™ื‘ื™ื ื”ื“ืจื•ืฉื™ื ืœืชืคืขื•ืœ: ืžืื–ื ื™ื, ื ื™ื˜ื•ืจ ืขื ืชืจืฉื™ืžื™ื ื ื•ื—ื™ื, ืžื“ื“ื™ื ื•ื”ืชืจืื•ืช, ืื™ืžื•ืช ืžืฉืชืžืฉื™ื ื“ืจืš ืกืคืงื™ื ื—ื™ืฆื•ื ื™ื™ื ืœื’ื™ืฉื” ืœื›ืœ ืœื•ื—ื•ืช ื”ืžื—ื•ื•ื ื™ื ื•ื›ื•'. ืื™ืŸ ื˜ืขื ืœื”ืชืงื™ืŸ ืืฉื›ื•ืœ "ืžืฉื•ืื‘" ืฉื›ื–ื” ื‘ืคืชืจื•ืŸ ืžื ื•ื”ืœ, ืžื›ื™ื•ื•ืŸ ืฉืœืขืชื™ื ืงืจื•ื‘ื•ืช ื–ื” ื‘ืœืชื™ ืืคืฉืจื™ ืื• ื™ื•ื‘ื™ืœ ืœืฆื•ืจืš ืœื”ืฉื‘ื™ืช ืžื—ืฆื™ืช ืžื”ืจื›ื™ื‘ื™ื.

NB: ื–ื” ื”ื ื™ืกื™ื•ืŸ ืฉืœื ื•, ื•ื”ื•ื ื“ื™ ืกืคืฆื™ืคื™. ืื ื—ื ื• ื‘ืฉื•ื ืื•ืคืŸ ืœื ืžืฆื™ืขื™ื ืฉื›ืœ ืื—ื“ ืฆืจื™ืš ืœืคืจื•ืก ืืฉื›ื•ืœื•ืช Kubernetes ื‘ืขืฆืžื• ื‘ืžืงื•ื ืœื”ืฉืชืžืฉ ื‘ืคืชืจื•ื ื•ืช ืžื•ื›ื ื™ื. ืื’ื‘, ืื™ืŸ ืœื ื• ื ื™ืกื™ื•ืŸ ืืžื™ืชื™ ื‘ื”ืคืขืœืช Kubernetes ืž- Yandex ื•ืœื ื ื™ืชืŸ ืฉื•ื ื”ืขืจื›ื” ืœื’ื‘ื™ ืฉื™ืจื•ืช ื–ื” ื‘ืžืืžืจ ื–ื”.

ืžื” ื–ื” ื•ืœืžื™?

ืื–, ื›ื‘ืจ ื“ื™ื‘ืจื ื• ืขืœ ื”ื’ื™ืฉื” ื”ืžื•ื“ืจื ื™ืช ืœืื—ืกื•ืŸ ื‘- Kubernetes: ืื™ืš CSI ืขื•ื‘ื“? ะธ ืื™ืš ื”ื’ื™ืขื” ื”ืงื”ื™ืœื” ืœื’ื™ืฉื” ื–ื•.

ื ื›ื•ืŸ ืœืขื›ืฉื™ื•, ืกืคืงื™ ืฉื™ืจื•ืชื™ ืขื ืŸ ื’ื“ื•ืœื™ื ืจื‘ื™ื ืคื™ืชื—ื• ื“ืจื™ื™ื‘ืจื™ื ืœืฉื™ืžื•ืฉ ื‘ื“ื™ืกืงื™ ื”ืขื ืŸ ืฉืœื”ื ื›ื ืคื— ืงื‘ื•ืข ื‘-Kubernetes. ืื ืœืกืคืง ืื™ืŸ ื“ืจื™ื™ื‘ืจ ื›ื–ื”, ืื‘ืœ ื›ืœ ื”ืคื•ื ืงืฆื™ื•ืช ื”ื“ืจื•ืฉื•ืช ืžืกื•ืคืงื•ืช ื“ืจืš ื”-API, ืื– ืฉื•ื ื“ื‘ืจ ืœื ืžื•ื ืข ืžืžืš ืœื™ื™ืฉื ืืช ื”ื“ืจื™ื™ื‘ืจ ื‘ืขืฆืžืš. ื–ื” ืžื” ืฉืงืจื” ืขื Yandex.Cloud.

ืœืงื—ื ื• ื›ื‘ืกื™ืก ืœืคื™ืชื•ื— ืžื ื”ืœ ื”ืชืงืŸ CSI ืขื‘ื•ืจ ืขื ืŸ DigitalOcean ื•ื›ืžื” ืจืขื™ื•ื ื•ืช ืž ืžื ื”ืœื™ ื”ืชืงื ื™ื ืขื‘ื•ืจ GCP, ืฉื›ืŸ ืœืื™ื ื˜ืจืืงืฆื™ื” ืขื ื”-API ืฉืœ ื”ืขื ื ื™ื ื”ืœืœื• (ื’ื•ื’ืœ ื•-Yandex) ื™ืฉ ืžืกืคืจ ืงื•ื•ื™ ื“ืžื™ื•ืŸ. ื‘ืคืจื˜, ื”-API ื• GCP, ื• Yandex ืœื”ื—ื–ื™ืจ ื—ืคืฅ Operation ื›ื“ื™ ืœืขืงื•ื‘ ืื—ืจ ื”ืžืฆื‘ ืฉืœ ืคืขื•ืœื•ืช ืืจื•ื›ื•ืช (ืœื“ื•ื’ืžื”, ื™ืฆื™ืจืช ื“ื™ืกืง ื—ื“ืฉ). ื›ื“ื™ ืœื™ืฆื•ืจ ืื™ื ื˜ืจืืงืฆื™ื” ืขื ื”-API ืฉืœ Yandex.Cloud, ื”ืฉืชืžืฉ Yandex.Cloud Go SDK.

ื”ืชื•ืฆืื” ืฉืœ ื”ืขื‘ื•ื“ื” ืฉื ืขืฉืชื” ืคื•ืจืกื ื‘-GitHub ื•ืขืฉื•ื™ื™ื ืœื”ื™ื•ืช ืฉื™ืžื•ืฉื™ื™ื ืขื‘ื•ืจ ืืœื” ืฉืžืกื™ื‘ื” ื›ืœืฉื”ื™, ืžืฉืชืžืฉื™ื ื‘ื”ืชืงื ืช Kubernetes ืžืฉืœื”ื ื‘ืžื›ื•ื ื•ืช ื•ื™ืจื˜ื•ืืœื™ื•ืช ืฉืœ Yandex.Cloud (ืืš ืœื ื‘ืืฉื›ื•ืœ ืžื ื•ื”ืœ ืžื•ื›ืŸ) ื•ืจื•ืฆื™ื ืœื”ืฉืชืžืฉ (ืœื”ื–ืžื™ืŸ) ื“ื™ืกืงื™ื ื“ืจืš CSI.

ะ ะตะฐะปะธะทะฐั†ะธั

ืชื›ื•ื ื•ืช ืขื™ืงืจื™ื•ืช

ื›ืจื’ืข ืžื ื”ืœ ื”ื”ืชืงืŸ ืชื•ืžืš ื‘ืคื•ื ืงืฆื™ื•ืช ื”ื‘ืื•ืช:

  • ื”ื–ืžื ืช ื“ื™ืกืงื™ื ื‘ื›ืœ ืื–ื•ืจื™ ื”ืืฉื›ื•ืœ ืœืคื™ ื”ื˜ื•ืคื•ืœื•ื’ื™ื” ืฉืœ ื”ืฆืžืชื™ื ื‘ืืฉื›ื•ืœ;
  • ื”ืกืจืช ื“ื™ืกืงื™ื ืฉื”ื•ื–ืžื ื• ื‘ืขื‘ืจ;
  • ืฉื™ื ื•ื™ ื’ื•ื“ืœ ืœื ืžืงื•ื•ืŸ ืขื‘ื•ืจ ื“ื™ืกืงื™ื (Yandex.Cloud ืื™ื ื• ืชื•ืžืš ื”ื’ื“ืœืช ื”ื“ื™ืกืงื™ื ืฉืžื•ืจื›ื‘ื™ื ืœืžื›ื•ื ื” ื”ื•ื™ืจื˜ื•ืืœื™ืช). ืœืžื™ื“ืข ืขืœ ื”ืื•ืคืŸ ืฉื‘ื• ื”ื™ื” ืฆืจื™ืš ืœืฉื ื•ืช ืืช ืžื ื”ืœ ื”ื”ืชืงืŸ ื›ื“ื™ ืœื”ืคื•ืš ืืช ืฉื™ื ื•ื™ ื”ื’ื•ื“ืœ ืœืœื ื›ืื‘ื™ื ื›ื›ืœ ื”ืืคืฉืจ, ืจืื” ืœื”ืœืŸ.

ื‘ืขืชื™ื“, ืื ื• ืžืชื›ื ื ื™ื ืœื™ื™ืฉื ืชืžื™ื›ื” ื‘ื™ืฆื™ืจื” ื•ืžื—ื™ืงื” ืฉืœ ืฆื™ืœื•ืžื™ ื“ื™ืกืง.

ื”ืงื•ืฉื™ ื”ืขื™ืงืจื™ ื•ืื™ืš ืœื”ืชื’ื‘ืจ ืขืœื™ื•

ื”ื™ืขื“ืจ ื”ื™ื›ื•ืœืช ืœื”ื’ื“ื™ืœ ื“ื™ืกืงื™ื ื‘ื–ืžืŸ ืืžืช ื‘-Yandex.Cloud API ื”ื™ื ืžื’ื‘ืœื” ืฉืžืกื‘ื›ืช ืืช ืคืขื•ืœืช ืฉื™ื ื•ื™ ื”ื’ื•ื“ืœ ืขื‘ื•ืจ PV (Persistent Volume): ื‘ืžืงืจื” ื–ื”, ื™ืฉ ืฆื•ืจืš ืœืขืฆื•ืจ ืืช ื”ืคื•ื“ ืฉืœ ื”ืืคืœื™ืงืฆื™ื” ืฉืžืฉืชืžืฉ ื‘ื“ื™ืกืง, ื•ื–ื” ื™ื›ื•ืœ ืœื’ืจื•ื ืœื™ื™ืฉื•ืžื™ ื”ืฉื‘ืชื”.

ืขืœ ืคื™ ืžืคืจื˜ื™ CSI, ืื ื‘ืงืจ ื”-CSI ืžื“ื•ื•ื— ืฉื”ื•ื ื™ื›ื•ืœ ืœืฉื ื•ืช ืืช ื’ื•ื“ืœ ื”ื“ื™ืกืงื™ื ืจืง "ืœื ืžืงื•ื•ืŸ" (VolumeExpansion.OFFLINE), ืื– ืชื”ืœื™ืš ื”ื’ื“ืœืช ื”ื“ื™ืกืง ืืžื•ืจ ืœื”ืชื ื”ืœ ื›ืš:

ืื ืœืคืœืื’ื™ืŸ ื™ืฉ ืจืง VolumeExpansion.OFFLINE ื™ื›ื•ืœืช ื”ืจื—ื‘ื” ื•ื ืคื— ืžืชืคืจืกืžื™ื ื›ืขืช ืื• ื–ืžื™ื ื™ื ื‘ืฆื•ืžืช ืื– ControllerExpandVolume ื™ืฉ ืœื”ืชืงืฉืจ ืจืง ืœืื—ืจ:

  • ืœืคืœืื’ื™ืŸ ื™ืฉ ื‘ืงืจ PUBLISH_UNPUBLISH_VOLUME ื™ื›ื•ืœืช ื• ControllerUnpublishVolume ื”ื•ืคืขืœ ื‘ื”ืฆืœื—ื”.

ืื—ืจืช

  • ืœืคืœืื’ื™ืŸ ืื™ืŸ ื‘ืงืจ PUBLISH_UNPUBLISH_VOLUME ื™ื›ื•ืœืช, ืœืคืœืื’ื™ืŸ ื™ืฉ ืฆื•ืžืช STAGE_UNSTAGE_VOLUME ื™ื›ื•ืœืช, ื• NodeUnstageVolume ื”ื•ืฉืœื ื‘ื”ืฆืœื—ื”.

ืื—ืจืช

  • ืœืคืœืื’ื™ืŸ ืื™ืŸ ื‘ืงืจ PUBLISH_UNPUBLISH_VOLUME ื™ื›ื•ืœืช, ื•ืœื ืฆื•ืžืช STAGE_UNSTAGE_VOLUME ื™ื›ื•ืœืช, ื• NodeUnpublishVolume ื”ืกืชื™ื™ื ื‘ื”ืฆืœื—ื”.

ื–ื” ื‘ืขืฆื ืื•ืžืจ ืฉืืชื” ืฆืจื™ืš ืœื ืชืง ืืช ื”ื“ื™ืกืง ืžื”ืžื›ื•ื ื” ื”ื•ื™ืจื˜ื•ืืœื™ืช ืœืคื ื™ ื”ืจื—ื‘ืชื•.

ืขื ื–ืืช, ืœืžืจื‘ื” ื”ืฆืขืจ ื™ื™ืฉื•ื ืžืคืจื˜ ื”-CSI ื‘ืืžืฆืขื•ืช ืงืจื•ื ื•ืช ืฆื“ ืื™ื ื• ืขื•ืžื“ ื‘ื“ืจื™ืฉื•ืช ื”ื‘ืื•ืช:

  • ื‘ืžื™ื›ืœ ืฆื“ csi-attacher, ืฉืืžื•ืจ ืœื”ื™ื•ืช ืื—ืจืื™ ืœื ื•ื›ื—ื•ืช ื”ืคืขืจ ื”ื ื“ืจืฉ ื‘ื™ืŸ ื”ืจื›ื™ื‘ื™ื, ื”ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช ื”ื–ื• ืคืฉื•ื˜ ืœื ืžื™ื•ืฉืžืช ื‘ืฉื™ื ื•ื™ ื”ื’ื•ื“ืœ ื”ืœื ืžืงื•ื•ืŸ. ื ืคืชื— ื“ื™ื•ืŸ ื‘ื ื•ืฉื ื›ืืŸ.
  • ืžื” ื–ื” ื‘ืขืฆื ืžื™ื›ืœ ืฆื“ ื‘ื”ืงืฉืจ ื”ื–ื”? ื”ืชื•ืกืฃ CSI ืขืฆืžื• ืื™ื ื• ื™ื•ืฆืจ ืื™ื ื˜ืจืืงืฆื™ื” ืขื ื”-API ืฉืœ Kubernetes, ืืœื ืžื’ื™ื‘ ืจืง ืœืงืจื™ืื•ืช gRPC ื”ื ืฉืœื—ื•ืช ืืœื™ื• ื‘ืืžืฆืขื•ืช ืงื•ื ื˜ื™ื™ื ืจื™ื ืฆื“ื“ื™ื™ื. ื”ื›ื™ ืžืื•ื—ืจ ื ืžืฆืื™ื ื‘ืคื™ืชื•ื— ืขืœ ื™ื“ื™ ืงื”ื™ืœืช Kubernetes.

ื‘ืžืงืจื” ืฉืœื ื• (ืชื•ืกืฃ CSI), ืคืขื•ืœืช ื”ื’ื“ืœืช ื”ื“ื™ืกืง ื ืจืื™ืช ื›ืš:

  1. ืื ื• ืžืงื‘ืœื™ื ืฉื™ื—ืช gRPC ControllerExpandVolume;
  2. ืื ื• ืžื ืกื™ื ืœื”ื’ื“ื™ืœ ืืช ื”ื“ื™ืกืง ื‘-API, ืืš ืื ื• ืžืงื‘ืœื™ื ืฉื’ื™ืื” ืœื’ื‘ื™ ื—ื•ืกืจ ื”ืืคืฉืจื•ืช ืœื‘ืฆืข ืืช ื”ืคืขื•ืœื” ืžื›ื™ื•ื•ืŸ ืฉื”ื“ื™ืกืง ืžื•ืชืงืŸ;
  3. ืื ื• ืžืื—ืกื ื™ื ืืช ืžื–ื”ื” ื”ื“ื™ืกืง ื‘ืžืคื”, ื”ืžื›ื™ืœื” ืืช ื”ื“ื™ืกืงื™ื ืฉืขื‘ื•ืจื ื™ืฉ ืœื‘ืฆืข ืืช ืคืขื•ืœืช ื”ื”ื’ื“ืœื”. ืœื”ืœืŸ, ืœืงื™ืฆื•ืจ, ื ืงืจื ืœืžืคื” ื–ื• ื‘ืฉื volumeResizeRequired;
  4. ื”ืกืจ ื‘ืื•ืคืŸ ื™ื“ื ื™ ืืช ื”ืคื•ื“ ืฉืžืฉืชืžืฉ ื‘ื“ื™ืกืง. Kubernetes ื™ืคืขื™ืœ ืื•ืชื• ืžื—ื“ืฉ. ื›ื“ื™ ืฉืœื“ื™ืกืง ืื™ืŸ ื–ืžืŸ ืœืขืœื•ืช (ControllerPublishVolume) ืœืคื ื™ ื”ืฉืœืžืช ืคืขื•ืœืช ื”ื”ื’ื“ืœื” ื‘ืขืช ื ื™ืกื™ื•ืŸ ืœืขืœื•ืช, ืื ื• ื‘ื•ื“ืงื™ื ืฉื”ื“ื™ืกืง ื”ื ืชื•ืŸ ืขื“ื™ื™ืŸ ื‘ืคื ื™ื volumeResizeRequired ื•ืœื”ื—ื–ื™ืจ ืฉื’ื™ืื”;
  5. ืžื ื”ืœ ื”ื”ืชืงืŸ ืฉืœ CSI ืžื ืกื” ืœื‘ืฆืข ืžื—ื“ืฉ ืืช ืคืขื•ืœืช ืฉื™ื ื•ื™ ื”ื’ื•ื“ืœ. ืื ื”ืคืขื•ืœื” ื”ืฆืœื™ื—ื”, ื”ืกืจ ืืช ื”ื“ื™ืกืง ืž volumeResizeRequired;
  6. ื›ื™ ืžื–ื”ื” ื“ื™ืกืง ื—ืกืจ volumeResizeRequired, ControllerPublishVolume ืขื•ื‘ืจ ื‘ื”ืฆืœื—ื”, ื”ื“ื™ืกืง ืžื•ืชืงืŸ, ื”ืคื•ื“ ืžืชื—ื™ืœ.

ื”ื›ืœ ื ืจืื” ืคืฉื•ื˜ ืžืกืคื™ืง, ืื‘ืœ ื›ืžื• ืชืžื™ื“ ื™ืฉ ืžืœื›ื•ื“ื•ืช. ืžื’ื“ื™ืœ ื“ื™ืกืงื™ื ืžืฉืชื ื” ื—ื™ืฆื•ื ื™, ืืฉืจ ื‘ืžืงืจื” ืฉืœ ืฉื’ื™ืื” ื‘ืžื”ืœืš ื”ืคืขื•ืœื” ืžืฉืชืžืฉ ื‘ืชื•ืจ ืขื ืขืœื™ื™ื” ืืงืกืคื•ื ื ืฆื™ืืœื™ืช ื‘ื–ืžืŸ ืคืกืง ื”ื–ืžืŸ ืขื“ 1000 ืฉื ื™ื•ืช:

func DefaultControllerRateLimiter() RateLimiter {
  return NewMaxOfRateLimiter(
  NewItemExponentialFailureRateLimiter(5*time.Millisecond, 1000*time.Second),
  // 10 qps, 100 bucket size.  This is only for retry speed and its only the overall factor (not per item)
  &BucketRateLimiter{Limiter: rate.NewLimiter(rate.Limit(10), 100)},
  )
}

ื–ื” ื™ื›ื•ืœ ืœื’ืจื•ื ืžืขืช ืœืขืช ืœื”ืืจื›ืช ืคืขื•ืœืช ื”ืจื—ื‘ืช ื”ื“ื™ืกืง ืœืžืฉืš 15+ ื“ืงื•ืช ื•ืœืคื™ื›ืš, ื”ืคื•ื“ ื”ืžืชืื™ื ืื™ื ื• ื–ืžื™ืŸ.

ื”ืืคืฉืจื•ืช ื”ื™ื—ื™ื“ื” ืฉื“ื™ ื‘ืงืœื•ืช ื•ืœืœื ื›ืื‘ ืืคืฉืจื” ืœื ื• ืœืฆืžืฆื ืืช ื–ืžืŸ ื”ื”ืฉื‘ืชื” ื”ืคื•ื˜ื ืฆื™ืืœื™ ื”ื™ื™ืชื” ื”ืฉื™ืžื•ืฉ ื‘ื’ืจืกื” ืฉืœื ื• ืฉืœ resizer ื—ื™ืฆื•ื ื™ ืขื ืžื’ื‘ืœืช ืคืกืง ื–ืžืŸ ืžืงืกื™ืžืœื™ืช ืชื•ืš 5 ืฉื ื™ื•ืช:

workqueue.NewItemExponentialFailureRateLimiter(5*time.Millisecond, 5*time.Second)

ืœื ืจืื™ื ื• ืฆื•ืจืš ืœื™ื–ื•ื ื“ื™ื•ืŸ ื‘ื“ื—ื™ืคื•ืช ื•ืœืชืงืŸ ืืช resizer ื”ื—ื™ืฆื•ื ื™, ื›ื™ ืฉื™ื ื•ื™ ื’ื•ื“ืœ ืœื ืžืงื•ื•ืŸ ืฉืœ ื“ื™ืกืงื™ื ื”ื•ื ื ืกื™ื’ื” ืฉื‘ืงืจื•ื‘ ืชื™ืขืœื ืžื›ืœ ืกืคืงื™ ื”ืขื ืŸ.

ื›ื™ืฆื“ ืœื”ืชื—ื™ืœ ืœื”ืฉืชืžืฉ?

ืžื ื”ืœ ื”ื”ืชืงืŸ ื ืชืžืš ื‘ื’ืจืกื” 1.15 ื•ืžืขืœื” ืฉืœ Kubernetes. ื›ื“ื™ ืฉื”ื ื”ื’ ื™ืขื‘ื•ื“, ื™ืฉ ืœืขืžื•ื“ ื‘ื“ืจื™ืฉื•ืช ื”ื‘ืื•ืช:

  • ื“ื’ืœ --allow-privileged ืžื•ื’ื“ืจ ืœืขืจืš true ืขื‘ื•ืจ ืฉืจืช API ื•-kubelet;
  • ื›ืœื•ืœ --feature-gates=VolumeSnapshotDataSource=true,KubeletPluginsWatcher=true,CSINodeInfo=true,CSIDriverRegistry=true ืขื‘ื•ืจ ืฉืจืช API ื•-kubelet;
  • ื”ืชืคืฉื˜ื•ืช ื”ืจ (ื”ืชืคืฉื˜ื•ืช ื”ืจ) ื—ื™ื™ื‘ ืœื”ื™ื•ืช ื–ืžื™ืŸ ื‘ืืฉื›ื•ืœ. ื‘ืขืช ืฉื™ืžื•ืฉ ื‘-Docker, ื™ืฉ ืœื”ื’ื“ื™ืจ ืืช ื”ื“ืžื•ืŸ ื›ืš ืฉื™ืืคืฉืจ ืจื›ื™ื‘ื•ืช ืžืฉื•ืชืคื•ืช.

ื›ืœ ื”ืฉืœื‘ื™ื ื”ื“ืจื•ืฉื™ื ืœื”ืชืงื ื” ืขืฆืžื” ืžืชื•ืืจ ื‘-README. ื”ื”ืชืงื ื” ื›ื•ืœืœืช ื™ืฆื™ืจืช ืื•ื‘ื™ื™ืงื˜ื™ื ื‘-Kubernetes ืžืžื ื™ืคืกื˜ื™ื.

ื›ื“ื™ ืฉื”ื ื”ื’ ื™ืขื‘ื•ื“ ืชืฆื˜ืจืš ืืช ื”ื“ื‘ืจื™ื ื”ื‘ืื™ื:

  • ืฆื™ื™ืŸ ืืช ืžื–ื”ื” ื”ืกืคืจื™ื™ื” ื‘ืžื ื™ืคืกื˜ (folder-id) Yandex.Cloud (ืจืื” ืชื™ืขื•ื“);
  • ื›ื“ื™ ืœื™ืฆื•ืจ ืื™ื ื˜ืจืืงืฆื™ื” ืขื ื”-API ืฉืœ Yandex.Cloud, ืžื ื”ืœ ื”ื”ืชืงืŸ ืฉืœ CSI ืžืฉืชืžืฉ ื‘ื—ืฉื‘ื•ืŸ ืฉื™ืจื•ืช. ื‘ืžื ื™ืคืกื˜, ืกื•ื“ ื—ื™ื™ื‘ ืœืขื‘ื•ืจ ืžืคืชื—ื•ืช ืžื•ืจืฉื™ื ืžื—ืฉื‘ื•ืŸ ื”ืฉื™ืจื•ืช. ื‘ืชื™ืขื•ื“ ืžึฐืชื•ึผืึธืจ, ื›ื™ืฆื“ ืœื™ืฆื•ืจ ื—ืฉื‘ื•ืŸ ืฉื™ืจื•ืช ื•ืœืงื‘ืœ ืžืคืชื—ื•ืช.

ื”ื›ืœ ืžื”ื›ืœ - ื ืกื” ืืช ื–ื”, ื•ื ืฉืžื— ืœืงื‘ืœ ืžืฉื•ื‘ ื• ื ื•ืฉืื™ื ื—ื“ืฉื™ืืื ืืชื” ื ืชืงืœ ื‘ื‘ืขื™ื•ืช ื›ืœืฉื”ืŸ!

ืชืžื™ื›ื” ื ื•ืกืคืช

ื›ืชื•ืฆืื” ืžื›ืš, ื‘ืจืฆื•ื ื ื• ืœืฆื™ื™ืŸ ืฉื”ื˜ืžืขื ื• ื“ืจื™ื™ื‘ืจ CSI ื–ื” ืœื ืžืชื•ืš ืจืฆื•ืŸ ื’ื“ื•ืœ ื‘ื›ืชื™ื‘ืช ืืคืœื™ืงืฆื™ื•ืช ื‘-Go, ืืœื ื‘ื’ืœืœ ืฆื•ืจืš ื“ื—ื•ืฃ ื‘ื—ื‘ืจื”. ื–ื” ืœื ื ืจืื” ืœื ื• ืžืขืฉื™ ืœืฉืžื•ืจ ืขืœ ื™ื™ืฉื•ื ืžืฉืœื ื•, ืื– ืื Yandex ื™ื’ืœื” ืขื ื™ื™ืŸ ื•ืชื—ืœื™ื˜ ืœื”ืžืฉื™ืš ืœืชืžื•ืš ื‘ื ื”ื’, ื ืฉืžื— ืœื”ืขื‘ื™ืจ ืœื”ื ืืช ื”ืžืื’ืจ.

ื‘ื ื•ืกืฃ, ืœ-Yandex ื™ืฉ ื›ื ืจืื” ื™ื™ืฉื•ื ืžืฉืœื” ืฉืœ ืžื ื”ืœ ื”ื”ืชืงืŸ CSI ื‘ืืฉื›ื•ืœ Kubernetes ื”ืžื ื•ื”ืœ ืฉืœื”, ืฉื ื™ืชืŸ ืœืฉื—ืจืจ ื‘ืงื•ื“ ืคืชื•ื—. ืื ื• ืจื•ืื™ื ื’ื ืืช ืืคืฉืจื•ืช ื”ืคื™ืชื•ื— ื”ื–ื• ื›ื—ื™ื•ื‘ื™ืช โ€“ ื”ืงื”ื™ืœื” ืชื•ื›ืœ ืœื”ืฉืชืžืฉ ื‘ื“ืจื™ื‘ืจ ืžื•ื›ื— ืฉืœ ืกืคืง ืฉื™ืจื•ืช, ื•ืœื ืžื—ื‘ืจืช ืฆื“ ืฉืœื™ืฉื™.

ื .ื‘.

ืงืจื ื’ื ื‘ื‘ืœื•ื’ ืฉืœื ื•:

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”