ಕುಬರ್ನೆಟ್ಸ್ ಪಾಡ್ IP ವಿಳಾಸವನ್ನು ಹೇಗೆ ಪಡೆಯುತ್ತದೆ?

ಸೂಚನೆ. ಅನುವಾದ.: ಲಿಂಕ್ಡ್‌ಇನ್‌ನಿಂದ ಎಸ್‌ಆರ್‌ಇ ಇಂಜಿನಿಯರ್ ಬರೆದಿರುವ ಈ ಲೇಖನವು ಕುಬರ್ನೆಟ್ಸ್‌ನಲ್ಲಿನ ಆಂತರಿಕ ಮ್ಯಾಜಿಕ್ ಬಗ್ಗೆ ವಿವರವಾಗಿ ಹೋಗುತ್ತದೆ - ಹೆಚ್ಚು ನಿಖರವಾಗಿ, ಸಿಆರ್‌ಐ, ಸಿಎನ್‌ಐ ಮತ್ತು ಕ್ಯೂಬ್-ಎಪಿಸರ್ವರ್‌ನ ಪರಸ್ಪರ ಕ್ರಿಯೆ - ಅದು ಮುಂದಿನ ಪಾಡ್‌ಗೆ ಐಪಿ ವಿಳಾಸವನ್ನು ನಿಯೋಜಿಸಬೇಕಾದಾಗ ಸಂಭವಿಸುತ್ತದೆ.

ಮೂಲಭೂತ ಅವಶ್ಯಕತೆಗಳಲ್ಲಿ ಒಂದಾಗಿದೆ ಕುಬರ್ನೆಟ್ಸ್ ನೆಟ್ವರ್ಕ್ ಮಾದರಿ ಪ್ರತಿಯೊಂದು ಪಾಡ್ ತನ್ನದೇ ಆದ IP ವಿಳಾಸವನ್ನು ಹೊಂದಿರಬೇಕು ಮತ್ತು ಕ್ಲಸ್ಟರ್‌ನಲ್ಲಿರುವ ಯಾವುದೇ ಇತರ ಪಾಡ್ ಅದನ್ನು ಆ ವಿಳಾಸದಲ್ಲಿ ಸಂಪರ್ಕಿಸಲು ಸಾಧ್ಯವಾಗುತ್ತದೆ. ಈ ನೆಟ್‌ವರ್ಕ್ ಮಾದರಿಯನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು ಸಹಾಯ ಮಾಡುವ ಅನೇಕ ನೆಟ್‌ವರ್ಕ್ "ಒದಗಿಸುವವರು" (ಫ್ಲಾನ್ನೆಲ್, ಕ್ಯಾಲಿಕೊ, ಕೆನಾಲ್, ಇತ್ಯಾದಿ) ಇವೆ.

ನಾನು ಕುಬರ್ನೆಟ್ಸ್‌ನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು ಪ್ರಾರಂಭಿಸಿದಾಗ, ಪಾಡ್‌ಗಳು ತಮ್ಮ ಐಪಿ ವಿಳಾಸಗಳನ್ನು ಹೇಗೆ ನಿಖರವಾಗಿ ಪಡೆಯುತ್ತವೆ ಎಂಬುದು ನನಗೆ ಸಂಪೂರ್ಣವಾಗಿ ಸ್ಪಷ್ಟವಾಗಿಲ್ಲ. ಪ್ರತ್ಯೇಕ ಘಟಕಗಳು ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತವೆ ಎಂಬುದರ ತಿಳುವಳಿಕೆಯೊಂದಿಗೆ, ಅವು ಒಟ್ಟಿಗೆ ಕೆಲಸ ಮಾಡುವುದನ್ನು ಕಲ್ಪಿಸಿಕೊಳ್ಳುವುದು ಕಷ್ಟಕರವಾಗಿತ್ತು. ಉದಾಹರಣೆಗೆ, CNI ಪ್ಲಗಿನ್‌ಗಳು ಏನೆಂದು ನನಗೆ ತಿಳಿದಿತ್ತು, ಆದರೆ ಅವುಗಳನ್ನು ಎಷ್ಟು ನಿಖರವಾಗಿ ಕರೆಯಲಾಗಿದೆ ಎಂದು ನನಗೆ ತಿಳಿದಿರಲಿಲ್ಲ. ಆದ್ದರಿಂದ, ವಿವಿಧ ನೆಟ್‌ವರ್ಕ್ ಘಟಕಗಳ ಬಗ್ಗೆ ಜ್ಞಾನವನ್ನು ಹಂಚಿಕೊಳ್ಳಲು ನಾನು ಈ ಲೇಖನವನ್ನು ಬರೆಯಲು ನಿರ್ಧರಿಸಿದೆ ಮತ್ತು ಕುಬರ್ನೆಟ್ಸ್ ಕ್ಲಸ್ಟರ್‌ನಲ್ಲಿ ಅವು ಹೇಗೆ ಒಟ್ಟಿಗೆ ಕೆಲಸ ಮಾಡುತ್ತವೆ, ಇದು ಪ್ರತಿ ಪಾಡ್ ತನ್ನದೇ ಆದ ವಿಶಿಷ್ಟ IP ವಿಳಾಸವನ್ನು ಪಡೆಯಲು ಅನುಮತಿಸುತ್ತದೆ.

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

