पहले लेख में, "कुबेरनेट्स एडब्ल्यूएस के साथ जेनकिंस का उपयोग करना, भाग 1", जेनकिंस के साथ कुबेरनेट्स इंस्टॉलेशन को स्वचालित करने पर, हमने जेनकिंस को कोरओएस पर स्थापित किया, कुबेरनेट्स को स्थापित करने के लिए पूर्व-आवश्यक कलाकृतियों का निर्माण किया, और जेनकिंस नोड बनाया। दूसरे लेख में, "कुबेरनेट्स एडब्ल्यूएस, भाग 2 के साथ जेनकिंस का उपयोग करना," हमने जेनकिंसफाइल को कॉन्फ़िगर किया और जेनकिंस पाइपलाइन बनाई। इस लेख में, हम कुबेरनेट्स को स्थापित करने के लिए जेनकिंस पाइपलाइन चलाएंगे और बाद में कुबेरनेट्स क्लस्टर का परीक्षण करेंगे। इस लेख में निम्नलिखित भाग हैं:
- जेनकिंस पाइपलाइन चलाना
- कुबेरनेट्स क्लस्टर का परीक्षण
- निष्कर्ष
जेनकिंस पाइपलाइन चलाना
अभी बनाएं क्लिक करें जेनकिंस पाइपलाइन चलाने के लिए, जैसा कि चित्र 1 में दिखाया गया है।
चित्र 1: बिल्ड नाउ ने जेनकिंस पाइपलाइन शुरू की
जेनकिंस पाइपलाइन शुरू हो जाती है और एक प्रगति पट्टी पाइपलाइन की प्रगति को इंगित करती है। एक मंच दृश्य पाइपलाइन में विभिन्न चरणों के लिए भी प्रदर्शित होता है, जैसा कि चित्र 2 में दिखाया गया है। क्यूब-एज़ स्टेज व्यू में रेंडर स्टेज में एक "रोका हुआ" लिंक होता है क्योंकि हमने जेनकिंसफाइल में वर्कर काउंट (और इंस्टेंस टाइप यूजर इनपुट, जिसे बाद में संकेत दिया जाएगा) के लिए यूजर इनपुट का अनुरोध किया था। "रोके गए" लिंक पर क्लिक करें।
चित्र 2: सार्वजनिक आईपी पता प्राप्त करना
जेनकिंस पाइपलाइन के लिए कंसोल आउटपुट में, इनपुट अनुरोधित . पर क्लिक करें लिंक, जैसा कि चित्र 3 में दिखाया गया है।
चित्र 3: नोड्स की संख्या के लिए अनुरोधित इनपुट
ए नोड्स की संख्या संवाद प्रदर्शित होता है, नोड्स की संख्या के लिए उपयोगकर्ता इनपुट के लिए संकेत देता है, जैसा कि चित्र 4 में दिखाया गया है। जेनकिंसफाइल में कॉन्फ़िगर किया गया एक डिफ़ॉल्ट मान भी सेट है। आगे बढ़ें Click क्लिक करें मान निर्दिष्ट करने के बाद।
चित्र 4: नोड्स की संख्या निर्दिष्ट करना
पाइपलाइन चलती रहती है और इंस्टेंस प्रकार के लिए किसी अन्य इनपुट अनुरोध पर फिर से रुक जाती है। इनपुट का अनुरोध किया गया . क्लिक करें , जैसा चित्र 5 में दिखाया गया है।
चित्र 5: इंस्टेंस प्रकार के लिए अनुरोधित इनपुट
आवृत्ति प्रकार संवाद प्रदर्शित होता है (चित्र 6 देखें)। डिफ़ॉल्ट मान चुनें (या एक अलग मान निर्दिष्ट करें) और आगे बढ़ें पर क्लिक करें।
चित्र 6: इंस्टेंस प्रकार निर्दिष्ट करना
पाइपलाइन का काम जारी है। परिनियोजन क्लस्टर चरण में, एक अन्य इनपुट अनुरोधित लिंक प्रस्तुत किया जाता है, जैसा कि चित्र 7 में दिखाया गया है। लिंक पर क्लिक करें।
चित्र 7: क्लस्टर के लिए अनुरोधित इनपुट को परिनियोजित किया जाना चाहिए
क्लस्टर परिनियोजित करना चाहिए? संवाद में, "हां" के डिफ़ॉल्ट मान का चयन करें और आगे बढ़ें पर क्लिक करें, जैसा कि चित्र 8 में दिखाया गया है।
चित्र 8: क्या क्लस्टर परिनियोजित करना चाहिए?
पाइपलाइन का काम जारी है। Kubernetes क्लस्टर के लिए AWS संसाधन बनाने में कुछ समय लग सकता है, जैसा कि चित्र 9 में दिखाए गए कंसोल आउटपुट में संदेश द्वारा दर्शाया गया है।
चित्र 9: एडब्ल्यूएस संसाधन बनाना
पाइपलाइन पूरी होने तक चलती है। एक "सफलता" संदेश इंगित करता है कि पाइपलाइन सफलतापूर्वक चल रही है, जैसा कि चित्र 10 में दिखाया गया है।
चित्र 10: जेनकिंस पाइपलाइन रन सफलतापूर्वक पूरा हुआ
जेनकिंस पाइपलाइन के लिए स्टेज व्यू पाइपलाइन के पूर्ण होने के विभिन्न चरणों को प्रदर्शित करता है, जैसा कि चित्र 11 में दिखाया गया है। स्टेज दृश्य में अंतिम निर्माण, अंतिम स्थिर निर्माण, अंतिम सफल निर्माण और अंतिम पूर्ण निर्माण के लिंक शामिल हैं।
चित्र 11: स्टेज व्यू
पूर्ण चरण दृश्य को अलग से प्रदर्शित करने के लिए पूर्ण चरण दृश्य पर क्लिक करें, जैसा कि चित्र 12 में दिखाया गया है।
चित्र 12: पूर्ण चरण दृश्य का चयन करना
पूर्ण चरण दृश्य प्रदर्शित होता है, जैसा कि चित्र 13 में दिखाया गया है।
चित्र 13: पूर्ण स्टेज दृश्य
डैशबोर्ड में, जेनकिंस पाइपलाइन से सटे आइकन हरे रंग में बदल जाता है, जो सफल समापन का संकेत देता है, जैसा कि चित्र 14 में दिखाया गया है।
चित्र 14: जेनकिंस पाइपलाइन के साथ जेनकींस डैशबोर्ड सफलतापूर्वक पूर्ण होने के रूप में सूचीबद्ध है
कंसोल आउटपुट प्रदर्शित करने के लिए, बिल्ड के लिए कंसोल आउटपुट चुनें, जैसा कि चित्र 15 में दिखाया गया है।
चित्र 15: इतिहास बनाएं>कंसोल आउटपुट
कंसोल आउटपुट प्रदर्शित होता है (चित्र 16 देखें)।
चित्र 16: कंसोल आउटपुट
एक अधिक विस्तृत कंसोल आउटपुट निम्नलिखित कोड खंड में सूचीबद्ध है:
Started by user Deepak Vohra [Pipeline] node Running on jenkins in /var/jenkins/workspace/install-kubernetes [Pipeline] { [Pipeline] stage (set env) Using the 'stage' step without a block argument is deprecated Entering stage set env Proceeding [Pipeline] sh [install-kubernetes] Running shell script + sudo yum install gnupg2 Loaded plugins: priorities, update-motd, upgrade-helper Package gnupg2-2.0.28-1.30.amzn1.x86_64 already installed and latest version Nothing to do [Pipeline] sh [install-kubernetes] Running shell script + gpg2 --keyserver pgp.mit.edu --recv-key FC8A365E gpg: directory '/home/ec2-user/.gnupg' created gpg: new configuration file '/home/ec2-user/.gnupg/gpg.conf' created ... ... [Pipeline] sh [install-kubernetes] Running shell script + gpg2 --fingerprint FC8A365E pub 4096R/FC8A365E 2016-03-02 [expires: 2021-03-01] Key fingerprint = 18AD 5014 C99E F7E3 BA5F 6CE9 50BD D3E0 FC8A 365E uid [ unknown] CoreOS Application Signing Key <[email protected]> sub 2048R/3F1B2C87 2016-03-02 [expires: 2019-03-02] sub 2048R/BEDDBA18 2016-03-08 [expires: 2019-03-08] sub 2048R/7EF48FD3 2016-03-08 [expires: 2019-03-08] [Pipeline] sh [install-kubernetes] Running shell script + wget https://github.com/coreos/coreos-kubernetes/releases/ download/v0.7.1/kube-aws-linux-amd64.tar.gz --2016-11-29 21:22:04-- https://github.com/coreos/ coreos-kubernetes/releases/download/v0.7.1/ kube-aws-linux-amd64.tar.gz Resolving github.com (github.com)... 192.30.253.112, 192.30.253.113 Connecting to github.com (github.com)|192.30.253.112|:443... connected. HTTP request sent, awaiting response... 302 Found Location: https://github-cloud.s3.amazonaws.com/releases/ 41458519/309e294a-29b1- ... ... 2016-11-29 21:22:05 (62.5 MB/s) - 'kube-aws-linux-amd64.tar.gz' saved [4655969/4655969] [Pipeline] sh [install-kubernetes] Running shell script + wget https://github.com/coreos/coreos-kubernetes/releases/ download/v0.7.1/kube-aws-linux-amd64.tar.gz.sig --2016-11-29 21:22:05-- https://github.com/coreos/ coreos-kubernetes/releases/download/v0.7.1/kube-aws-linux- amd64.tar.gz.sig Resolving github.com (github.com)... 192.30.253.113, 192.30.253.112 Connecting to github.com (github.com)|192.30.253.113|:443... connected. HTTP request sent, awaiting response... 302 Found Location: https://github-cloud.s3.amazonaws.com/releases/ 41458519/0543b716-2bf4- ... ... Saving to: 'kube-aws-linux-amd64.tar.gz.sig' 0K 100% 9.21M=0s 2016-11-29 21:22:05 (9.21 MB/s) - 'kube-aws-linux-amd64.tar.gz.sig' saved [287/287] [Pipeline] sh [install-kubernetes] Running shell script + gpg2 --verify kube-aws-linux-amd64.tar.gz.sig kube-aws- linux-amd64.tar.gz gpg: Signature made Mon 06 Jun 2016 09:32:47 PM UTC using RSA key ID BEDDBA18 gpg: Good signature from "CoreOS Application Signing Key <[email protected]>" [unknown] gpg: WARNING: This key is not certified with a trusted signature! gpg: There is no indication that the signature belongs to the owner. Primary key fingerprint: 18AD 5014 C99E F7E3 BA5F 6CE9 50BD D3E0 FC8A 365E Subkey fingerprint: 55DB DA91 BBE1 849E A27F E733 A6F7 1EE5 BEDD BA18 [Pipeline] sh [install-kubernetes] Running shell script + tar zxvf kube-aws-linux-amd64.tar.gz linux-amd64/ linux-amd64/kube-aws [Pipeline] sh [install-kubernetes] Running shell script + sudo mv linux-amd64/kube-aws /usr/local/bin [Pipeline] sh [install-kubernetes] Running shell script ... ... [Pipeline] sh [install-kubernetes] Running shell script + aws ec2 create-volume --availability-zone us-east-1c --size 10 --volume-type gp2 { "AvailabilityZone": "us-east-1c", "Encrypted": false, "VolumeType": "gp2", "VolumeId": "vol-b325332f", "State": "creating", "Iops": 100, "SnapshotId": "", "CreateTime": "2016-11-29T21:22:07.949Z", "Size": 10 } [Pipeline] sh [install-kubernetes] Running shell script + aws ec2 create-key-pair --key-name kubernetes-coreos --query KeyMaterial --output text [Pipeline] sh [install-kubernetes] Running shell script + chmod 400 kubernetes-coreos.pem [Pipeline] stage (Kube-aws init) Using the 'stage' step without a block argument is deprecated Entering stage Kube-aws init Proceeding [Pipeline] deleteDir [Pipeline] sh [install-kubernetes] Running shell script + mkdir coreos-cluster [Pipeline] sh [install-kubernetes] Running shell script + cd coreos-cluster [Pipeline] sh [install-kubernetes] Running shell script + kube-aws init --cluster-name=kubernetes-coreos-cluster --external-dns-name=NOSQLSEARCH.COM --region=us-east-1 --availability-zone=us-east-1c --key-name=kubernetes-coreos --kms-key-arn=arn:aws:kms:us-east-1:672593526685:key/ c9748fda-2ac6-43ff-a267-d4edc5b21ad9 Success! Created cluster.yaml Next steps: 1. (Optional) Edit cluster.yaml to parameterize the cluster. 2. Use the "kube-aws render" command to render the stack template. [Pipeline] stage (Kube-aws render) Using the 'stage' step without a block argument is deprecated Entering stage Kube-aws render Proceeding [Pipeline] input Input requested Approved by Deepak Vohra [Pipeline] input Input requested Approved by Deepak Vohra [Pipeline] sh [install-kubernetes] Running shell script + kube-aws render Success! Stack rendered to stack-template.json. Next steps: 1. (Optional) Validate your changes to cluster.yaml with "kube-aws validate" 2. (Optional) Further customize the cluster by modifying stack-template.json or files in ./userdata. 3. Start the cluster with "kube-aws up". [Pipeline] sh [install-kubernetes] Running shell script + sed -i 's/#workerCount: 1/workerCount: 3/' cluster.yaml [Pipeline] sh [install-kubernetes] Running shell script + sed -i 's/#workerInstanceType: m3.medium/ workerInstanceType: t2.micro/' cluster.yaml [Pipeline] sh [install-kubernetes] Running shell script + kube-aws validate Validating UserData... UserData is valid. Validating stack template... Validation Report: { Capabilities: ["CAPABILITY_IAM"], CapabilitiesReason: "The following resource(s) require capabilities: [AWS::IAM::Role]", Description: "kube-aws Kubernetes cluster kubernetes-coreos-cluster" } stack template is valid. Validation OK! [Pipeline] stage (Archive CFN) Using the 'stage' step without a block argument is deprecated Entering stage Archive CFN Proceeding [Pipeline] step Archiving artifacts Recording fingerprints [Pipeline] stage (Deploy Cluster) Using the 'stage' step without a block argument is deprecated Entering stage Deploy Cluster Proceeding [Pipeline] input Input requested Approved by Deepak Vohra [Pipeline] echo Deploying Kubernetes cluster [Pipeline] sh [install-kubernetes] Running shell script + kube-aws up Creating AWS resources. This should take around 5 minutes. Success! Your AWS resources have been created: Cluster Name: kubernetes-coreos-cluster Controller IP: 34.193.183.134 The containers that power your cluster are now being downloaded. You should be able to access the Kubernetes API once the containers finish downloading. [Pipeline] sh [install-kubernetes] Running shell script + kube-aws status Cluster Name: kubernetes-coreos-cluster Controller IP: 34.193.183.134 [Pipeline] step Archiving artifacts Recording fingerprints [Pipeline] } [Pipeline] // Node [Pipeline] End of Pipeline Finished: SUCCESS
कुबेरनेट्स क्लस्टर का परीक्षण
कुबेरनेट्स स्थापित करने के बाद, आगे हम कुछ एप्लिकेशन चलाकर क्लस्टर का परीक्षण करेंगे। सबसे पहले, हमें नियंत्रक आईपी को सार्वजनिक DNS नाम (nosqlsearch.com) पर कॉन्फ़िगर करने की आवश्यकता है कार्यक्षेत्र)। कंसोल आउटपुट से कंट्रोलर आईपी को कॉपी करें, जैसा कि चित्र 17 में दिखाया गया है।
चित्र 17: सार्वजनिक आईपी पता प्राप्त करना
Kubernetes Controller Ip को EC2 कंसोल से भी प्राप्त किया जा सकता है, जैसा कि चित्र 18 में दिखाया गया है।
चित्र 18: कुबेरनेट्स नियंत्रक आईपी प्राप्त करना
होस्टिंग प्रदाता पर nosqlsearch.com डोमेन के लिए DNS ज़ोन फ़ाइल में A (होस्ट) प्रविष्टि जोड़ें, जैसा कि चित्र 19 में दिखाया गया है। A रिकॉर्ड जोड़ना विभिन्न होस्टिंग प्रदाताओं के लिए थोड़ा अलग होगा।
चित्र 19: सार्वजनिक आईपी पता प्राप्त करना
SSH मास्टर के आईपी का उपयोग करके कुबेरनेट्स मास्टर में लॉग इन करें।
ssh -i "kubernetes-coreos.pem" [email protected]
जैसा कि चित्र 20 में दिखाया गया है, CoreOS कमांड प्रॉम्प्ट प्रदर्शित होता है।
चित्र 20: सार्वजनिक आईपी पता प्राप्त करना
kubectl स्थापित करें बायनेरिज़:
sudo wget https://storage.googleapis.com/kubernetes-release/ release/v1.3.0/bin/linux/amd64/./kubectl sudo chmod +x ./kubectl
नोड्स की सूची बनाएं:
./kubectl get nodes
Kubernetes क्लस्टर नोड्स सूचीबद्ध हो जाते हैं (चित्र 21 देखें)।
चित्र 21: सार्वजनिक आईपी पता प्राप्त करना
क्लस्टर का परीक्षण करने के लिए, nginx . के लिए एक परिनियोजन बनाएं तीन प्रतिकृतियों से मिलकर बनता है।
kubectl run nginx --image=nginx --replicas=3
इसके बाद, तैनाती की सूची बनाएं:
kubectl get deployments
जैसा कि चित्र 22 में दिखाया गया है, "nginx" परिनियोजन सूचीबद्ध होना चाहिए।
चित्र 22: सार्वजनिक आईपी पता प्राप्त करना
क्लस्टर-वाइड पॉड्स की सूची बनाएं:
kubectl get pods -o wide
LoadBalancer . प्रकार की सेवा बनाएं nginx . से परिनियोजन:
kubectl expose deployment nginx --port=80 --type=LoadBalancer
सेवाओं की सूची बनाएं:
kubectl get services
क्लस्टर-वाइड पॉड्स सूचीबद्ध हो जाते हैं, जैसा कि चित्र 23 में दिखाया गया है। "nginx" सेवा क्लस्टर आईपी और बाहरी आईपी सहित बनाई और सूचीबद्ध की जाती है।
चित्र 23: सार्वजनिक आईपी पता प्राप्त करना
nginx . का आह्वान करें क्लस्टर आईपी पर सेवा। nginx सर्विस आउटपुट HTML मार्कअप प्रदर्शित होता है, जैसा कि चित्र 24 में दिखाया गया है।
चित्र 24: सार्वजनिक आईपी पता प्राप्त करना
निष्कर्ष
तीन लेखों में, हमने जेनकिंस प्रोजेक्ट का उपयोग करके कुबेरनेट्स क्लस्टर स्थापित करने पर चर्चा की। हमने क्लस्टर स्थापित करने के लिए जेनकिंसफाइल के साथ जेनकिंस पाइपलाइन प्रोजेक्ट बनाया। एक जेनकिंस पाइपलाइन कुबेरनेट्स इंस्टॉलेशन को स्वचालित करती है, और उसी जेनकिंस पाइपलाइन को आवश्यकतानुसार संशोधित किया जा सकता है और कई कुबेरनेट्स क्लस्टर बनाने के लिए फिर से चलाया जा सकता है।