ಶೇಖರಣಾ ಸಾಮರ್ಥ್ಯದ ಟ್ರ್ಯಾಕಿಂಗ್‌ನೊಂದಿಗೆ ಅಲ್ಪಕಾಲಿಕ ಸಂಪುಟಗಳು: ಸ್ಟೀರಾಯ್ಡ್‌ಗಳ ಮೇಲೆ ಖಾಲಿ ಡಿರ್

ಶೇಖರಣಾ ಸಾಮರ್ಥ್ಯದ ಟ್ರ್ಯಾಕಿಂಗ್‌ನೊಂದಿಗೆ ಅಲ್ಪಕಾಲಿಕ ಸಂಪುಟಗಳು: ಸ್ಟೀರಾಯ್ಡ್‌ಗಳ ಮೇಲೆ ಖಾಲಿ ಡಿರ್

ಕೆಲವು ಅಪ್ಲಿಕೇಶನ್‌ಗಳು ಡೇಟಾವನ್ನು ಸಂಗ್ರಹಿಸಬೇಕಾಗುತ್ತದೆ, ಆದರೆ ಮರುಪ್ರಾರಂಭಿಸಿದ ನಂತರ ಡೇಟಾವನ್ನು ಉಳಿಸಲಾಗುವುದಿಲ್ಲ ಎಂಬ ಅಂಶದೊಂದಿಗೆ ಅವು ಸಾಕಷ್ಟು ಆರಾಮದಾಯಕವಾಗಿವೆ.

ಉದಾಹರಣೆಗೆ, ಕ್ಯಾಶಿಂಗ್ ಸೇವೆಗಳು RAM ನಿಂದ ಸೀಮಿತವಾಗಿವೆ, ಆದರೆ RAM ಗಿಂತ ನಿಧಾನವಾದ ಸಂಗ್ರಹಣೆಗೆ ಅಪರೂಪವಾಗಿ ಬಳಸಲಾಗುವ ಡೇಟಾವನ್ನು ಸಹ ಚಲಿಸಬಹುದು, ಒಟ್ಟಾರೆ ಕಾರ್ಯಕ್ಷಮತೆಯ ಮೇಲೆ ಕಡಿಮೆ ಪರಿಣಾಮ ಬೀರುತ್ತದೆ. ಫೈಲ್‌ಗಳಲ್ಲಿ ಸೆಟ್ಟಿಂಗ್‌ಗಳು ಅಥವಾ ರಹಸ್ಯ ಕೀಗಳಂತಹ ಕೆಲವು ಓದಲು-ಮಾತ್ರ ಇನ್‌ಪುಟ್ ಇರಬಹುದು ಎಂದು ಇತರ ಅಪ್ಲಿಕೇಶನ್‌ಗಳು ತಿಳಿದಿರಬೇಕು.

ಕುಬರ್ನೆಟ್ಸ್ ಈಗಾಗಲೇ ಹಲವಾರು ವಿಧಗಳನ್ನು ಹೊಂದಿದೆ ಅಲ್ಪಕಾಲಿಕ ಸಂಪುಟಗಳು, ಆದರೆ ಅವರ ಕಾರ್ಯಚಟುವಟಿಕೆಯು K8 ಗಳಲ್ಲಿ ಅಳವಡಿಸಲಾಗಿರುವುದಕ್ಕೆ ಸೀಮಿತವಾಗಿದೆ.

ಅಲ್ಪಕಾಲಿಕ CSI ಸಂಪುಟಗಳು ಹಗುರವಾದ ಸ್ಥಳೀಯ ಸಂಪುಟಗಳಿಗೆ ಬೆಂಬಲವನ್ನು ಒದಗಿಸಲು ಕುಬರ್ನೆಟ್ಸ್ ಅನ್ನು CSI ಡ್ರೈವರ್‌ಗಳೊಂದಿಗೆ ವಿಸ್ತರಿಸಲು ಅವಕಾಶ ಮಾಡಿಕೊಟ್ಟಿತು. ಈ ರೀತಿಯಾಗಿ ಬಳಸಲು ಸಾಧ್ಯವಿದೆ ಅನಿಯಂತ್ರಿತ ರಚನೆಗಳು: ಸೆಟ್ಟಿಂಗ್‌ಗಳು, ರಹಸ್ಯಗಳು, ಗುರುತಿನ ಡೇಟಾ, ವೇರಿಯಬಲ್‌ಗಳು, ಇತ್ಯಾದಿ. ಈ ಕುಬರ್ನೆಟ್ಸ್ ವೈಶಿಷ್ಟ್ಯವನ್ನು ಬೆಂಬಲಿಸಲು CSI ಡ್ರೈವರ್‌ಗಳನ್ನು ಮಾರ್ಪಡಿಸಬೇಕು, ಏಕೆಂದರೆ ನಿಯಮಿತ ಪ್ರಮಾಣಿತ ಡ್ರೈವರ್‌ಗಳು ಕಾರ್ಯನಿರ್ವಹಿಸುವುದಿಲ್ಲ ಎಂದು ಭಾವಿಸಲಾಗಿದೆ - ಆದರೆ ಅಂತಹ ಪರಿಮಾಣಗಳನ್ನು ಪಾಡ್‌ಗಾಗಿ ಆಯ್ಕೆ ಮಾಡಿದ ಯಾವುದೇ ನೋಡ್‌ನಲ್ಲಿ ಬಳಸಬಹುದು ಎಂದು ಭಾವಿಸಲಾಗಿದೆ.