ಕೆಲವು ಮೂಲಭೂತ ಪರಿಕಲ್ಪನೆಗಳು

ಕಂಟೈನರ್‌ಗಳು ಮತ್ತು ನೆಟ್‌ವರ್ಕ್: ಸಂಕ್ಷಿಪ್ತ ಅವಲೋಕನ

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

ಒಂದು ಹೋಸ್ಟ್‌ನಲ್ಲಿ ಕಂಟೈನರ್‌ಗಳು

ಒಂದೇ ಹೋಸ್ಟ್‌ನಲ್ಲಿ ಚಾಲನೆಯಲ್ಲಿರುವ ಕಂಟೈನರ್‌ಗಳ ನಡುವೆ IP ವಿಳಾಸಗಳ ಮೂಲಕ ಸಂವಹನವನ್ನು ಸಂಘಟಿಸಲು ಒಂದು ಮಾರ್ಗವೆಂದರೆ Linux ಸೇತುವೆಯನ್ನು ರಚಿಸುವುದು. ಈ ಉದ್ದೇಶಕ್ಕಾಗಿ, ವರ್ಚುವಲ್ ಸಾಧನಗಳನ್ನು ಕುಬರ್ನೆಟ್ಸ್ (ಮತ್ತು ಡಾಕರ್) ನಲ್ಲಿ ರಚಿಸಲಾಗಿದೆ veth (ವರ್ಚುವಲ್ ಈಥರ್ನೆಟ್). ವೆಥ್ ಸಾಧನದ ಒಂದು ತುದಿಯು ಕಂಟೇನರ್‌ನ ನೆಟ್‌ವರ್ಕ್ ನೇಮ್‌ಸ್ಪೇಸ್‌ಗೆ ಸಂಪರ್ಕಿಸುತ್ತದೆ, ಇನ್ನೊಂದು ಲಿನಕ್ಸ್ ಸೇತುವೆ ಹೋಸ್ಟ್ ನೆಟ್ವರ್ಕ್ನಲ್ಲಿ.

ಒಂದೇ ಹೋಸ್ಟ್‌ನಲ್ಲಿರುವ ಎಲ್ಲಾ ಕಂಟೈನರ್‌ಗಳು ವೆಥ್‌ನ ಒಂದು ತುದಿಯನ್ನು ಸೇತುವೆಗೆ ಸಂಪರ್ಕಿಸುತ್ತವೆ, ಅದರ ಮೂಲಕ ಅವರು IP ವಿಳಾಸಗಳ ಮೂಲಕ ಪರಸ್ಪರ ಸಂವಹನ ಮಾಡಬಹುದು. Linux ಸೇತುವೆಯು IP ವಿಳಾಸವನ್ನು ಸಹ ಹೊಂದಿದೆ ಮತ್ತು ಇತರ ನೋಡ್‌ಗಳಿಗೆ ಉದ್ದೇಶಿಸಲಾದ ಪಾಡ್‌ಗಳಿಂದ ಹೊರಹೋಗುವ ಟ್ರಾಫಿಕ್‌ಗೆ ಗೇಟ್‌ವೇ ಆಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ.

ಕುಬರ್ನೆಟ್ಸ್ ಪಾಡ್ IP ವಿಳಾಸವನ್ನು ಹೇಗೆ ಪಡೆಯುತ್ತದೆ?

ವಿಭಿನ್ನ ಅತಿಥೇಯಗಳ ಮೇಲೆ ಧಾರಕಗಳು

ಪ್ಯಾಕೆಟ್ ಎನ್‌ಕ್ಯಾಪ್ಸುಲೇಶನ್ ಒಂದು ವಿಧಾನವಾಗಿದ್ದು, IP ವಿಳಾಸಗಳನ್ನು ಬಳಸಿಕೊಂಡು ವಿಭಿನ್ನ ನೋಡ್‌ಗಳಲ್ಲಿನ ಕಂಟೇನರ್‌ಗಳು ಪರಸ್ಪರ ಸಂವಹನ ನಡೆಸಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ. Flannel ನಲ್ಲಿ, ತಂತ್ರಜ್ಞಾನವು ಈ ಅವಕಾಶಕ್ಕೆ ಕಾರಣವಾಗಿದೆ. vxlan, ಇದು ಮೂಲ ಪ್ಯಾಕೆಟ್ ಅನ್ನು UDP ಪ್ಯಾಕೆಟ್‌ಗೆ "ಪ್ಯಾಕೇಜ್" ಮಾಡುತ್ತದೆ ಮತ್ತು ನಂತರ ಅದನ್ನು ಅದರ ಗಮ್ಯಸ್ಥಾನಕ್ಕೆ ಕಳುಹಿಸುತ್ತದೆ.

