Kubernetes पर C++ डिप्लॉय: शुरुआती लोगों के लिए बुनियादी गाइड

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

परिचय: Kubernetes में C++ क्यों डिप्लॉय करें?

\n\n

C++ सबसे उच्च-प्रदर्शन वाली प्रोग्रामिंग भाषाओं में से एक बनी हुई है, विशेष रूप से उच्च-लोड सिस्टम, गेम सर्वर, वित्तीय एप्लिकेशन और IoT के क्षेत्रों में। हालांकि, क्लाउड प्रौद्योगिकियों की आधुनिक दुनिया में, केवल तेज़ कोड लिखना पर्याप्त नहीं है — इसे विश्वसनीय रूप से तैनात करने, स्केल करने और बिना डाउनटाइम के अपडेट करने में सक्षम होना चाहिए। यहीं पर Kubernetes (K8s) मदद करता है — एक कंटेनर ऑर्केस्ट्रेशन सिस्टम जो एप्लिकेशन की तैनाती, स्केलिंग और प्रबंधन को स्वचालित करता है।

\n\n

इस गाइड में, हम चरण दर चरण Kubernetes क्लस्टर में एक सरल C++ एप्लिकेशन को डिप्लॉय करने की प्रक्रिया को समझेंगे। आप सीखेंगे कि C++ कोड को Docker इमेज में कैसे पैकेज करें, आवश्यक Kubernetes मेनिफेस्ट कैसे लिखें और अपने एप्लिकेशन को क्लाउड में कैसे चलाएं। यह लेख शुरुआती लोगों के लिए है, इसलिए हम जटिल कॉन्फ़िगरेशन में गहराई से नहीं जाएंगे, बल्कि एक बुनियादी लेकिन काम करने वाले पाइपलाइन पर ध्यान केंद्रित करेंगे।

\n\n

1. तैयारी: C++ एप्लिकेशन और Docker कंटेनरीकरण

\n\n

Kubernetes के बारे में बात करने से पहले, हमें अपने C++ एप्लिकेशन को कंटेनर में काम करने के लिए तैयार करना होगा। कंटेनरीकरण का अर्थ है एप्लिकेशन को उसकी सभी निर्भरताओं के साथ एक पृथक वातावरण में पैकेज करना। C++ के लिए यह महत्वपूर्ण है, क्योंकि संकलित बाइनरी लक्ष्य मशीन पर लाइब्रेरी (libc, libstdc++ आदि) के विशिष्ट संस्करणों पर निर्भर हो सकती है।

\n\n

1.1. डिप्लॉय के लिए सरल C++ एप्लिकेशन

\n\n

एक फ़ाइल main.cpp बनाएं — एक सरल HTTP सर्वर जो अनुरोधों का जवाब देगा। सरलता के लिए, हम बाहरी लाइब्रेरी का उपयोग नहीं करेंगे, बल्कि एक प्रारंभिक TCP सर्वर लिखेंगे।

\n\n
// main.cpp\n#include <iostream>\n#include <string>\n#include <cstring>\n#include <sys/socket.h>\n#include <netinet/in.h>\n#include <unistd.h>\n\nint main() {\n    int server_fd, new_socket;\n    struct sockaddr_in address;\n    int opt = 1;\n    int addrlen = sizeof(address);\n    char buffer[1024] = {0};\n    const char* hello = "HTTP/1.1 200 OK\\nContent-Type: text/plain\\nContent-Length: 12\\n\\nHello, K8s!\\n";\n\n    // सॉकेट बनाना\n    if ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) == 0) {\n        perror("socket failed");\n        exit(EXIT_FAILURE);\n    }\n\n    // पोर्ट 8080 से बाइंड करना\n    if (setsockopt(server_fd, SOL_SOCKET, SO_REUSEADDR | SO_REUSEPORT, &opt, sizeof(opt))) {\n        perror("setsockopt");\n        exit(EXIT_FAILURE);\n    }\n    address.sin_family = AF_INET;\n    address.sin_addr.s_addr = INADDR_ANY;\n    address.sin_port = htons(8080);\n\n    if (bind(server_fd, (struct sockaddr *)&address, sizeof(address))<0) {\n        perror("bind failed");\n        exit(EXIT_FAILURE);\n    }\n\n    if (listen(server_fd, 3) < 0) {\n        perror("listen");\n        exit(EXIT_FAILURE);\n    }\n\n    std::cout << "Server listening on port 8080" << std::endl;\n\n    while(true) {\n        if ((new_socket = accept(server_fd, (struct sockaddr *)&address, (socklen_t*)&addrlen))<0) {\n            perror("accept");\n            exit(EXIT_FAILURE);\n        }\n        read(new_socket, buffer, 1024);\n        send(new_socket, hello, strlen(hello), 0);\n        close(new_socket);\n    }\n    return 0;\n}\n
\n\n

1.2. स्टैटिक बाइनरी बनाना

\n\n

हमारे कंटेनर को न्यूनतम और होस्ट सिस्टम लाइब्रेरी से स्वतंत्र बनाने के लिए, स्टैटिकली लिंक की गई बाइनरी बनाना बेहतर है। कमांड चलाएं:

\n\n
g++ -static -o server main.cpp -lpthread
\n\n

फ़्लैग -static सभी आवश्यक लाइब्रेरी को सीधे निष्पादन योग्य फ़ाइल में शामिल करता है। फ़्लैग -lpthread थ्रेड के साथ काम करने के लिए आवश्यक है (हालांकि हमारे सरल उदाहरण में यह अनिवार्य नहीं है, लेकिन वास्तविक प्रोजेक्ट के लिए उपयोगी होगा)।

\n\n

1.3. C++ एप्लिकेशन के लिए Dockerfile

\n\n

अब एक Dockerfile बनाएं। मल्टी-स्टेज बिल्ड का उपयोग करें: पहले कंपाइलर के साथ बड़ी इमेज में कोड कंपाइल करें, फिर

ब्लॉग

पुस्तक अनुशंसाएँ