ಗಮನಾರ್ಹವಾದ ಹೋಸ್ಟ್ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಬಳಸುವ ಸಂಪುಟಗಳಿಗೆ ಅಥವಾ ಕೆಲವು ಹೋಸ್ಟ್‌ಗಳಲ್ಲಿ ಮಾತ್ರ ಲಭ್ಯವಿರುವ ಸಂಗ್ರಹಣೆಗೆ ಇದು ಸಮಸ್ಯೆಯಾಗಿರಬಹುದು. ಅದಕ್ಕಾಗಿಯೇ ಕುಬರ್ನೆಟ್ಸ್ 1.19 ಎರಡು ಹೊಸ ಆಲ್ಫಾ ಟೆಸ್ಟಿಂಗ್ ವಾಲ್ಯೂಮ್ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಪರಿಚಯಿಸುತ್ತದೆ ಅದು ಕಲ್ಪನಾತ್ಮಕವಾಗಿ EmptyDir ಸಂಪುಟಗಳಿಗೆ ಹೋಲುತ್ತದೆ:

  • ಸಾಮಾನ್ಯ ಉದ್ದೇಶದ ಅಲ್ಪಕಾಲಿಕ ಸಂಪುಟಗಳು;

  • CSI ಶೇಖರಣಾ ಸಾಮರ್ಥ್ಯದ ಟ್ರ್ಯಾಕಿಂಗ್.

ಹೊಸ ವಿಧಾನದ ಪ್ರಯೋಜನಗಳು:

  • ಸಂಗ್ರಹಣೆ ಸ್ಥಳೀಯವಾಗಿರಬಹುದು ಅಥವಾ ನೆಟ್‌ವರ್ಕ್ ಮೂಲಕ ಸಂಪರ್ಕಿಸಬಹುದು;

  • ಸಂಪುಟಗಳು ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಗಾತ್ರವನ್ನು ಹೊಂದಬಹುದು, ಅದು ಅಪ್ಲಿಕೇಶನ್‌ನಿಂದ ಮೀರಬಾರದು;

  • ನಿರಂತರ ವಾಲ್ಯೂಮ್‌ಗಳನ್ನು ಒದಗಿಸುವುದನ್ನು ಬೆಂಬಲಿಸುವ ಮತ್ತು (ಸಾಮರ್ಥ್ಯ ಟ್ರ್ಯಾಕಿಂಗ್ ಅನ್ನು ಬೆಂಬಲಿಸಲು) ಕರೆಯನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವ ಯಾವುದೇ CSI ಡ್ರೈವರ್‌ಗಳೊಂದಿಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ GetCapacity;

  • ಚಾಲಕ ಮತ್ತು ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಅವಲಂಬಿಸಿ ಸಂಪುಟಗಳು ಕೆಲವು ಆರಂಭಿಕ ಡೇಟಾವನ್ನು ಹೊಂದಿರಬಹುದು;

  • ಪರಿಮಾಣದೊಂದಿಗೆ ಎಲ್ಲಾ ಪ್ರಮಾಣಿತ ಕಾರ್ಯಾಚರಣೆಗಳು (ಸ್ನ್ಯಾಪ್‌ಶಾಟ್ ರಚಿಸುವುದು, ಮರುಗಾತ್ರಗೊಳಿಸುವಿಕೆ, ಇತ್ಯಾದಿ) ಬೆಂಬಲಿತವಾಗಿದೆ;

  • ಮಾಡ್ಯೂಲ್ ಅಥವಾ ವಾಲ್ಯೂಮ್ ವಿವರಣೆಯನ್ನು ಸ್ವೀಕರಿಸುವ ಯಾವುದೇ ಅಪ್ಲಿಕೇಶನ್ ನಿಯಂತ್ರಕದೊಂದಿಗೆ ಸಂಪುಟಗಳನ್ನು ಬಳಸಬಹುದು;

  • ಕುಬರ್ನೆಟ್ಸ್ ಶೆಡ್ಯೂಲರ್ ತನ್ನದೇ ಆದ ಮೇಲೆ ಸೂಕ್ತವಾದ ನೋಡ್‌ಗಳನ್ನು ಆಯ್ಕೆ ಮಾಡುತ್ತದೆ, ಆದ್ದರಿಂದ ಶೆಡ್ಯೂಲರ್ ವಿಸ್ತರಣೆಗಳನ್ನು ಒದಗಿಸುವ ಮತ್ತು ಕಾನ್ಫಿಗರ್ ಮಾಡುವ ಅಥವಾ ವೆಬ್‌ಹೂಕ್‌ಗಳನ್ನು ಮಾರ್ಪಡಿಸುವ ಅಗತ್ಯವಿಲ್ಲ.

ಅಪ್ಲಿಕೇಶನ್ ಆಯ್ಕೆಗಳು

ಆದ್ದರಿಂದ, ಸಾಮಾನ್ಯ ಉದ್ದೇಶದ ಅಲ್ಪಕಾಲಿಕ ಸಂಪುಟಗಳು ಈ ಕೆಳಗಿನ ಬಳಕೆಯ ಸಂದರ್ಭಗಳಲ್ಲಿ ಸೂಕ್ತವಾಗಿವೆ:

ಮೆಮ್‌ಕ್ಯಾಶ್ಡ್‌ಗಾಗಿ RAM ಗೆ ಬದಲಿಯಾಗಿ ನಿರಂತರ ಸ್ಮರಣೆ