ಕುಬರ್ನೆಟ್ಸ್ ಕ್ಲಸ್ಟರ್‌ನಲ್ಲಿ, ಫ್ಲಾನೆಲ್ vxlan ಸಾಧನವನ್ನು ರಚಿಸುತ್ತದೆ ಮತ್ತು ಅದಕ್ಕೆ ಅನುಗುಣವಾಗಿ ಪ್ರತಿ ನೋಡ್‌ನಲ್ಲಿ ರೂಟ್ ಟೇಬಲ್ ಅನ್ನು ನವೀಕರಿಸುತ್ತದೆ. ವಿಭಿನ್ನ ಹೋಸ್ಟ್‌ನಲ್ಲಿ ಕಂಟೇನರ್‌ಗಾಗಿ ಉದ್ದೇಶಿಸಲಾದ ಪ್ರತಿಯೊಂದು ಪ್ಯಾಕೆಟ್ vxlan ಸಾಧನದ ಮೂಲಕ ಹಾದುಹೋಗುತ್ತದೆ ಮತ್ತು UDP ಪ್ಯಾಕೆಟ್‌ನಲ್ಲಿ ಸುತ್ತುವರಿಯಲ್ಪಟ್ಟಿದೆ. ಗಮ್ಯಸ್ಥಾನದಲ್ಲಿ, ನೆಸ್ಟೆಡ್ ಪ್ಯಾಕೆಟ್ ಅನ್ನು ಹೊರತೆಗೆಯಲಾಗುತ್ತದೆ ಮತ್ತು ಬಯಸಿದ ಪಾಡ್‌ಗೆ ರವಾನಿಸಲಾಗುತ್ತದೆ.

ಕುಬರ್ನೆಟ್ಸ್ ಪಾಡ್ IP ವಿಳಾಸವನ್ನು ಹೇಗೆ ಪಡೆಯುತ್ತದೆ?
ಗಮನಿಸಿ: ಕಂಟೈನರ್‌ಗಳ ನಡುವೆ ನೆಟ್‌ವರ್ಕ್ ಸಂವಹನವನ್ನು ಸಂಘಟಿಸಲು ಇದು ಕೇವಲ ಒಂದು ಮಾರ್ಗವಾಗಿದೆ.

CRI ಎಂದರೇನು?

CRI (ಕಂಟೇನರ್ ರನ್ಟೈಮ್ ಇಂಟರ್ಫೇಸ್) ವಿಭಿನ್ನ ಕಂಟೇನರ್ ರನ್‌ಟೈಮ್ ಪರಿಸರವನ್ನು ಬಳಸಲು kubelet ಅನ್ನು ಅನುಮತಿಸುವ ಪ್ಲಗಿನ್ ಆಗಿದೆ. CRI API ಅನ್ನು ವಿವಿಧ ರನ್‌ಟೈಮ್‌ಗಳಲ್ಲಿ ನಿರ್ಮಿಸಲಾಗಿದೆ, ಆದ್ದರಿಂದ ಬಳಕೆದಾರರು ತಮ್ಮ ಆಯ್ಕೆಯ ರನ್‌ಟೈಮ್ ಅನ್ನು ಆಯ್ಕೆ ಮಾಡಬಹುದು.

CNI ಎಂದರೇನು?

ಪ್ರಾಜೆಕ್ಟ್ CNI ಒಂದು ನಿರ್ದಿಷ್ಟತೆ Linux ಕಂಟೈನರ್‌ಗಳಿಗಾಗಿ ಸಾರ್ವತ್ರಿಕ ನೆಟ್‌ವರ್ಕ್ ಪರಿಹಾರವನ್ನು ಸಂಘಟಿಸಲು. ಜೊತೆಗೆ, ಇದು ಒಳಗೊಂಡಿದೆ ಪ್ಲಗಿನ್‌ಗಳು, ಪಾಡ್ ನೆಟ್ವರ್ಕ್ ಅನ್ನು ಹೊಂದಿಸುವಾಗ ವಿವಿಧ ಕಾರ್ಯಗಳಿಗೆ ಜವಾಬ್ದಾರರು. CNI ಪ್ಲಗಿನ್ ಎನ್ನುವುದು ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದಾದ ಫೈಲ್ ಆಗಿದ್ದು ಅದು ನಿರ್ದಿಷ್ಟತೆಯನ್ನು ಅನುಸರಿಸುತ್ತದೆ (ಕೆಲವು ಪ್ಲಗಿನ್‌ಗಳನ್ನು ನಾವು ಕೆಳಗೆ ಚರ್ಚಿಸುತ್ತೇವೆ).

ಪಾಡ್‌ಗಳಿಗೆ IP ವಿಳಾಸಗಳನ್ನು ನಿಯೋಜಿಸಲು ನೋಡ್‌ಗಳಿಗೆ ಸಬ್‌ನೆಟ್‌ಗಳ ಹಂಚಿಕೆ

ಕ್ಲಸ್ಟರ್‌ನಲ್ಲಿರುವ ಪ್ರತಿಯೊಂದು ಪಾಡ್ ಐಪಿ ವಿಳಾಸವನ್ನು ಹೊಂದಿರಬೇಕಾಗಿರುವುದರಿಂದ, ಈ ವಿಳಾಸವು ಅನನ್ಯವಾಗಿದೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳುವುದು ಮುಖ್ಯವಾಗಿದೆ. ಪ್ರತಿ ನೋಡ್‌ಗೆ ವಿಶಿಷ್ಟವಾದ ಸಬ್‌ನೆಟ್ ಅನ್ನು ನಿಯೋಜಿಸುವ ಮೂಲಕ ಇದನ್ನು ಸಾಧಿಸಲಾಗುತ್ತದೆ, ಇದರಿಂದ ಆ ನೋಡ್‌ನಲ್ಲಿರುವ ಪಾಡ್‌ಗಳಿಗೆ IP ವಿಳಾಸಗಳನ್ನು ನಿಗದಿಪಡಿಸಲಾಗುತ್ತದೆ.

