1.kops is a software use to create production ready k8s cluster in a cloud provider like AWS.
-
kOPS SUPPORTS MULTIPLE CLOUD PROVIDERS
-
Kops compete with managed kubernestes services like EKS, AKS and GKE
-
Kops is cheaper than the others.
-
Kops create production ready K8S.
-
KOPS create resources like: LoadBalancers, ASG, Launch Configuration, woker node Master node (CONTROL PLANE.
-
KOPS is IaaC
#!/bin/bash
sudo adduser kops
sudo echo "kops ALL=(ALL) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/kops
sudo su - kops
sudo apt install awscli -y
sudo apt update -y
sudo apt install unzip wget -y
sudo curl https://s3.amazonaws.com/aws-cli/awscli-bundle.zip -o awscli-bundle.zip
sudo apt install unzip python -y
sudo unzip awscli-bundle.zip
sudo ./awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws
sudo apt install wget -y
sudo wget https://github.com/kubernetes/kops/releases/download/v1.22.0/kops-linux-amd64
sudo chmod +x kops-linux-amd64
sudo mv kops-linux-amd64 /usr/local/bin/kops
sudo curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl
sudo chmod +x ./kubectl
sudo mv ./kubectl /usr/local/bin/kubectl
AmazonEC2FullAccess
AmazonS3FullAccess
IAMFullAccess
AmazonVPCFullAccess
Then Attach IAM role to ubuntu server from Console Select KOPS Server --> Actions --> Instance Settings --> Attach/Replace IAM Role --> Select the role which You Created. --> Save.
Execute the commands below in your KOPS control Server. use unique s3 bucket name. If you get bucket name exists error.
aws s3 mb s3://class30kops
aws s3 ls # to verify
Expose environment variable:
# Add env variables in bashrc
vi .bashrc
# Give Unique Name And S3 Bucket which you created.
export NAME=class30.k8s.local
export KOPS_STATE_STORE=s3://class30kops
source .bashrc
ssh-keygen
kops create cluster --zones us-west-2b --networking weave --master-size t2.medium --master-count 1 --node-size t2.medium --node-count=2 ${NAME}
# copy the sshkey into your cluster to be able to access your kubernetes node from the kops server
kops create secret --name ${NAME} sshpublickey admin -i ~/.ssh/id_rsa.pub
kops update cluster ${NAME} --yes
10a) Validate your cluster(KOPS will take some time to create cluster ,Execute below commond after 3 or 4 mins)
kops validate cluster
Suggestions:
- validate cluster: kops validate cluster --wait 10m
- list nodes: kubectl get nodes --show-labels
- ssh to the master: ssh -i ~/.ssh/id_rsa [email protected]
- the ubuntu user is specific to Ubuntu. If not using Ubuntu please use the appropriate user based on your OS.
- read about installing addons at: https://kops.sigs.k8s.io/operations/addons.
10b - Export the kubeconfig file to manage your kubernetes cluster from a remote server. For this demo, Our remote server shall be our kops server
kops export kubecfg $NAME --admin
11a) To list nodes and pod to ensure that you can make calls to the kubernetes apiSAerver and run workloads
kubectl get nodes
11b) Alternative you can ssh into your kubernetes master server using the command below and manage your cluster from the master
sh -i ~/.ssh/id_rsa ubuntu@ipAddress
ssh -i ~/.ssh/id_rsa [email protected]
ssh -i ~/.ssh/id_rsa [email protected]
sudo sed -i "/^[^#]*PasswordAuthentication[[:space:]]no/c\PasswordAuthentication yes" /etc/ssh/sshd_config
sudo service sshd restart
sudo passwd ubuntu
kubectl get nodes
kops delete cluster --name=${NAME} --state=${KOPS_STATE_STORE} --yes
====================================================================================================
13 # IF you want to SSH to Kubernetes Master or Nodes Created by KOPS. You can SSH From KOPS_Server
sh -i ~/.ssh/id_rsa ubuntu@ipAddress ssh -i ~/.ssh/id_rsa [email protected]
``