memcached ನ ಇತ್ತೀಚಿನ ಬಿಡುಗಡೆಗಳು ಬೆಂಬಲವನ್ನು ಸೇರಿಸಲಾಗಿದೆ ನಿರಂತರ ಸ್ಮರಣೆಯನ್ನು ಬಳಸುವುದು (ಇಂಟೆಲ್ ಆಪ್ಟೇನ್, ಇತ್ಯಾದಿ., ಅಂದಾಜು ಅನುವಾದಕ) ಸಾಮಾನ್ಯ RAM ಬದಲಿಗೆ. ಅಪ್ಲಿಕೇಶನ್ ನಿಯಂತ್ರಕದ ಮೂಲಕ ಮೆಮ್‌ಕ್ಯಾಶ್ಡ್ ಅನ್ನು ನಿಯೋಜಿಸುವಾಗ, ಸಿಎಸ್‌ಐ ಡ್ರೈವರ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು ಪಿಎಂಇಎಂನಿಂದ ನಿರ್ದಿಷ್ಟ ಗಾತ್ರದ ಪರಿಮಾಣವನ್ನು ನಿಯೋಜಿಸಲು ವಿನಂತಿಸಲು ನೀವು ಸಾಮಾನ್ಯ ಉದ್ದೇಶದ ಅಲ್ಪಕಾಲಿಕ ಪರಿಮಾಣಗಳನ್ನು ಬಳಸಬಹುದು. PMEM-CSI.

ಕಾರ್ಯಸ್ಥಳವಾಗಿ LVM ಸ್ಥಳೀಯ ಸಂಗ್ರಹಣೆ

RAM ಗಿಂತ ದೊಡ್ಡದಾದ ಡೇಟಾದೊಂದಿಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುವ ಅಪ್ಲಿಕೇಶನ್‌ಗಳಿಗೆ ಗಾತ್ರ ಅಥವಾ ಕಾರ್ಯಕ್ಷಮತೆಯ ಮೆಟ್ರಿಕ್‌ಗಳೊಂದಿಗೆ ಸ್ಥಳೀಯ ಸಂಗ್ರಹಣೆಯ ಅಗತ್ಯವಿರುತ್ತದೆ, ಅದು Kubernetes ನಿಂದ ಸಾಮಾನ್ಯ EmptyDir ಸಂಪುಟಗಳು ಒದಗಿಸುವುದಿಲ್ಲ. ಉದಾಹರಣೆಗೆ, ಈ ಉದ್ದೇಶಕ್ಕಾಗಿ ಇದನ್ನು ಬರೆಯಲಾಗಿದೆ TopoLVM.

ಡೇಟಾ ವಾಲ್ಯೂಮ್‌ಗಳಿಗೆ ಓದಲು-ಮಾತ್ರ ಪ್ರವೇಶ

ಪರಿಮಾಣದ ಹಂಚಿಕೆಯು ಪೂರ್ಣ ಪರಿಮಾಣದ ರಚನೆಗೆ ಕಾರಣವಾಗಬಹುದು:

ಈ ಸಂಪುಟಗಳನ್ನು ಓದಲು-ಮಾತ್ರ ಮೋಡ್‌ನಲ್ಲಿ ಅಳವಡಿಸಬಹುದಾಗಿದೆ.

ಹೇಗೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ

ಸಾಮಾನ್ಯ ಉದ್ದೇಶದ ಅಲ್ಪಕಾಲಿಕ ಸಂಪುಟಗಳು

ಸಾಮಾನ್ಯ ಉದ್ದೇಶದ ಅಲ್ಪಕಾಲಿಕ ಸಂಪುಟಗಳ ಪ್ರಮುಖ ಲಕ್ಷಣವೆಂದರೆ ಹೊಸ ಸಂಪುಟ ಮೂಲ, EphemeralVolumeSource, ವಾಲ್ಯೂಮ್ ವಿನಂತಿಯನ್ನು ರಚಿಸಲು ಎಲ್ಲಾ ಕ್ಷೇತ್ರಗಳನ್ನು ಒಳಗೊಂಡಿದೆ (ಐತಿಹಾಸಿಕವಾಗಿ ನಿರಂತರ ವಾಲ್ಯೂಮ್ ವಿನಂತಿ ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ, PVC). ಹೊಸ ನಿಯಂತ್ರಕ kube-controller-manager ಅಂತಹ ಪರಿಮಾಣದ ಮೂಲವನ್ನು ರಚಿಸುವ ಪಾಡ್‌ಗಳನ್ನು ನೋಡುತ್ತದೆ ಮತ್ತು ನಂತರ ಆ ಪಾಡ್‌ಗಳಿಗೆ PVC ಅನ್ನು ರಚಿಸುತ್ತದೆ. CSI ಡ್ರೈವರ್‌ಗಾಗಿ, ಈ ವಿನಂತಿಯು ಇತರರಂತೆಯೇ ಕಾಣುತ್ತದೆ, ಆದ್ದರಿಂದ ಇಲ್ಲಿ ಯಾವುದೇ ವಿಶೇಷ ಬೆಂಬಲದ ಅಗತ್ಯವಿಲ್ಲ.

ಅಂತಹ PVC ಗಳು ಇರುವವರೆಗೆ, ಅವುಗಳನ್ನು ವಾಲ್ಯೂಮ್‌ನಲ್ಲಿ ಯಾವುದೇ ಇತರ ವಿನಂತಿಗಳಂತೆ ಬಳಸಬಹುದು. ನಿರ್ದಿಷ್ಟವಾಗಿ, ಪರಿಮಾಣವನ್ನು ನಕಲಿಸುವಾಗ ಅಥವಾ ಪರಿಮಾಣದಿಂದ ಸ್ನ್ಯಾಪ್‌ಶಾಟ್ ರಚಿಸುವಾಗ ಅವುಗಳನ್ನು ಡೇಟಾ ಮೂಲವಾಗಿ ಉಲ್ಲೇಖಿಸಬಹುದು. PVC ವಸ್ತುವು ಪರಿಮಾಣದ ಪ್ರಸ್ತುತ ಸ್ಥಿತಿಯನ್ನು ಸಹ ಒಳಗೊಂಡಿದೆ.