ನೋಡ್ IPAM ನಿಯಂತ್ರಕ

ಯಾವಾಗ nodeipam ಫ್ಲ್ಯಾಗ್ ಪ್ಯಾರಾಮೀಟರ್ ಆಗಿ ಅಂಗೀಕರಿಸಲಾಗಿದೆ --controllers ಕುಬೆ-ನಿಯಂತ್ರಕ-ನಿರ್ವಾಹಕ, ಇದು ಕ್ಲಸ್ಟರ್ CIDR ನಿಂದ ಪ್ರತಿ ನೋಡ್‌ಗೆ ಪ್ರತ್ಯೇಕ ಸಬ್‌ನೆಟ್ (podCIDR) ಅನ್ನು ನಿಯೋಜಿಸುತ್ತದೆ (ಅಂದರೆ, ಕ್ಲಸ್ಟರ್ ನೆಟ್‌ವರ್ಕ್‌ಗಾಗಿ IP ವಿಳಾಸಗಳ ಶ್ರೇಣಿ). ಈ ಪಾಡ್‌ಸಿಐಡಿಆರ್‌ಗಳು ಅತಿಕ್ರಮಿಸದ ಕಾರಣ, ಪ್ರತಿ ಪಾಡ್‌ಗೆ ವಿಶಿಷ್ಟವಾದ ಐಪಿ ವಿಳಾಸವನ್ನು ನಿಯೋಜಿಸಲು ಸಾಧ್ಯವಾಗುತ್ತದೆ.

ಕುಬರ್ನೆಟ್ಸ್ ನೋಡ್ ಅನ್ನು ಕ್ಲಸ್ಟರ್‌ನೊಂದಿಗೆ ಆರಂಭದಲ್ಲಿ ನೋಂದಾಯಿಸಿದಾಗ ಪಾಡ್‌ಸಿಐಡಿಆರ್ ಅನ್ನು ನಿಯೋಜಿಸಲಾಗುತ್ತದೆ. ನೋಡ್‌ಗಳ ಪಾಡ್‌ಸಿಐಡಿಆರ್ ಅನ್ನು ಬದಲಾಯಿಸಲು, ನೀವು ಅವುಗಳನ್ನು ರದ್ದುಗೊಳಿಸಬೇಕು ಮತ್ತು ನಂತರ ಅವುಗಳನ್ನು ಮರು-ನೋಂದಣಿ ಮಾಡಿಕೊಳ್ಳಬೇಕು, ಕುಬರ್ನೆಟ್ಸ್ ನಿಯಂತ್ರಣ ಲೇಯರ್ ಕಾನ್ಫಿಗರೇಶನ್‌ಗೆ ಸೂಕ್ತವಾದ ಬದಲಾವಣೆಗಳನ್ನು ಮಾಡಬೇಕಾಗುತ್ತದೆ. ಕೆಳಗಿನ ಆಜ್ಞೆಯನ್ನು ಬಳಸಿಕೊಂಡು ನೀವು ನೋಡ್‌ನ podCIDR ಅನ್ನು ಪ್ರದರ್ಶಿಸಬಹುದು:

$ kubectl get no <nodeName> -o json | jq '.spec.podCIDR'
10.244.0.0/24

ಕುಬೆಲೆಟ್, ಕಂಟೈನರ್ ರನ್‌ಟೈಮ್ ಮತ್ತು ಸಿಎನ್‌ಐ ಪ್ಲಗಿನ್‌ಗಳು: ಅದು ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ

ಪ್ರತಿ ನೋಡ್‌ಗೆ ಪಾಡ್ ಅನ್ನು ನಿಗದಿಪಡಿಸುವುದು ಬಹಳಷ್ಟು ಪೂರ್ವಸಿದ್ಧತಾ ಹಂತಗಳನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ. ಈ ವಿಭಾಗದಲ್ಲಿ, ಪಾಡ್ ನೆಟ್‌ವರ್ಕ್ ಅನ್ನು ಹೊಂದಿಸಲು ನೇರವಾಗಿ ಸಂಬಂಧಿಸಿದವುಗಳ ಮೇಲೆ ಮಾತ್ರ ನಾನು ಗಮನಹರಿಸುತ್ತೇನೆ.

ಒಂದು ನಿರ್ದಿಷ್ಟ ನೋಡ್‌ಗೆ ಪಾಡ್ ಅನ್ನು ನಿಗದಿಪಡಿಸುವುದು ಈ ಕೆಳಗಿನ ಘಟನೆಗಳ ಸರಣಿಯನ್ನು ಪ್ರಚೋದಿಸುತ್ತದೆ:

ಕುಬರ್ನೆಟ್ಸ್ ಪಾಡ್ IP ವಿಳಾಸವನ್ನು ಹೇಗೆ ಪಡೆಯುತ್ತದೆ?

ಸಹಾಯ: ಕಂಟೈನರ್ಡ್ CRI ಪ್ಲಗಿನ್‌ಗಳ ಆರ್ಕಿಟೆಕ್ಚರ್.

ಕಂಟೇನರ್ ರನ್ಟೈಮ್ ಮತ್ತು CNI ಪ್ಲಗಿನ್ಗಳ ನಡುವಿನ ಪರಸ್ಪರ ಕ್ರಿಯೆ

