DevOps Kubernetes → কুবারনেটিস

Jahangir Alam
6 min readAug 17, 2021

This article is from udemy course Learn DevOps: The Complete Kubernetes Course

Content

  1. Introduction to Kubernetes
  2. Kubernetes Basics
  3. Advanced Topics
  4. Kubernetes Administration
  5. Packaging and Deploying in Kubernetes
  6. Continuous Development with Kubernetes
  7. GitOps with Kubernetes
  8. Serverless on Kubernetes
  9. Microservices
  10. Installing Kubernetes using Kubeadm
  11. Installing Kubernetes using EKS
  12. On-Prem or Cloud Agnostic Kubernetes

1. Introduction to Kubernetes

কুবারনেটিসঃ কুবারনেটিস হচ্ছে ডকার কন্টেইনারের জন্য ওপেনসোর্স অর্কেস্ট্রেসন সিস্টেম ।

  • একাধিক কন্টেইনার একটা মেশিনে রান করা যায় ।
  • এই কন্টেইনার গুলোর স্টেট মেনেজ করা যায় কুবারনেটিসে ।
  • কোন কন্টেইনার বন্ধ হয়ে গেলে ওটাকে রিস্টার্ট করতে পারে ।
  • এক নোড থেকে আরেক নোডে কন্টেইনার মুভ করাতে পারে ।

কুবারনেটিসের অল্টারনেটিভ হচ্ছে docker swarm এবং mesos

কন্টেইনারঃ

ডকারঃ ডকার হচ্ছে কন্টাইনার সফটওয়ার ।

ডকার ইঞ্জিনঃ এটা হচ্ছে ডকারের রানটাইম ।

ডকার হাবঃ ডকার ইমেজ অনলাইনে স্টোর এবং ফেচ করার সার্ভিস ।

ডকার মেইনলি মেশিন ইন্ডিপেন্ডেন্ট যার কারণে dev, QA, production এ একি কাজ করে । ডকার অপারেটিং সিস্টেম লেভেলে আইসোলেসন করে লিনাক্স কন্টেইনার ব্যাবহার করে ।

কুবারনেটিস সেটআপঃ

কুবারনেটিস যেকোনো জায়গার রান করতে পারে । বিভিন্ন ধরনের ক্লাউড প্রভাইডারের জন্য বিভিন্ন ধরনের ইন্টিগ্রেশন আছে, যেমনঃ volumes, external load balancers.

লোকাল মেশিনে রান করার জন্য আমরা প্রথমে minikube ইন্সটল করে কাজ করব । এছাড়াও aws এ রান করার জন্য kops ব্যাবহার করা হয় ।

নিচের এই লিঙ্ক থেকে আমরা minikube ইন্সটল করতে পারবো । অফিসিয়াল গাইডলাইন নিচের এই লিঙ্কে আছে ।

minikube মূলত লোকালি টেস্ট করার জন্য বা ডেভেলপমেন্ট করার জন্য ব্যাবহার করা হয় । এটা লিনাক্স মেশিনে সিঙ্গেল নোডে কিউবারনেটিস ক্লাস্টার রান করে ।

kubectl অথবা minikube রান করার জন্য শুধু মাত্র docker ইন্সটল থাকলেই হবে ।

প্যাকেজ ম্যানেজার না থাকলে kubectl ইন্সটল করে কাজ করতে হবে ।

sudo snap install kubectl --classic

এই কমান্ড দিয়ে লিনাক্সে kubectl ইন্সটল করবো ।

এখন এই সফটওয়ার গুলোর ভার্সন চেক করার জন্য নিচের কমান্ড দিয়ে চেক করবো ।

docker version
minikube version
kubectl version

docker root user নিয়ে সমস্যা হলে নিচের কমান্ড গুলো দিয়ে একটা নতুন ইউজার তৈরি করে ডকার এ এই ইউজার অ্যাড করে দিতে হবে ।

Add new user

adduser developer
usermod -aG sudo developer
su - developer

এখানে developer নামে একটি ইউজার তৈরি করলাম এরপর এই ইউজারে সুইচ করলাম ।

Add user to docker group

sudo groupadd docker
sudo usermod -aG docker $USER