ಸ್ವಯಂಚಾಲಿತವಾಗಿ ರಚಿಸಲಾದ PVC ಗಳ ಹೆಸರುಗಳನ್ನು ಪೂರ್ವನಿರ್ಧರಿತಗೊಳಿಸಲಾಗಿದೆ: ಅವು ಪಾಡ್ ಹೆಸರು ಮತ್ತು ವಾಲ್ಯೂಮ್ ಹೆಸರಿನ ಸಂಯೋಜನೆಯಾಗಿದ್ದು, ಹೈಫನ್‌ನಿಂದ ಬೇರ್ಪಡಿಸಲಾಗಿದೆ. ಪೂರ್ವನಿರ್ಧರಿತ ಹೆಸರುಗಳು PVC ಯೊಂದಿಗೆ ಸಂವಹನ ನಡೆಸುವುದನ್ನು ಸುಲಭಗೊಳಿಸುತ್ತದೆ ಏಕೆಂದರೆ ನೀವು ಪಾಡ್ ಹೆಸರು ಮತ್ತು ಪರಿಮಾಣದ ಹೆಸರನ್ನು ತಿಳಿದಿದ್ದರೆ ನೀವು ಅದನ್ನು ಹುಡುಕಬೇಕಾಗಿಲ್ಲ. ತೊಂದರೆಯೆಂದರೆ, ಹೆಸರು ಈಗಾಗಲೇ ಬಳಕೆಯಲ್ಲಿರಬಹುದು, ಇದನ್ನು ಕುಬರ್ನೆಟ್ಸ್ ಪತ್ತೆ ಮಾಡಿದ್ದಾರೆ ಮತ್ತು ಇದರ ಪರಿಣಾಮವಾಗಿ ಪಾಡ್ ಪ್ರಾರಂಭವಾಗದಂತೆ ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ.

ಪಾಡ್ ಜೊತೆಗೆ ವಾಲ್ಯೂಮ್ ಅನ್ನು ಅಳಿಸಲಾಗಿದೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು, ನಿಯಂತ್ರಕವು ಮಾಲೀಕರ ಅಡಿಯಲ್ಲಿ ವಾಲ್ಯೂಮ್‌ಗೆ ವಿನಂತಿಯನ್ನು ಮಾಡುತ್ತದೆ. ಪಾಡ್ ಅನ್ನು ಅಳಿಸಿದಾಗ, ಪ್ರಮಾಣಿತ ಕಸ ಸಂಗ್ರಹಣೆ ಕಾರ್ಯವಿಧಾನವು ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ, ಇದು ವಿನಂತಿ ಮತ್ತು ಪರಿಮಾಣ ಎರಡನ್ನೂ ಅಳಿಸುತ್ತದೆ.

ಶೇಖರಣಾ ವರ್ಗದ ಸಾಮಾನ್ಯ ಕಾರ್ಯವಿಧಾನದ ಮೂಲಕ ಶೇಖರಣಾ ಚಾಲಕದಿಂದ ವಿನಂತಿಗಳನ್ನು ಹೊಂದಾಣಿಕೆ ಮಾಡಲಾಗುತ್ತದೆ. ತಕ್ಷಣದ ಮತ್ತು ತಡವಾಗಿ ಬಂಧಿಸುವ ತರಗತಿಗಳು (ಅಕಾ WaitForFirstConsumer) ಬೆಂಬಲಿತವಾಗಿದೆ, ಅಲ್ಪಕಾಲಿಕ ಸಂಪುಟಗಳಿಗೆ ಇದು ಬಳಸಲು ಅರ್ಥಪೂರ್ಣವಾಗಿದೆ WaitForFirstConsumer, ನಂತರ ಶೆಡ್ಯೂಲರ್ ನೋಡ್ ಅನ್ನು ಆಯ್ಕೆಮಾಡುವಾಗ ನೋಡ್ ಬಳಕೆ ಮತ್ತು ಶೇಖರಣಾ ಲಭ್ಯತೆ ಎರಡನ್ನೂ ಪರಿಗಣಿಸಬಹುದು. ಹೊಸ ವೈಶಿಷ್ಟ್ಯವು ಇಲ್ಲಿ ಕಾಣಿಸಿಕೊಳ್ಳುತ್ತದೆ.

ಶೇಖರಣಾ ಸಾಮರ್ಥ್ಯದ ಟ್ರ್ಯಾಕಿಂಗ್

ಸಾಮಾನ್ಯವಾಗಿ ಶೆಡ್ಯೂಲರ್‌ಗೆ CSI ಡ್ರೈವರ್ ಎಲ್ಲಿ ವಾಲ್ಯೂಮ್ ಅನ್ನು ರಚಿಸುತ್ತದೆ ಎಂಬುದರ ಬಗ್ಗೆ ಯಾವುದೇ ಜ್ಞಾನವಿರುವುದಿಲ್ಲ. ಈ ಮಾಹಿತಿಯನ್ನು ವಿನಂತಿಸಲು ಶೆಡ್ಯೂಲರ್‌ಗೆ ಚಾಲಕನನ್ನು ನೇರವಾಗಿ ಸಂಪರ್ಕಿಸಲು ಯಾವುದೇ ಮಾರ್ಗವಿಲ್ಲ. ಆದ್ದರಿಂದ, ಯಾವ ಸಂಪುಟಗಳನ್ನು ಪ್ರವೇಶಿಸಬಹುದು (ಲೇಟ್ ಬೈಂಡಿಂಗ್) ಅಥವಾ ಸ್ಥಳದ ಆಯ್ಕೆಯನ್ನು ಸಂಪೂರ್ಣವಾಗಿ ಚಾಲಕನಿಗೆ (ತಕ್ಷಣದ ಬೈಂಡಿಂಗ್) ಬಿಡುವವರೆಗೆ ಶೆಡ್ಯೂಲರ್ ಪೋಲ್ ನೋಡ್‌ಗಳನ್ನು ಮಾಡುತ್ತದೆ.