ಪ್ರತಿಯೊಂದು ನೆಟ್‌ವರ್ಕ್ ಪೂರೈಕೆದಾರರು ತನ್ನದೇ ಆದ CNI ಪ್ಲಗಿನ್ ಅನ್ನು ಹೊಂದಿದ್ದಾರೆ. ಕಂಟೇನರ್‌ನ ರನ್‌ಟೈಮ್ ಪಾಡ್ ಪ್ರಾರಂಭವಾದಾಗ ನೆಟ್‌ವರ್ಕ್ ಅನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಲು ಅದನ್ನು ರನ್ ಮಾಡುತ್ತದೆ. ಕಂಟೈನರ್‌ನ ಸಂದರ್ಭದಲ್ಲಿ, ಪ್ಲಗಿನ್‌ನಿಂದ CNI ಪ್ಲಗಿನ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸಲಾಗುತ್ತದೆ ಕಂಟೈನರ್ಡ್ CRI.

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

CNI ಸಂರಚನೆಯ ಸ್ಥಳವನ್ನು ಕಸ್ಟಮೈಸ್ ಮಾಡಬಹುದು; ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ ಅದು ಒಳಗೊಳ್ಳುತ್ತದೆ /etc/cni/net.d/<config-file>. ಪ್ರತಿ ಕ್ಲಸ್ಟರ್ ನೋಡ್‌ನಲ್ಲಿ CNI ಪ್ಲಗಿನ್‌ಗಳನ್ನು ಸ್ಥಾಪಿಸಲು ಕ್ಲಸ್ಟರ್ ನಿರ್ವಾಹಕರು ಸಹ ಜವಾಬ್ದಾರರಾಗಿರುತ್ತಾರೆ. ಅವರ ಸ್ಥಳವು ಗ್ರಾಹಕೀಯಗೊಳಿಸಬಹುದಾಗಿದೆ; ಡೀಫಾಲ್ಟ್ ಡೈರೆಕ್ಟರಿ - /opt/cni/bin.

ಕಂಟೇನರ್ಡ್ ಅನ್ನು ಬಳಸುವಾಗ, ಪ್ಲಗಿನ್ ಕಾನ್ಫಿಗರ್ ಮತ್ತು ಬೈನರಿಗಳ ಮಾರ್ಗಗಳನ್ನು ವಿಭಾಗದಲ್ಲಿ ಹೊಂದಿಸಬಹುದು [plugins.«io.containerd.grpc.v1.cri».cni] в ಕಂಟೈನರ್ಡ್ ಕಾನ್ಫಿಗರೇಶನ್ ಫೈಲ್.

ನಾವು ಫ್ಲಾನ್ನೆಲ್ ಅನ್ನು ನಮ್ಮ ನೆಟ್‌ವರ್ಕ್ ಪೂರೈಕೆದಾರರಾಗಿ ಬಳಸುತ್ತಿರುವುದರಿಂದ, ಅದನ್ನು ಹೊಂದಿಸುವ ಕುರಿತು ಸ್ವಲ್ಪ ಮಾತನಾಡೋಣ:

  • ಫ್ಲಾನ್ನೆಲ್ಡ್ (ಫ್ಲಾನೆಲ್‌ನ ಡೀಮನ್) ಅನ್ನು ಸಾಮಾನ್ಯವಾಗಿ ಕ್ಲಸ್ಟರ್‌ನಲ್ಲಿ ಡೀಮನ್‌ಸೆಟ್‌ನಂತೆ ಸ್ಥಾಪಿಸಲಾಗುತ್ತದೆ install-cni ಮಾಹಿತಿ init ಕಂಟೇನರ್.
  • Install-cni ಸೃಷ್ಟಿಸುತ್ತದೆ CNI ಕಾನ್ಫಿಗರೇಶನ್ ಫೈಲ್ (/etc/cni/net.d/10-flannel.conflist) ಪ್ರತಿ ನೋಡ್ನಲ್ಲಿ.
  • Flanneld ಒಂದು vxlan ಸಾಧನವನ್ನು ರಚಿಸುತ್ತದೆ, API ಸರ್ವರ್‌ನಿಂದ ನೆಟ್‌ವರ್ಕ್ ಮೆಟಾಡೇಟಾವನ್ನು ಹಿಂಪಡೆಯುತ್ತದೆ ಮತ್ತು ಪಾಡ್ ನವೀಕರಣಗಳನ್ನು ಮೇಲ್ವಿಚಾರಣೆ ಮಾಡುತ್ತದೆ. ಅವುಗಳನ್ನು ರಚಿಸಿದಂತೆ, ಇದು ಕ್ಲಸ್ಟರ್‌ನಾದ್ಯಂತ ಎಲ್ಲಾ ಪಾಡ್‌ಗಳಿಗೆ ಮಾರ್ಗಗಳನ್ನು ವಿತರಿಸುತ್ತದೆ.
  • ಈ ಮಾರ್ಗಗಳು ಪಾಡ್‌ಗಳು IP ವಿಳಾಸಗಳ ಮೂಲಕ ಪರಸ್ಪರ ಸಂವಹನ ನಡೆಸಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ.

Flannel ನ ಕೆಲಸದ ಬಗ್ಗೆ ಹೆಚ್ಚು ವಿವರವಾದ ಮಾಹಿತಿಗಾಗಿ, ಲೇಖನದ ಕೊನೆಯಲ್ಲಿ ಲಿಂಕ್ಗಳನ್ನು ಬಳಸಲು ನಾನು ಶಿಫಾರಸು ಮಾಡುತ್ತೇವೆ.

