KOPS: The Ultimate Tool for Managing Many Clusters

Ayush SharmaAyush Sharma
3 min read

Setting up a Kubernetes cluster with Kops

Introduction

Kubernetes is a powerful container orchestration tool that enables organizations to manage and scale their applications efficiently. When dealing with multiple clusters, managing them manually becomes a challenge. KOPS (Kubernetes Operations) simplifies the process by providing an easy way to install, manage, and upgrade Kubernetes clusters on AWS. This guide will walk you through the process of setting up Kubernetes using KOPS on an EC2 instance.


Kubernetes Installation Using KOPS on AWS EC2

1. Create an EC2 Instance

To set up a Kubernetes cluster, you need an environment where KOPS can be installed. You can either use your personal laptop or create an EC2 instance on AWS. In this guide, we use Ubuntu Linux from AWS.

2. Dependencies Required

Before installing KOPS, ensure you have the following dependencies installed:

  • Python3

  • AWS CLI

  • kubectl (Kubernetes command-line tool)

3. Install Dependencies

Run the following commands to install the necessary dependencies:

curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y python3-pip apt-transport-https kubectl
pip3 install awscli --upgrade
export PATH="$PATH:/home/ubuntu/.local/bin/"

4. Install KOPS

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
chmod +x kops-linux-amd64
sudo mv kops-linux-amd64 /usr/local/bin/kops

5. IAM User Permissions

To create and manage Kubernetes clusters using KOPS, your AWS IAM user must have the following permissions:

  • AmazonEC2FullAccess

  • AmazonS3FullAccess

  • IAMFullAccess

  • AmazonVPCFullAccess

If you are using an admin user, these permissions are already available by default.

6. Configure AWS CLI

Run the following command and follow the prompts to configure your AWS credentials:

aws configure

Kubernetes Cluster Installation

1. Create an S3 Bucket for Storing KOPS Objects

KOPS requires an S3 bucket to store the cluster state and configurations. Create one using the following command:

aws s3api create-bucket --bucket kops-ayush-storage --region ap-south-1

2. Create the Cluster

Run the following command to create a Kubernetes cluster:

kops create cluster --name=demok8scluster.k8s.local --state=s3://kops-ayush-storage --zones=ap-south-1a --node-count=1 --node-size=t2.micro --master-size=t2.micro --master-volume-size=8 --node-volume-size=8

Note: This setup uses a local domain (k8s.local). If you want to use a custom domain, configure Route53 accordingly.

3. Configure Route53 (If Using a Custom Domain)

If you need to use a specific domain, create a hosted zone in Route53:

aws route53 create-hosted-zone --name dev.example.com --caller-reference 1

4. Edit the Cluster Configuration

Important: Before proceeding, edit the cluster configuration as some resources may exceed the AWS free tier and incur costs.

kops edit cluster demok8scluster.k8s.local

5. Build the Cluster

kops update cluster demok8scluster.k8s.local --yes --state=s3://kops-ayush-storage

This process will take a few minutes...

6. Validate the Cluster Installation

Once the cluster is created, validate it using:

kops validate cluster demok8scluster.k8s.local

WARNING: High AWS Costs!

Using KOPS to manage multiple Kubernetes clusters can result in high AWS costs. Always ensure that you delete unused clusters and resources to avoid excessive billing.


Conclusion

KOPS simplifies Kubernetes cluster management on AWS, making it easier to deploy and scale clusters. However, managing hundreds of clusters requires careful monitoring of costs and resource allocation. By following this guide, you can efficiently set up and manage Kubernetes clusters using KOPS.

1
Subscribe to my newsletter

Read articles from Ayush Sharma directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Ayush Sharma
Ayush Sharma