ಹೊಸ ಎಪಿಐ CSIStorageCapacity, ಇದು ಆಲ್ಫಾ ಹಂತದಲ್ಲಿದೆ, ಇದು ಶೆಡ್ಯೂಲರ್‌ಗೆ ಲಭ್ಯವಾಗುವಂತೆ ಅಗತ್ಯವಿರುವ ಡೇಟಾವನ್ನು ಇತ್ಯಾದಿಗಳಲ್ಲಿ ಸಂಗ್ರಹಿಸಲು ಅನುಮತಿಸುತ್ತದೆ. ಸಾಮಾನ್ಯ ಉದ್ದೇಶದ ಅಲ್ಪಕಾಲಿಕ ಸಂಪುಟಗಳಿಗೆ ಬೆಂಬಲದಂತೆ, ನೀವು ಚಾಲಕವನ್ನು ನಿಯೋಜಿಸಿದಾಗ, ನೀವು ಶೇಖರಣಾ ಸಾಮರ್ಥ್ಯದ ಟ್ರ್ಯಾಕಿಂಗ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಬೇಕು: external-provisioner ಸಾಮಾನ್ಯ ಮೂಲಕ ಚಾಲಕರಿಂದ ಪಡೆದ ಸಾಮರ್ಥ್ಯದ ಮಾಹಿತಿಯನ್ನು ಪ್ರಕಟಿಸಬೇಕು GetCapacity.

ಶೆಡ್ಯೂಲರ್ ಲೇಟ್ ಬೈಂಡಿಂಗ್ ಅನ್ನು ಬಳಸುವ ಅನ್‌ಬೌಂಡ್ ವಾಲ್ಯೂಮ್‌ನೊಂದಿಗೆ ಪಾಡ್‌ಗಾಗಿ ನೋಡ್ ಅನ್ನು ಆಯ್ಕೆ ಮಾಡಬೇಕಾದರೆ ಮತ್ತು ಫ್ಲ್ಯಾಗ್ ಅನ್ನು ಹೊಂದಿಸುವ ಮೂಲಕ ನಿಯೋಜನೆಯ ಸಮಯದಲ್ಲಿ ಚಾಲಕ ಈ ವೈಶಿಷ್ಟ್ಯವನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿದರೆ CSIDriver.storageCapacity, ನಂತರ ಸಾಕಷ್ಟು ಶೇಖರಣಾ ಸಾಮರ್ಥ್ಯವನ್ನು ಹೊಂದಿರದ ನೋಡ್‌ಗಳನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ತಿರಸ್ಕರಿಸಲಾಗುತ್ತದೆ. ಇದು ಸಾಮಾನ್ಯ ಉದ್ದೇಶದ ಅಲ್ಪಕಾಲಿಕ ಮತ್ತು ನಿರಂತರ ಸಂಪುಟಗಳಿಗೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ, ಆದರೆ CSI ಅಲ್ಪಕಾಲಿಕ ಸಂಪುಟಗಳಿಗೆ ಅಲ್ಲ ಏಕೆಂದರೆ ಅವುಗಳ ನಿಯತಾಂಕಗಳನ್ನು ಕುಬರ್ನೆಟ್ಸ್‌ನಿಂದ ಓದಲಾಗುವುದಿಲ್ಲ.

ಎಂದಿನಂತೆ, ಪಾಡ್‌ಗಳನ್ನು ನಿಗದಿಪಡಿಸುವ ಮೊದಲು ತಕ್ಷಣವೇ ಲಿಂಕ್ ಮಾಡಲಾದ ಸಂಪುಟಗಳನ್ನು ರಚಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ಅವುಗಳ ನಿಯೋಜನೆಯನ್ನು ಶೇಖರಣಾ ಚಾಲಕರಿಂದ ಆಯ್ಕೆ ಮಾಡಲಾಗುತ್ತದೆ, ಆದ್ದರಿಂದ ಕಾನ್ಫಿಗರ್ ಮಾಡುವಾಗ external-provisioner ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ, ತಕ್ಷಣದ ಬೈಂಡಿಂಗ್ ಹೊಂದಿರುವ ಶೇಖರಣಾ ತರಗತಿಗಳನ್ನು ಬಿಟ್ಟುಬಿಡಲಾಗುತ್ತದೆ, ಏಕೆಂದರೆ ಈ ಡೇಟಾವನ್ನು ಹೇಗಾದರೂ ಬಳಸಲಾಗುವುದಿಲ್ಲ.

ಕ್ಯುಬರ್ನೆಟ್ಸ್ ಶೆಡ್ಯೂಲರ್ ಸಂಭಾವ್ಯವಾಗಿ ಔಟ್-ಡೇಟ್ ಮಾಹಿತಿಯೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು ಒತ್ತಾಯಿಸಲ್ಪಟ್ಟಿರುವುದರಿಂದ, ಪರಿಮಾಣವನ್ನು ರಚಿಸಿದಾಗ ಪ್ರತಿಯೊಂದು ಸಂದರ್ಭದಲ್ಲೂ ಸಾಮರ್ಥ್ಯವು ಲಭ್ಯವಿರುತ್ತದೆ ಎಂಬುದಕ್ಕೆ ಯಾವುದೇ ಗ್ಯಾರಂಟಿ ಇಲ್ಲ, ಆದರೆ ಮರುಪ್ರಯತ್ನಗಳಿಲ್ಲದೆ ಅದನ್ನು ರಚಿಸುವ ಸಾಧ್ಯತೆಗಳು ಹೆಚ್ಚಾಗುತ್ತವೆ.