ಕಂಟೈನರ್ಡ್ CRI ಪ್ಲಗಿನ್ ಮತ್ತು CNI ಪ್ಲಗಿನ್‌ಗಳ ನಡುವಿನ ಪರಸ್ಪರ ಕ್ರಿಯೆಯ ರೇಖಾಚಿತ್ರ ಇಲ್ಲಿದೆ:

ಕುಬರ್ನೆಟ್ಸ್ ಪಾಡ್ IP ವಿಳಾಸವನ್ನು ಹೇಗೆ ಪಡೆಯುತ್ತದೆ?

ನೀವು ಮೇಲೆ ನೋಡುವಂತೆ, ಪಾಡ್ ರಚಿಸಲು ಕಂಟೈನರ್ಡ್ ಸಿಆರ್‌ಐ ಪ್ಲಗಿನ್ ಅನ್ನು ಕುಬೆಲೆಟ್ ಕರೆಯುತ್ತದೆ, ಅದು ಪಾಡ್‌ನ ನೆಟ್‌ವರ್ಕ್ ಅನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಲು ಸಿಎನ್‌ಐ ಪ್ಲಗಿನ್ ಅನ್ನು ಕರೆಯುತ್ತದೆ. ಹಾಗೆ ಮಾಡುವಾಗ, ನೆಟ್‌ವರ್ಕ್ ಪೂರೈಕೆದಾರರ CNI ಪ್ಲಗಿನ್ ನೆಟ್‌ವರ್ಕ್‌ನ ವಿವಿಧ ಅಂಶಗಳನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಲು ಇತರ ಕೋರ್ CNI ಪ್ಲಗಿನ್‌ಗಳನ್ನು ಕರೆಯುತ್ತದೆ.

CNI ಪ್ಲಗಿನ್‌ಗಳ ನಡುವಿನ ಪರಸ್ಪರ ಕ್ರಿಯೆ

ಹೋಸ್ಟ್‌ನಲ್ಲಿನ ಕಂಟೈನರ್‌ಗಳ ನಡುವೆ ನೆಟ್‌ವರ್ಕ್ ಸಂವಹನವನ್ನು ಹೊಂದಿಸಲು ಸಹಾಯ ಮಾಡುವ ವಿವಿಧ CNI ಪ್ಲಗಿನ್‌ಗಳಿವೆ. ಈ ಲೇಖನವು ಅವುಗಳಲ್ಲಿ ಮೂರನ್ನು ಚರ್ಚಿಸುತ್ತದೆ.

CNI ಪ್ಲಗಿನ್ Flannel

Flannel ಅನ್ನು ನೆಟ್‌ವರ್ಕ್ ಪೂರೈಕೆದಾರರಾಗಿ ಬಳಸುವಾಗ, ಕಂಟೈನರ್ಡ್ CRI ಘಟಕವು ಕರೆ ಮಾಡುತ್ತದೆ CNI ಪ್ಲಗಿನ್ FlannelCNI ಕಾನ್ಫಿಗರೇಶನ್ ಫೈಲ್ ಅನ್ನು ಬಳಸುವುದು /etc/cni/net.d/10-flannel.conflist.

$ cat /etc/cni/net.d/10-flannel.conflist
{
  "name": "cni0",
  "plugins": [
    {
      "type": "flannel",
      "delegate": {
         "ipMasq": false,
        "hairpinMode": true,
        "isDefaultGateway": true
      }
    }
  ]
}

Flannel CNI ಪ್ಲಗಿನ್ Flanneld ಜೊತೆಯಲ್ಲಿ ಕೆಲಸ ಮಾಡುತ್ತದೆ. ಪ್ರಾರಂಭದ ಸಮಯದಲ್ಲಿ, Flanneld API ಸರ್ವರ್‌ನಿಂದ ಪಾಡ್‌ಸಿಐಡಿಆರ್ ಮತ್ತು ಇತರ ನೆಟ್‌ವರ್ಕ್-ಸಂಬಂಧಿತ ವಿವರಗಳನ್ನು ಹಿಂಪಡೆಯುತ್ತದೆ ಮತ್ತು ಅವುಗಳನ್ನು ಫೈಲ್‌ಗೆ ಉಳಿಸುತ್ತದೆ /run/flannel/subnet.env.

FLANNEL_NETWORK=10.244.0.0/16 
FLANNEL_SUBNET=10.244.0.1/24
FLANNEL_MTU=1450 
FLANNEL_IPMASQ=false

Flannel CNI ಪ್ಲಗಿನ್ ನಿಂದ ಡೇಟಾವನ್ನು ಬಳಸುತ್ತದೆ /run/flannel/subnet.env CNI ಸೇತುವೆಯ ಪ್ಲಗಿನ್ ಅನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಲು ಮತ್ತು ಕರೆ ಮಾಡಲು.

CNI ಪ್ಲಗಿನ್ ಸೇತುವೆ

ಈ ಪ್ಲಗಿನ್ ಅನ್ನು ಈ ಕೆಳಗಿನ ಸಂರಚನೆಯೊಂದಿಗೆ ಕರೆಯಲಾಗುತ್ತದೆ:

