DevOps Kubernetes → কুবারনেটিস
--
This article is from udemy course Learn DevOps: The Complete Kubernetes Course
Content
- Introduction to Kubernetes
- Kubernetes Basics
- Advanced Topics
- Kubernetes Administration
- Packaging and Deploying in Kubernetes
- Continuous Development with Kubernetes
- GitOps with Kubernetes
- Serverless on Kubernetes
- Microservices
- Installing Kubernetes using Kubeadm
- Installing Kubernetes using EKS
- 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