ಎನ್ಬಿ ನೀವು ಹೆಚ್ಚು ವಿವರವಾದ ಮಾಹಿತಿಯನ್ನು ಪಡೆಯಬಹುದು, ಹಾಗೆಯೇ ಸುರಕ್ಷಿತವಾಗಿ “ಬೆಕ್ಕುಗಳ ಸ್ಟ್ಯಾಂಡ್‌ನಲ್ಲಿ ಅಭ್ಯಾಸ”, ಮತ್ತು ಸಂಪೂರ್ಣವಾಗಿ ಗ್ರಹಿಸಲಾಗದ ಪರಿಸ್ಥಿತಿಯ ಸಂದರ್ಭದಲ್ಲಿ, ತೀವ್ರವಾದ ಕೋರ್ಸ್‌ಗಳಲ್ಲಿ ಅರ್ಹ ತಾಂತ್ರಿಕ ಬೆಂಬಲ ಸಹಾಯವನ್ನು ಪಡೆಯಬಹುದು - ಕುಬರ್ನೆಟ್ಸ್ ಬೇಸ್ ಸೆಪ್ಟೆಂಬರ್ 28-30 ರಂದು ನಡೆಯಲಿದೆ, ಮತ್ತು ಹೆಚ್ಚು ಸುಧಾರಿತ ತಜ್ಞರಿಗೆ ಕುಬರ್ನೆಟ್ಸ್ ಮೆಗಾ ಅಕ್ಟೋಬರ್ 14-16.

ಭದ್ರತೆ

CSIS ಶೇಖರಣಾ ಸಾಮರ್ಥ್ಯ

CSIStorageCapacity ಆಬ್ಜೆಕ್ಟ್‌ಗಳು ನೇಮ್‌ಸ್ಪೇಸ್‌ಗಳಲ್ಲಿ ವಾಸಿಸುತ್ತವೆ; ಪ್ರತಿಯೊಂದು CSI ಡ್ರೈವರ್ ಅನ್ನು ಅದರ ಸ್ವಂತ ನೇಮ್‌ಸ್ಪೇಸ್‌ನಲ್ಲಿ ರೋಲಿಂಗ್ ಮಾಡುವಾಗ, ಡೇಟಾ ಎಲ್ಲಿಂದ ಬರುತ್ತಿದೆ ಎಂಬುದು ಸ್ಪಷ್ಟವಾಗಿರುವುದರಿಂದ ಆ ಜಾಗದಲ್ಲಿ CSIStorageCapacity ಗೆ RBAC ಹಕ್ಕುಗಳನ್ನು ನಿರ್ಬಂಧಿಸಲು ಶಿಫಾರಸು ಮಾಡಲಾಗಿದೆ. ಕುಬರ್ನೆಟ್ಸ್ ಇದನ್ನು ಹೇಗಾದರೂ ಪರಿಶೀಲಿಸುವುದಿಲ್ಲ, ಮತ್ತು ಸಾಮಾನ್ಯವಾಗಿ ಡ್ರೈವರ್‌ಗಳನ್ನು ಅದೇ ನೇಮ್‌ಸ್ಪೇಸ್‌ನಲ್ಲಿ ಇರಿಸಲಾಗುತ್ತದೆ, ಆದ್ದರಿಂದ ಅಂತಿಮವಾಗಿ ಡ್ರೈವರ್‌ಗಳು ಕೆಲಸ ಮಾಡುತ್ತಾರೆ ಮತ್ತು ತಪ್ಪಾದ ಡೇಟಾವನ್ನು ಪ್ರಕಟಿಸುವುದಿಲ್ಲ ಎಂದು ನಿರೀಕ್ಷಿಸಲಾಗಿದೆ (ಮತ್ತು ಇಲ್ಲಿ ನನ್ನ ಕಾರ್ಡ್ ವಿಫಲವಾಗಿದೆ, ಅಂದಾಜು ಗಡ್ಡದ ಹಾಸ್ಯವನ್ನು ಆಧರಿಸಿದ ಅನುವಾದಕ)

ಸಾಮಾನ್ಯ ಉದ್ದೇಶದ ಅಲ್ಪಕಾಲಿಕ ಸಂಪುಟಗಳು

ಬಳಕೆದಾರರು ಪಾಡ್ (ನೇರವಾಗಿ ಅಥವಾ ಪರೋಕ್ಷವಾಗಿ) ರಚಿಸಲು ಹಕ್ಕುಗಳನ್ನು ಹೊಂದಿದ್ದರೆ, ಅವರು ವಾಲ್ಯೂಮ್‌ನಲ್ಲಿ ವಿನಂತಿಯನ್ನು ರಚಿಸಲು ಹಕ್ಕುಗಳನ್ನು ಹೊಂದಿಲ್ಲದಿದ್ದರೂ ಸಹ ಸಾಮಾನ್ಯ ಉದ್ದೇಶದ ಅಲ್ಪಕಾಲಿಕ ಸಂಪುಟಗಳನ್ನು ರಚಿಸಲು ಸಾಧ್ಯವಾಗುತ್ತದೆ. ಏಕೆಂದರೆ RBAC ಅನುಮತಿ ಪರಿಶೀಲನೆಗಳನ್ನು PVC ಅನ್ನು ರಚಿಸುವ ನಿಯಂತ್ರಕಕ್ಕೆ ಅನ್ವಯಿಸಲಾಗುತ್ತದೆ, ಬಳಕೆದಾರರಿಗೆ ಅಲ್ಲ. ಸೇರಿಸಲು ಇದು ಮುಖ್ಯ ಬದಲಾವಣೆಯಾಗಿದೆ ನಿಮ್ಮ ಖಾತೆಗೆ, ವಿಶ್ವಾಸಾರ್ಹವಲ್ಲದ ಬಳಕೆದಾರರು ಸಂಪುಟಗಳನ್ನು ರಚಿಸಲು ಹಕ್ಕುಗಳನ್ನು ಹೊಂದಿರದ ಕ್ಲಸ್ಟರ್‌ಗಳಲ್ಲಿ ಈ ವೈಶಿಷ್ಟ್ಯವನ್ನು ಸಕ್ರಿಯಗೊಳಿಸುವ ಮೊದಲು.