{
  "name": "cni0",
  "type": "bridge",
  "mtu": 1450,
  "ipMasq": false,
  "isGateway": true,
  "ipam": {
    "type": "host-local",
    "subnet": "10.244.0.0/24"
  }
}

ಮೊದಲ ಬಾರಿಗೆ ಕರೆ ಮಾಡಿದಾಗ, ಇದು ಲಿನಕ್ಸ್ ಸೇತುವೆಯನ್ನು ರಚಿಸುತ್ತದೆ «name»: «cni0», ಇದನ್ನು ಸಂರಚನೆಯಲ್ಲಿ ಸೂಚಿಸಲಾಗುತ್ತದೆ. ನಂತರ ಪ್ರತಿ ಪಾಡ್‌ಗೆ ವೆತ್ ಜೋಡಿಯನ್ನು ರಚಿಸಲಾಗುತ್ತದೆ. ಅದರ ಒಂದು ತುದಿಯನ್ನು ಕಂಟೇನರ್‌ನ ನೆಟ್‌ವರ್ಕ್ ನೇಮ್‌ಸ್ಪೇಸ್‌ಗೆ ಸಂಪರ್ಕಿಸಲಾಗಿದೆ, ಇನ್ನೊಂದು ಹೋಸ್ಟ್ ನೆಟ್‌ವರ್ಕ್‌ನಲ್ಲಿನ ಲಿನಕ್ಸ್ ಸೇತುವೆಯಲ್ಲಿ ಸೇರಿಸಲಾಗಿದೆ. CNI ಪ್ಲಗಿನ್ ಸೇತುವೆ ಎಲ್ಲಾ ಹೋಸ್ಟ್ ಕಂಟೈನರ್‌ಗಳನ್ನು ಹೋಸ್ಟ್ ನೆಟ್‌ವರ್ಕ್‌ನಲ್ಲಿ ಲಿನಕ್ಸ್ ಸೇತುವೆಗೆ ಸಂಪರ್ಕಿಸುತ್ತದೆ.

ವೆಥ್ ಜೋಡಿಯನ್ನು ಹೊಂದಿಸುವುದನ್ನು ಪೂರ್ಣಗೊಳಿಸಿದ ನಂತರ, ಬ್ರಿಡ್ಜ್ ಪ್ಲಗಿನ್ ಹೋಸ್ಟ್-ಲೋಕಲ್ IPAM CNI ಪ್ಲಗಿನ್ ಅನ್ನು ಕರೆಯುತ್ತದೆ. Flannel CNI ಪ್ಲಗಿನ್ ಅನ್ನು ಕರೆಯಲು CRI ಪ್ಲಗಿನ್ ಬಳಸುವ CNI ಸಂರಚನೆಯಲ್ಲಿ IPAM ಪ್ಲಗಿನ್ ಪ್ರಕಾರವನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಬಹುದು.

ಹೋಸ್ಟ್-ಸ್ಥಳೀಯ IPAM CNI ಪ್ಲಗಿನ್‌ಗಳು

ಸೇತುವೆ CNI ಕರೆಗಳು ಹೋಸ್ಟ್-ಸ್ಥಳೀಯ IPAM ಪ್ಲಗಿನ್ CNI ಕೆಳಗಿನ ಸಂರಚನೆಯೊಂದಿಗೆ:

{
  "name": "cni0",
  "ipam": {
    "type": "host-local",
    "subnet": "10.244.0.0/24",
    "dataDir": "/var/lib/cni/networks"
  }
}

ಹೋಸ್ಟ್-ಸ್ಥಳೀಯ IPAM ಪ್ಲಗಿನ್ (IP Aವಸ್ತ್ರ Mನಿರ್ವಹಣೆ - IP ವಿಳಾಸ ನಿರ್ವಹಣೆ) ಸಬ್‌ನೆಟ್‌ನಿಂದ ಕಂಟೇನರ್‌ಗಾಗಿ IP ವಿಳಾಸವನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ ಮತ್ತು ವಿಭಾಗದಲ್ಲಿ ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಡೈರೆಕ್ಟರಿಯಲ್ಲಿ ಹೋಸ್ಟ್‌ನಲ್ಲಿ ನಿಯೋಜಿಸಲಾದ IP ಅನ್ನು ಸಂಗ್ರಹಿಸುತ್ತದೆ dataDir - /var/lib/cni/networks/<network-name=cni0>/<ip>. ಈ ಫೈಲ್ ಈ IP ವಿಳಾಸವನ್ನು ನಿಯೋಜಿಸಲಾದ ಕಂಟೇನರ್‌ನ ID ಅನ್ನು ಒಳಗೊಂಡಿದೆ.

ಹೋಸ್ಟ್-ಲೋಕಲ್ IPAM ಪ್ಲಗಿನ್‌ಗೆ ಕರೆ ಮಾಡಿದಾಗ, ಅದು ಈ ಕೆಳಗಿನ ಡೇಟಾವನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ:

{
  "ip4": {
    "ip": "10.244.4.2",
    "gateway": "10.244.4.3"
  },
  "dns": {}
}

ಸಾರಾಂಶ