এরপর ল্যাপটপ রিস্টার্ট দিবো । restart হওয়ার পর development user এ লগইন করবো su — developer এই কমান্ড দিয়ে । এরপর নিচের কমান্ড দিলে minikube স্টার্ট হয়ে যাবে ।

minikube start

docker কে ভারচুয়াল মেশিন হিসেবে নিয়ে কাজ করে , মিনিকিউব এটাকে অটোম্যাটিক ডিটেক্ট করে নেয় ।

এখন minikube ব্যাবহার করার জন্য kubectl কনফিগার হয়ে গেলো । অর্থাৎ cat ~/.kube/config এই ফাইলটাকে কনফিগার করেছে ।

এই ফাইলে গেলে দেখা যাবে নিচের এই এড্রেসে সার্ভার রান হবে ।

server: https://192.168.49.2:8443

নিচের এই লিঙ্ক থেকে বেসিক কিছু কমান্ড দেখে নিতে পারি ।

নিচের কমান্ড দিয়ে একটি ডেপ্লয়মেন্ট তৈরি করবো ।

kubectl create deployment hello-node --image=k8s.gcr.io/echoserver:1.4

view deployment

kubectl get deployments

minikube বন্ধ করার জন্য নিচের কমান্ড ব্যাবহার করবো ।

minikube stop

যদি কোন প্রব্লেম হয় তাহলে ভারচুয়ার মেশিন সহ cluster ডিলিট করার জন্য নিচের কমান্ড ব্যাবহার করবো ।

minikube delete

Installing Kubernetes using Docker client

অনেকসময় বিভিন্ন ডিপেন্ডেন্সির কারণে minikube ঠিক মতো কাজ করে না, সেজন্য ডকার ব্যাবহার করা যেতে পারে কারণ ডকার প্লাটফর্ম ইন্ডিপেন্ডেন্ট ।

Minikube vs Docker Client vs Kops vs Kubeadm

minikube এবং Docker client হচ্ছে মূলত kubernetes কে লোকালি টেস্টিং এবং ডেভেলপমেন্ট করার জন্য কিন্তু kops এবং kubeadm প্রডাকশনের জন্য । যেকোনো একটা ব্যাবহার করতে হয় ।

AWS এর জন্য Kops হচ্ছে বেস্ট ।

Kops

Kubernetes Operation কে শর্টকাটে Kops বলা হয়, এটা সাধারণত প্রডাকশন গ্রেড kubernetes installation, upgrade এবং management এর জন্য ব্যাবহার করা হয় ।

এটা শুধুমাত্র Mac/Linux এর সাথেই ব্যাবহার করা যায়, windows এ ব্যাবহারে জন্য virtualbox ইন্সটল করে ব্যাবহার করতে হয় ।

vagrant ইন্সটল করতে হবে ইনিশিয়ালি একটি linux box বুট করার জন্য ।

Kubernetes with Kops

প্রথমে vagrant ইন্সটল করতে হবে নিচের কমান্ডের সাহায্যে ।

sudo apt install vagrant

vagrant ইন্সটল করে লিনাক্সের যেকোনো একটি ডিস্ট্রিবিউসন ইনিসিয়ালিজ করতে হবে । এখানে আমরা xenial ইন্সটল করবো ।

vagrant init ubuntu/xenial64

এরপর এটাকে আপ করবো

vagrant up

এই কমান্ডে কাজ না করলে আমাদেরকে virtualbox ইন্সটল করে প্রভাইডার সেটআপ করে দিতে হবে ।

sudo apt-get install virtualbox
vagrant up --provider virtualbox

এরপর লগইন করার জন্য ssh ব্যাবহার করবো ।

vagrant ssh-config
vagrant ssh

kops install করার জন্য নিচের কমান্ড গুলো দিতে হবে ।

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

এরপর pip ইন্সটল করতে হবে, pip ইন্সটল করার পর awscli install করতে হবে নিচের কমান্ডের সাহায্যে ।

sudo pip install awscli

এছাড়াও snapcraft থেকেও aws-cli ইন্সটল করা যায় । এরপর aws এর ওয়েবসাইটে গিয়ে IAM — identity access management সেটআপ করার পর কমান্ডলাইনে নিচের কমান্ড দিয়ে সেটআপ করবো ।

aws configure

এখানে access key এবং secret access কি দিয়ে সেটআপ করে নিবো ।

ls -ahl ~/.aws/