ಉದಾಹರಣೆಗೆ

ಪ್ರತ್ಯೇಕಿಸಿ ರೆಂಬೆ PMEM-CSI ಆಲ್ಫಾ ಹಂತದಲ್ಲಿನ ಎಲ್ಲಾ ವೈಶಿಷ್ಟ್ಯಗಳೊಂದಿಗೆ QEMU ವರ್ಚುವಲ್ ಯಂತ್ರಗಳ ಒಳಗೆ ಕುಬರ್ನೆಟ್ಸ್ 1.19 ಕ್ಲಸ್ಟರ್ ಅನ್ನು ಚಲಾಯಿಸಲು ಅಗತ್ಯವಿರುವ ಎಲ್ಲಾ ಬದಲಾವಣೆಗಳನ್ನು ಒಳಗೊಂಡಿದೆ. ಚಾಲಕ ಕೋಡ್ ಬದಲಾಗಿಲ್ಲ, ನಿಯೋಜನೆ ಮಾತ್ರ ಬದಲಾಗಿದೆ.

ಸೂಕ್ತವಾದ ಗಣಕದಲ್ಲಿ (Linux, ಒಬ್ಬ ಸಾಮಾನ್ಯ ಬಳಕೆದಾರರು ಬಳಸಬಹುದು ಡಾಕರ್, ನೋಡಿ ಇಲ್ಲಿ ವಿವರಗಳು) ಈ ಆಜ್ಞೆಗಳು ಕ್ಲಸ್ಟರ್ ಅನ್ನು ತರುತ್ತವೆ ಮತ್ತು PMEM-CSI ಡ್ರೈವರ್ ಅನ್ನು ಸ್ಥಾಪಿಸುತ್ತವೆ:

git clone --branch=kubernetes-1-19-blog-post https://github.com/intel/pmem-csi.git
cd pmem-csi
export TEST_KUBERNETES_VERSION=1.19 TEST_FEATURE_GATES=CSIStorageCapacity=true,GenericEphemeralVolume=true TEST_PMEM_REGISTRY=intel
make start && echo && test/setup-deployment.sh

ಎಲ್ಲವೂ ಕೆಲಸ ಮಾಡಿದ ನಂತರ, ಔಟ್ಪುಟ್ ಬಳಕೆಗೆ ಸೂಚನೆಗಳನ್ನು ಹೊಂದಿರುತ್ತದೆ:

The test cluster is ready. Log in with [...]/pmem-csi/_work/pmem-govm/ssh.0, run
kubectl once logged in.  Alternatively, use kubectl directly with the
following env variable:
   KUBECONFIG=[...]/pmem-csi/_work/pmem-govm/kube.config

secret/pmem-csi-registry-secrets created
secret/pmem-csi-node-secrets created
serviceaccount/pmem-csi-controller created
...
To try out the pmem-csi driver ephemeral volumes:
   cat deploy/kubernetes-1.19/pmem-app-ephemeral.yaml |
   [...]/pmem-csi/_work/pmem-govm/ssh.0 kubectl create -f -

CSIStorageCapacity ಆಬ್ಜೆಕ್ಟ್‌ಗಳು ಮನುಷ್ಯರಿಂದ ಓದಲು ಉದ್ದೇಶಿಸಿಲ್ಲ, ಆದ್ದರಿಂದ ಕೆಲವು ಪ್ರಕ್ರಿಯೆಯ ಅಗತ್ಯವಿದೆ. ಗೋಲಾಂಗ್ ಟೆಂಪ್ಲೇಟ್ ಫಿಲ್ಟರ್‌ಗಳು ಶೇಖರಣಾ ತರಗತಿಗಳನ್ನು ತೋರಿಸುತ್ತದೆ, ಈ ಉದಾಹರಣೆಯು ಹೆಸರು, ಟೋಪೋಲಜಿ ಮತ್ತು ಸಾಮರ್ಥ್ಯವನ್ನು ತೋರಿಸುತ್ತದೆ:

$ kubectl get 
        -o go-template='{{range .items}}{{if eq .storageClassName "pmem-csi-sc-late-binding"}}{{.metadata.name}} {{.nodeTopology.matchLabels}} {{.capacity}}
{{end}}{{end}}' 
        csistoragecapacities
csisc-2js6n map[pmem-csi.intel.com/node:pmem-csi-pmem-govm-worker2] 30716Mi
csisc-sqdnt map[pmem-csi.intel.com/node:pmem-csi-pmem-govm-worker1] 30716Mi
csisc-ws4bv map[pmem-csi.intel.com/node:pmem-csi-pmem-govm-worker3] 30716Mi

ಒಂದೇ ವಸ್ತುವು ಈ ಕೆಳಗಿನ ವಿಷಯವನ್ನು ಹೊಂದಿದೆ:

$ kubectl describe csistoragecapacities/csisc-6cw8j
Name:         csisc-sqdnt
Namespace:    default
Labels:       <none>
Annotations:  <none>
API Version:  storage.k8s.io/v1alpha1
Capacity:     30716Mi
Kind:         CSIStorageCapacity
Metadata:
  Creation Timestamp:  2020-08-11T15:41:03Z
  Generate Name:       csisc-
  Managed Fields:
    ...
  Owner References:
    API Version:     apps/v1
    Controller:      true
    Kind:            StatefulSet
    Name:            pmem-csi-controller
    UID:             590237f9-1eb4-4208-b37b-5f7eab4597d1
  Resource Version:  2994
  Self Link:         /apis/storage.k8s.io/v1alpha1/namespaces/default/csistoragecapacities/csisc-sqdnt
  UID:               da36215b-3b9d-404a-a4c7-3f1c3502ab13
