I den första artikeln, "Using Jenkins with Kubernetes AWS, Part 1," om automatisering av Kubernetes-installation med Jenkins, installerade vi Jenkins på CoreOS, skapade de nödvändiga artefakterna för att installera Kubernetes och skapade en Jenkins-nod. I den andra artikeln, "Använda Jenkins med Kubernetes AWS, del 2", konfigurerade vi en Jenkinsfil och skapade en Jenkins-pipeline. I den här artikeln ska vi köra Jenkins pipeline för att installera Kubernetes och därefter testa Kubernetes-klustret. Den här artikeln har följande avsnitt:
- Kör Jenkins Pipeline
- Testa Kubernetes-klustret
- Slutsats
Kör Jenkins Pipeline
Klicka på Bygg nu för att köra Jenkins Pipeline, som visas i figur 1.

Figur 1: Bygg nu startar Jenkins Pipeline
Jenkins Pipeline startar och en förloppsindikator indikerar förloppet för pipelinen. En Scenvy för de olika stadierna i pipelinen visas också, som visas i figur 2. Kube-aws render-steget i Stage View har en "pausad" länk eftersom vi begärde användarinmatning för antal arbetare (och instanstyp användarinmatning, som kommer att uppmanas till senare) i Jenkinsfilen. Klicka på länken "pausad".

Figur 2: Få den offentliga IP-adressen
I konsolutgången för Jenkins Pipeline klickar du på Indata begärd länk, som visas i figur 3.

Figur 3: Inmatning begärd för antal noder
Ett antal noder dialogruta visas och uppmanar användaren att ange antalet noder, som visas i figur 4. Ett standardvärde som konfigurerats i Jenkinsfilen är också inställt. Klicka på Fortsätt efter att ha angett ett värde.

Figur 4: Ange antal noder
Pipeline fortsätter att köras och pausas igen vid en annan inmatningsförfrågan för instanstypen. Klicka på Inmatning begärd , som visas i figur 5.

Figur 5: Inmatning begärd för instanstyp
Instanstyp dialogrutan visas (se figur 6). Välj standardvärdet (eller ange ett annat värde) och klicka på Fortsätt.

Figur 6: Ange instanstyp
Rörledningen fortsätter att löpa. I steget Deploy Cluster presenteras en annan inmatningsbegärd länk, som visas i figur 7. Klicka på länken.

Figur 7: Indata begärs för Bör kluster distribueras
I Bör distribuera klustret? dialogrutan, välj standardvärdet för "ja" och klicka på Fortsätt, som visas i figur 8.

Figur 8: Bör distribuera kluster?
Rörledningen fortsätter att löpa. Att skapa AWS-resurserna för ett Kubernetes-kluster kan ta ett tag, vilket indikeras av meddelandet i konsolutgången som visas i figur 9.

Figur 9: Skapa AWS-resurser
Rörledningen löper till slut. Ett "SUCCESS"-meddelande indikerar att pipelinen har körts framgångsrikt, som visas i figur 10.

Figur 10: Jenkins Pipeline Run slutfördes framgångsrikt
Stagevyn för Jenkins Pipeline visar de olika stadierna av pipeline som har slutförts, som visas i figur 11. Scenvyn innehåller länkar för Senaste bygg, Senaste stabila bygg, Senaste framgångsrika bygg och Senaste färdigbyggt.

Figur 11: Scenvy
Klicka på Full scenvy för att visa hela scenvyn separat, som visas i figur 12.

Figur 12: Välja hel scenvy
Hela scenvyn visas, som visas i figur 13.

Figur 13: Hela scenen
I instrumentpanelen blir ikonen bredvid Jenkins Pipeline grön för att indikera framgångsrikt slutförande, som visas i figur 14.

Figur 14: Jenkins Dashboard med Jenkins Pipeline listad som att ha slutförts framgångsrikt
För att visa konsolutgången, välj Konsolutgång för byggnaden, som visas i figur 15.

Figur 15: Bygghistorik>Konsolutdata
Konsolutgången visas (se figur 16).

Figur 16: Konsolutgång
En mer detaljerad konsolutgång listas i följande kodsegment:
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
<example@sqldat.com>
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
<example@sqldat.com>" [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
Testa Kubernetes-klustret
Efter att ha installerat Kubernetes ska vi testa klustret genom att köra något program. Först måste vi konfigurera Controller Ip på det offentliga DNS-namnet (nosqlsearch.com domän). Kopiera styrenhetens IP från konsolutgången, som visas i figur 17.

Figur 17: Få den offentliga IP-adressen
Kubernetes Controller Ip kan också erhållas från EC2-konsolen, som visas i figur 18.

Figur 18: Skaffa Kubernetes Controller Ip
Lägg till en A-post (värd) i DNS-zonfilen för nosqlsearch.com-domänen hos värdleverantören, som visas i figur 19. Att lägga till en A-post skulle vara något annorlunda för olika värdleverantörer.

Figur 19: Få den offentliga IP-adressen
SSH Logga in på Kubernetes Master med Master's Ip.
ssh -i "kubernetes-coreos.pem" example@sqldat.com
CoreOS-kommandotolken visas, som visas i figur 20.

Figur 20: Få den offentliga IP-adressen
Installera kubectl binärer:
sudo wget https://storage.googleapis.com/kubernetes-release/ release/v1.3.0/bin/linux/amd64/./kubectl sudo chmod +x ./kubectl
Lista noderna:
./kubectl get nodes
Kubernetes-klusternoderna listas (se figur 21).

Figur 21: Få den offentliga IP-adressen
För att testa klustret, skapa en distribution för nginx bestående av tre repliker.
kubectl run nginx --image=nginx --replicas=3
Lista sedan distributionerna:
kubectl get deployments
"nginx"-distributionen bör listas, som visas i figur 22.

Figur 22: Få den offentliga IP-adressen
Lista de klusteromfattande poddarna:
kubectl get pods -o wide
Skapa en tjänst av typen LoadBalancer från nginx distribution:
kubectl expose deployment nginx --port=80 --type=LoadBalancer
Lista tjänsterna:
kubectl get services
De klusteromfattande poddarna listas, som visas i figur 23. "nginx"-tjänsten skapas och listas inklusive kluster-ip och den externa IP-adressen.

Figur 23: Få den offentliga IP-adressen
Anropa nginx tjänst på klustrets ip. nginx tjänstutdata HTML-markering visas, som visas i figur 24.

Figur 24: Få den offentliga IP-adressen
Slutsats
I tre artiklar diskuterade vi installation av Kubernetes-kluster med ett Jenkins-projekt. Vi skapade ett Jenkins Pipeline-projekt med en Jenkinsfil för att installera klustret. En Jenkins-pipeline automatiserar Kubernetes-installationen, och samma Jenkins-pipeline kan modifieras efter behov och köras igen för att skapa flera Kubernetes-kluster.