এই কমান্ড দিয়ে এই ফোল্ডারের ইনফরমেশন গুলো দেখতে পারি ।

cluster setup on AWS using kops

vagrant এবং kops ইন্সটল হয়ে গেলে এখন kops ব্যাবহার করে aws এ cluster সেটআপ করতে পারবো ।

এখন ক্লাস্টারে লগইন করার জন্য আমাদেরকে ssh কী সেটআপ করতে হবে ।

ssh-keygen -f .ssh/kubernetes_id_rsa

উপরের এই কমান্ড দিয়ে আমাদেরকে ssh কী জেনারেট করতে হবে ।

cat .ssh/kubernetes_id_rsa.pub

এই কমান্ড দিয়ে পাবলিক কী টা দেখা যাবে আর প্রাইভেট কী টা kubernetes_id_rsa এই ফাইলে থাকবে। পাবলিক কী টা আমাদের ইন্সটেন্সে থাকবে আর লগইন করতে হবে প্রাইভেট কী দিয়ে ।

kops অথবা minikube দিয়ে aws এ কিভাবে ক্লাস্টার আপলোড করতে হয়ে এটা আমরা এখন করবো না কারণ aws এর কনসেপ্ট এখনো ক্লিয়ার হয় নাই । এটা আমরা পরে আপলোড করবো ।

এখন প্রথমে আমাদের ডকার ইমেজ লাগবে এজন্য আমার পূর্ববর্তী ব্লগ ডকারের উপর লেখা, নিচের এই লিঙ্ক থেকে ডকার নিয়ে ইনিশিয়াল একটু ধারনা নিয়ে নেওয়া যাবে ।

এখন নিচের এই কমান্ড দিয়ে বেসিক একটি নোড প্রজেক্ট ক্লোন করে নিয়ে আসবো এখানে ডকার ফাইল ও আছে ।

git clone https://github.com/wardviaene/docker-demo.git

নিচের এই কমান্ড দিয়ে রুট ডিরেক্টরির আন্ডারে ডকার ফাইল রান করা যাবে ।

sudo docker build .

এই ইমেজের নাম দেওয়ার জন্য নিচের কমান্ডটি ব্যাবহার করা যাবে ।

sudo docker build -t jahangirdevs/dockerdemo .

Dockerfile বিল্ড করার আগে প্রজেক্টটি রান করে নিবো, এজন্য প্রয়োজনীয় ফাইল ইন্সটল করে নিবো npm install কমান্ড ব্যাবহার করে ।

অথবা অন্য কোন ইউজারকে এক্সেস দেওয়ার জন্য নিচের কমান্ড ব্যাবহার করা যাবে।

sudo usermod -G docker developer

ডকার বিল্ড হয়ে গেলে এটাকে আমরা docker hub এ আপ করবো কারণ এটাকে আমরা পরবর্তীতে কুবারনেটিস ক্লাস্টারে রান করবো ।

একটা কন্টেইনারে একটাই প্রেসেস রান করতে হবে । ডকার কন্টেইনার বন্ধ হয়ে গেলে এর রিলেটেড ডাটা গুলো আর প্রিজারভ থাকে না এজন্য কুবারনেটিসে volumes ব্যাবহার করতে হয় ।

Docker hub এ প্রথমে লগইন করে একটি রিপজিটরি তৈরি করতে হবে । এখানে আমরা এটার নাম দিয়েছি docker-demo . এরপর টার্মিনালে developer user মোডে যাবো

su - developer

এখন ডকারে কি কি ইমেজ আছে সেটা দেখার জন্য নিচের কমান্ডটি চালাতে হবে ।

docker images

এখন ডকারহাবে ইমেজ পুশ করার জন্য প্রথমে লগইন করতে হবে এরপর নিচের কমান্ডগুলো চালাতে হবে ।

sudo docker tag jahangirdevs/dockerdemo jahangirdevs/docker-demo
sudo docker push jahangirdevs/docker-demo

এই কমান্ড দিয়ে ডকার হাবে আমাদের তৈরি কৃত ডকার ইমেজ docker hub এ পুশ করা যায় । এরজন্য অবশ্য আগে docker hub এ লগইন করতে হবে এবং কনসলেও লগইন করে নিতে হবে ।

Running first app on kubernetes

--

--