Node Topology:
  Match Labels:
    pmem-csi.intel.com/node:  pmem-csi-pmem-govm-worker1
Storage Class Name:           pmem-csi-sc-late-binding
Events:                       <none>

ಒಂದೇ ಸಾಮಾನ್ಯ ಉದ್ದೇಶದ ಅಲ್ಪಕಾಲಿಕ ಪರಿಮಾಣದೊಂದಿಗೆ ಡೆಮೊ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ರಚಿಸಲು ಪ್ರಯತ್ನಿಸೋಣ. ಫೈಲ್ ವಿಷಯಗಳು pmem-app-ephemeral.yaml:

# This example Pod definition demonstrates
# how to use generic ephemeral inline volumes
# with a PMEM-CSI storage class.
kind: Pod
apiVersion: v1
metadata:
  name: my-csi-app-inline-volume
spec:
  containers:
    - name: my-frontend
      image: intel/pmem-csi-driver-test:v0.7.14
      command: [ "sleep", "100000" ]
      volumeMounts:
      - mountPath: "/data"
        name: my-csi-volume
  volumes:
  - name: my-csi-volume
    ephemeral:
      volumeClaimTemplate:
        spec:
          accessModes:
          - ReadWriteOnce
          resources:
            requests:
              storage: 4Gi
          storageClassName: pmem-csi-sc-late-binding

ರಚಿಸಿದ ನಂತರ, ಮೇಲಿನ ಸೂಚನೆಗಳಲ್ಲಿ ತೋರಿಸಿರುವಂತೆ, ನಾವು ಈಗ ಹೆಚ್ಚುವರಿ ಪಾಡ್ ಮತ್ತು PVC ಅನ್ನು ಹೊಂದಿದ್ದೇವೆ:

$ kubectl get pods/my-csi-app-inline-volume -o wide
NAME                       READY   STATUS    RESTARTS   AGE     IP          NODE                         NOMINATED NODE   READINESS GATES
my-csi-app-inline-volume   1/1     Running   0          6m58s   10.36.0.2   pmem-csi-pmem-govm-worker1   <none>           <none>
$ kubectl get pvc/my-csi-app-inline-volume-my-csi-volume
NAME                                     STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS               AGE
my-csi-app-inline-volume-my-csi-volume   Bound    pvc-c11eb7ab-a4fa-46fe-b515-b366be908823   4Gi        RWO            pmem-csi-sc-late-binding   9m21s

PVC ಮಾಲೀಕರು - ಅಡಿಯಲ್ಲಿ:

$ kubectl get -o yaml pvc/my-csi-app-inline-volume-my-csi-volume
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  annotations:
    pv.kubernetes.io/bind-completed: "yes"
    pv.kubernetes.io/bound-by-controller: "yes"
    volume.beta.kubernetes.io/storage-provisioner: pmem-csi.intel.com
    volume.kubernetes.io/selected-node: pmem-csi-pmem-govm-worker1
  creationTimestamp: "2020-08-11T15:44:57Z"
  finalizers:
  - kubernetes.io/pvc-protection
  managedFields:
    ...
  name: my-csi-app-inline-volume-my-csi-volume
  namespace: default
  ownerReferences:
  - apiVersion: v1
    blockOwnerDeletion: true
    controller: true
    kind: Pod
    name: my-csi-app-inline-volume
    uid: 75c925bf-ca8e-441a-ac67-f190b7a2265f
...

ನಿರೀಕ್ಷಿತವಾಗಿ ನವೀಕರಿಸಿದ ಮಾಹಿತಿ pmem-csi-pmem-govm-worker1:

csisc-2js6n map[pmem-csi.intel.com/node:pmem-csi-pmem-govm-worker2] 30716Mi
csisc-sqdnt map[pmem-csi.intel.com/node:pmem-csi-pmem-govm-worker1] 26620Mi
csisc-ws4bv map[pmem-csi.intel.com/node:pmem-csi-pmem-govm-worker3] 30716Mi

ಮತ್ತೊಂದು ಅಪ್ಲಿಕೇಶನ್‌ಗೆ 26620Mi ಗಿಂತ ಹೆಚ್ಚಿನ ಅಗತ್ಯವಿದ್ದರೆ, ಶೆಡ್ಯೂಲರ್ ಗಣನೆಗೆ ತೆಗೆದುಕೊಳ್ಳುವುದಿಲ್ಲ pmem-csi-pmem-govm-worker1 ಯಾವುದೇ ಸಂದರ್ಭದಲ್ಲಿ.

ಮುಂದಿನ ಏನು?

ಎರಡೂ ವೈಶಿಷ್ಟ್ಯಗಳು ಇನ್ನೂ ಅಭಿವೃದ್ಧಿಯಲ್ಲಿವೆ. ಆಲ್ಫಾ ಪರೀಕ್ಷೆಯ ಸಮಯದಲ್ಲಿ ಹಲವಾರು ಅಪ್ಲಿಕೇಶನ್‌ಗಳನ್ನು ತೆರೆಯಲಾಗಿದೆ. ಸುಧಾರಣೆ ಪ್ರಸ್ತಾಪದ ಲಿಂಕ್‌ಗಳು ಬೀಟಾ ಹಂತಕ್ಕೆ ಹೋಗಲು ಮಾಡಬೇಕಾದ ಕೆಲಸವನ್ನು ದಾಖಲಿಸುತ್ತವೆ, ಹಾಗೆಯೇ ಯಾವ ಪರ್ಯಾಯಗಳನ್ನು ಈಗಾಗಲೇ ಪರಿಗಣಿಸಲಾಗಿದೆ ಮತ್ತು ತಿರಸ್ಕರಿಸಲಾಗಿದೆ:

ಮೂಲ: www.habr.com

ಕಾಮೆಂಟ್ ಅನ್ನು ಸೇರಿಸಿ