ಕ್ಯೂಬ್-ನಿಯಂತ್ರಕ-ನಿರ್ವಾಹಕರು ಪ್ರತಿ ನೋಡ್‌ಗೆ ಪಾಡ್‌ಸಿಐಡಿಆರ್ ಅನ್ನು ನಿಯೋಜಿಸುತ್ತಾರೆ. ಪ್ರತಿ ನೋಡ್‌ನ ಪಾಡ್‌ಗಳು ನಿಯೋಜಿಸಲಾದ ಪಾಡ್‌ಸಿಐಡಿಆರ್ ಶ್ರೇಣಿಯಲ್ಲಿನ ವಿಳಾಸ ಸ್ಥಳದಿಂದ ಐಪಿ ವಿಳಾಸಗಳನ್ನು ಸ್ವೀಕರಿಸುತ್ತವೆ. ನೋಡ್‌ಗಳ ಪಾಡ್‌ಸಿಐಡಿಆರ್‌ಗಳು ಅತಿಕ್ರಮಿಸದ ಕಾರಣ, ಎಲ್ಲಾ ಪಾಡ್‌ಗಳು ಅನನ್ಯ IP ವಿಳಾಸಗಳನ್ನು ಪಡೆಯುತ್ತವೆ.

ಕುಬರ್ನೆಟ್ಸ್ ಕ್ಲಸ್ಟರ್ ನಿರ್ವಾಹಕರು ಕ್ಯುಬೆಲೆಟ್, ಕಂಟೇನರ್ ರನ್‌ಟೈಮ್, ನೆಟ್‌ವರ್ಕ್ ಪ್ರೊವೈಡರ್ ಏಜೆಂಟ್ ಅನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡುತ್ತಾರೆ ಮತ್ತು ಸ್ಥಾಪಿಸುತ್ತಾರೆ ಮತ್ತು ಪ್ರತಿ ನೋಡ್‌ಗೆ CNI ಪ್ಲಗಿನ್‌ಗಳನ್ನು ನಕಲಿಸುತ್ತಾರೆ. ಪ್ರಾರಂಭದ ಸಮಯದಲ್ಲಿ, ನೆಟ್ವರ್ಕ್ ಪೂರೈಕೆದಾರ ಏಜೆಂಟ್ CNI ಸಂರಚನೆಯನ್ನು ರಚಿಸುತ್ತದೆ. ನೋಡ್‌ಗೆ ಪಾಡ್ ಅನ್ನು ನಿಗದಿಪಡಿಸಿದಾಗ, ಅದನ್ನು ರಚಿಸಲು ಕುಬೆಲೆಟ್ CRI ಪ್ಲಗಿನ್ ಅನ್ನು ಕರೆಯುತ್ತದೆ. ಮುಂದೆ, ಕಂಟೈನರ್ಡ್ ಅನ್ನು ಬಳಸಿದರೆ, ಪಾಡ್‌ನ ನೆಟ್‌ವರ್ಕ್ ಅನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಲು CNI ಕಾನ್ಫಿಗರ್‌ನಲ್ಲಿ ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ CNI ಪ್ಲಗಿನ್ ಅನ್ನು Containerd CRI ಪ್ಲಗಿನ್ ಕರೆಯುತ್ತದೆ. ಪರಿಣಾಮವಾಗಿ, ಪಾಡ್ ಐಪಿ ವಿಳಾಸವನ್ನು ಪಡೆಯುತ್ತದೆ.

ಈ ಎಲ್ಲಾ ಸಂವಹನಗಳ ಎಲ್ಲಾ ಸೂಕ್ಷ್ಮತೆಗಳು ಮತ್ತು ಸೂಕ್ಷ್ಮ ವ್ಯತ್ಯಾಸಗಳನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ನನಗೆ ಸ್ವಲ್ಪ ಸಮಯ ಹಿಡಿಯಿತು. ಕುಬರ್ನೆಟ್ಸ್ ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ಎಂಬುದನ್ನು ಚೆನ್ನಾಗಿ ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಈ ಅನುಭವವು ನಿಮಗೆ ಸಹಾಯ ಮಾಡುತ್ತದೆ ಎಂದು ನಾನು ಭಾವಿಸುತ್ತೇನೆ. ನಾನು ಏನಾದರೂ ತಪ್ಪಾಗಿದ್ದರೆ, ದಯವಿಟ್ಟು ನನ್ನನ್ನು ಇಲ್ಲಿ ಸಂಪರ್ಕಿಸಿ ಟ್ವಿಟರ್ ಅಥವಾ ವಿಳಾಸದಲ್ಲಿ [ಇಮೇಲ್ ರಕ್ಷಿಸಲಾಗಿದೆ]. ಈ ಲೇಖನದ ಅಂಶಗಳನ್ನು ಅಥವಾ ಬೇರೆ ಯಾವುದನ್ನಾದರೂ ಚರ್ಚಿಸಲು ನೀವು ಬಯಸಿದರೆ ಸಂಪರ್ಕಿಸಲು ಮುಕ್ತವಾಗಿರಿ. ನಾನು ನಿಮ್ಮೊಂದಿಗೆ ಚಾಟ್ ಮಾಡಲು ಇಷ್ಟಪಡುತ್ತೇನೆ!

ಉಲ್ಲೇಖಗಳು

ಕಂಟೈನರ್ ಮತ್ತು ನೆಟ್ವರ್ಕ್

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

CRI ಮತ್ತು CNI

ಅನುವಾದಕರಿಂದ PS

ನಮ್ಮ ಬ್ಲಾಗ್‌ನಲ್ಲಿಯೂ ಓದಿ:

ಮೂಲ: www.habr.com

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