Kubernetes पर Java डिप्लॉयमेंट: एक व्यावहारिक मूल गाइड

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

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

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

परिचय: Java डेवलपर के लिए Kubernetes क्यों?

\n

आधुनिक Java डेवलपमेंट अक्सर सर्वर पर साधारण JAR फ़ाइलें चलाने से आगे बढ़ चुका है। माइक्रोसर्विस आर्किटेक्चर, क्षैतिज स्केलिंग और दोष-सहनशीलता की आवश्यकता कंटेनर और ऑर्केस्ट्रेटर के उपयोग की ओर ले जाती है। Kubernetes (K8s) कंटेनरीकृत एप्लिकेशन के प्रबंधन के लिए डी-फैक्टो मानक बन गया है। इस गाइड में, हम समझेंगे कि Kubernetes क्लस्टर में एक सामान्य Java एप्लिकेशन (उदाहरण के लिए, Spring Boot पर) को कैसे डिप्लॉय किया जाए। आप सीखेंगे कि एप्लिकेशन को Docker इमेज में कैसे पैकेज करें, आवश्यक मेनिफेस्ट कैसे बनाएं और इसे कैसे चलाएं।

\n\n

1. Java एप्लिकेशन तैयार करना और Docker इमेज बनाना

\n

Kubernetes में जाने से पहले, Java एप्लिकेशन को एक कंटेनर में पैकेज किया जाना चाहिए। आइए Spring Boot पर एक सरल उदाहरण देखें।

\n\n

1.1. Java एप्लिकेशन का उदाहरण

\n

हम एक न्यूनतम REST कंट्रोलर बनाएंगे जो एप्लिकेशन का वर्जन लौटाएगा:

\n
import org.springframework.boot.SpringApplication;\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.springframework.web.bind.annotation.GetMapping;\nimport org.springframework.web.bind.annotation.RestController;\n\n@SpringBootApplication\n@RestController\npublic class App {\n    public static void main(String[] args) {\n        SpringApplication.run(App.class, args);\n    }\n\n    @GetMapping("/")\n    public String home() {\n        return "Java App running on Kubernetes v1.0";\n    }\n}\n
\n\n

1.2. Dockerfile बनाना

\n

Java एप्लिकेशन के लिए, अंतिम इमेज के आकार को कम करने के लिए मल्टी-स्टेज बिल्ड का उपयोग करना इष्टतम है:

\n
FROM maven:3.8.6-eclipse-temurin-17 AS builder\nWORKDIR /app\nCOPY pom.xml .\nRUN mvn dependency:go-offline -B\nCOPY src ./src\nRUN mvn package -DskipTests\n\nFROM eclipse-temurin:17-jre-alpine\nWORKDIR /app\nCOPY --from=builder /app/target/*.jar app.jar\nEXPOSE 8080\nENTRYPOINT ["java", "-jar", "app.jar"]\n
\n\n

1.3. इमेज बनाना और प्रकाशित करना

\n

इमेज बनाएं और इसे रजिस्ट्री (जैसे, Docker Hub) में भेजें:

\n
docker build -t yourusername/java-k8s-demo:1.0 .\ndocker push yourusername/java-k8s-demo:1.0\n
\n\n

2. Java डिप्लॉयमेंट के लिए Kubernetes के मुख्य ऑब्जेक्ट

\n

Java एप्लिकेशन को तैनात करने के लिए कम से कम दो संसाधनों की आवश्यकता होगी: Deployment (प्रतिकृतियों और अपडेट का प्रबंधन करता है) और Service (नेटवर्क एक्सेस प्रदान करता है)।

\n\n

2.1. Deployment मेनिफेस्ट

\n

एक फ़ाइल deployment.yaml बनाएं:

\n
apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: java-app\n  labels:\n    app: java-app\nspec:\n  replicas: 2\n  selector:\n    matchLabels:\n      app: java-app\n  template:\n    metadata:\n      labels:\n        app: java-app\n    spec:\n      containers:\n      - name: java-app\n        image: yourusername/java-k8s-demo:1.0\n        ports:\n        - containerPort: 8080\n        resources:\n          requests:\n            memory: "256Mi"\n            cpu: "250m"\n          limits:\n            memory: "512Mi"\n            cpu: "500m"\n        livenessProbe:\n          httpGet:\n            path: /actuator/health\n            port: 8080\n          initialDelaySeconds: 30\n          periodSeconds: 10\n        readinessProbe:\n          httpGet:\n            path: /actuator/health\n            port: 8080\n          initialDelaySeconds: 20\n          periodSeconds: 5\n
\n

महत्वपूर्ण: Spring Boot के लिए, health checks के लिए Actuator का उपयोग करें। Kubernetes को संसाधनों को सही ढंग से वितरित करने के लिए requests और limits निर्दिष्ट करें।

\n\n

2.2. Service मेनिफेस्ट

\n

पॉड्स तक आंतरिक पहुंच के लिए service.yaml बनाएं:

\n
apiVersion: v1\nkind: Service\nmetadata:\n  name: java-app-service\nspec:\n  selector:\n    app: java-app\n  ports:\n    - protocol: TCP\n      port                

ब्लॉग

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