Skip to content

Commit 52d55ea

Browse files
authored
Create Kubernetes_setup.md
1 parent f18b6ef commit 52d55ea

1 file changed

Lines changed: 77 additions & 0 deletions

File tree

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
Setup Kubernetes (K8s) Cluster on AWS
2+
Create Ubuntu EC2 instance
3+
4+
install AWSCLI
5+
6+
curl https://s3.amazonaws.com/aws-cli/awscli-bundle.zip -o awscli-bundle.zip
7+
apt install unzip python
8+
unzip awscli-bundle.zip
9+
#sudo apt-get install unzip - if you dont have unzip in your system
10+
./awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws
11+
Install kubectl on ubuntu instance
12+
13+
curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl
14+
chmod +x ./kubectl
15+
sudo mv ./kubectl /usr/local/bin/kubectl
16+
Install kops on ubuntu instance
17+
18+
curl -LO https://github.com/kubernetes/kops/releases/download/1.15.0/kops-linux-amd64
19+
chmod +x kops-linux-amd64
20+
sudo mv kops-linux-amd64 /usr/local/bin/kops
21+
kops version (it should be 1.15.0)
22+
Note: use below command if you wish to use latest version. For now we could see latest version of kops. So ignore it until further update.
23+
# curl -LO https://github.com/kubernetes/kops/releases/download/$(curl -s https://api.github.com/repos/kubernetes/kops/releases/latest | grep tag_name | cut -d '"' -f 4)/kops-linux-amd64
24+
Create an IAM user/role with Route53, EC2, IAM and S3 full access
25+
26+
Attach IAM role to ubuntu instance
27+
28+
# Note: If you create IAM user with programmatic access then provide Access keys. Otherwise region information is enough
29+
aws configure
30+
Create a Route53 private hosted zone (you can create Public hosted zone if you have a domain)
31+
32+
Routeh53 --> hosted zones --> created hosted zone
33+
Domain Name: edu.net
34+
Type: Private hosted zone for Amazon VPC. Make sure you are chosing right VPC if you have multiple
35+
create an S3 bucket
36+
37+
aws s3 mb s3://demo.k8s.edu.net
38+
Expose environment variable:
39+
40+
export KOPS_STATE_STORE=s3://demo.k8s.edu.net
41+
Create sshkeys before creating cluster
42+
43+
ssh-keygen
44+
Create kubernetes cluster definitions on S3 bucket
45+
46+
kops create cluster --cloud=aws --zones=ap-south-1b --name=demo.k8s.edu.net --dns-zone=edu.net --dns private
47+
Create kubernetes cluser
48+
49+
kops update cluster demo.k8s.edu.net --yes
50+
To cahnge the kubernetes master and worker instance sizes
51+
52+
kops edit ig --name=<cluster_name> nodes
53+
#kops edit ig --name=demo.k8s.edu.net nodes
54+
kops edit ig --name=<cluster_name> master-<zone_name>
55+
#kops edit ig --name=demo.k8s.edu.net master-ap-south-1b
56+
to Delete cluster (try once your lab is done)
57+
58+
kops delete cluster <cluster_name> --yes
59+
Validate your cluster
60+
61+
kops validate cluster
62+
To list nodes
63+
64+
kubectl get nodes
65+
Deploying Nginx pods on Kubernetes
66+
Deploying Nginx Container
67+
68+
kubectl run --generator=run-pod/v1 sample-nginx --image=nginx --replicas=2 --port=80
69+
#kubectl run sample-nginx --image=nginx --replicas=2 --port=80
70+
# kubectl run simple-devops-project --image=yankils/simple-devops-image --replicas=2 --port=8080
71+
kubectl get pods
72+
kubectl get deployments
73+
Expose the deployment as service. This will create an ELB in front of those 2 containers and allow us to publicly access them.
74+
75+
kubectl expose deployment sample-nginx --port=80 --type=LoadBalancer
76+
# kubectl expose deployment simple-devops-project --port=8080 --type=LoadBalancer
77+
kubectl get services -o wide

0 commit comments

Comments
 (0)