اگر اجرای یک ارکستر رو دیده باشید، متوجه شدید که یک نفر رو به روی نوازندگان قرار میگیره و با تکان دادن دست، نوازندگان رو رهبری می کنه.
کوبرنتیز رو هم میتونیم تقریبا رهبر یک ارکستر در نظر بگیریم!
کوبرنتیز، یک برنامه متن باز و محصول شرکت گوگل بوده و الان توسط CNCF (Cloud Native Computing Foundation)، ارائه می شود.
کلاستری که توسط kubernetes اجرا میشه، میتونه 2 نوع، Node داشته باشه:
*** ولی به دلایل منع برده داری، کوبرنتیز در تلاش هست که این اسم ها رو تغییر بده و از اسم های داخل پرانتز استفاده کند!
هر وقت دیدید که کسی کوبرنتیز رو اینجوری نوشته --> K8S، منظورش همون Kubernetes هست ولی 8 حرف بین k و s رو مخفف کرده و نوشته k8s !
اجزای Kubernetes
تعاریف Pod - Container - Node - Volume در کوبرنتیز
هر node می تواند یک یا چند pod درون خود داشته باشد. برای تصور بهتر یک node را یک ماشین مجازی (virtual machin)، در نظر بگیرید. (البته یک node می تواند یک سرور فیزیکی (Bare-Metal) هم باشد.)
کوچکترین واحد که توسط Kubernetes مدیریت می شود، pod است. کل pod تنها یک IP دارد و بین تمام اجزای یک pod این ip مشترک است.
هر pod می تواند یک یا چند volume داشته باشد و این volume(s) بین تمام اجزای pod مشترک است.
هر pod می تواند از یک یا چند container تشکیل شده باشد و یا فقط یک container داشته باشد.
نصب Cluster در Kubernetes:
الان که دارم این پست رو می نویستم در سال 2021 هستیم:)
فعلا به داستان منقضی شدن داکر فکر نکنید. ما داکر ورژن 19.3 و کوبرنتیز ورژن 1.18 رو نصب می کنیم که با هم تناسب دارند. روش نصب هم برای آموزش و آموختن هست.
1-1 - نصب Docker به عنوان Runtime
1-2 - نصب kubeadm: جزئی که باعث راه اندازی خودکار cluster می شود. (حواسش به کلاستر شما هست)
1-3 - نصب kubectl: رابط بین شما و Cluster (جزئی که توسط اون میتوانید با cluster صحبت کنید!)
1-4 - نصب kubelet: جزئی است که روی تمام ماشین های شما وجود دارد و باعث راه اندازی Container و cluster می شود.
sudo apt update sudo apt-get install -y apt-transport-https ca-certificates
curl gnupg2 software-properties-common curl -fSsL https://download.docker.com/linux/ubuntu/gpg| sudo apt-key add - sudo add-apt-
repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu$(lsb_release -cs) stable"
sudo apt-get update sudo apt-cache policy docker-ce
sudo apt-get install -y docker-ce=5:19.03.15~3.0~ubuntu-focal
مراحل بعدی رو یکجا توضیح می دهم (1-2 تا 1-4):
برای چک نمودن network adapter کامند های زیر را بزنید:
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf br_netfilter EOF cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 EOF sudo sysctl --system
برای update و نصب نیازمندی های، کامندهای زیر را بزنید:
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl
برای دریافت کلید از گوگل، کامند زیر را بزنید:
sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg
برای اضافه کردن منبع (repository) کامند زیر را بزنید:
echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
یکبار پکیج های دانلود شده را آپدیت کنید:
sudo apt-get update
دانلود ورژن مورد kubeadm, kubectl, kubelet : (اگر ورژ دیگه ای مدنظرتون هست بجای 1.18.20-00 ، ورژن مد نظر خود را بزنید)
sudo apt-get install -y kubelet=1.18.20-00 kubeadm=1.18.20-00 kubectl=1.18.20-00
برای اینکه ورژن kubeadm, kubectl, kubelet تغییر نکند، کامند زیر را بزنید:
sudo apt-mark hold kubelet kubeadm kubectl
*احتمالا بخاطر تحریم های گوگل اندکی در دانلود موارد بالا اذیت شده اید. که پیشنهاد من اینکه که بصورت دستی image های مورد نیاز برای کوبرنتیز رو دانلود کنید.
این کامند برای نصب و اجرای یک کلاستر است:
(التبه می توانید از سوئیچ های بیشتری استفاده کنید که با کامند kubeadm -h به شما نشان داده می شود)
kubeadm init --apiserver-cert-extra-sans Your_Node_IP
چند نکته کوتاه:
sudo swapoff -v /swap.img
وارد مسیر زیر شوید و خط مربوط به swap را کامنت کنید:
sudo nano /etc/fstab
حالا swap.img را پاک کنید:
sudo rm /swap.img
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
برای این کار من Calico رو انتخاب کردم.
برای دانلود فایل .yaml کامند زیر را بزنید:
curl https://docs.projectcalico.org/manifests/calico.yaml -O
برای نصب pod مربوط به calico توسط kubectl کامند زیر را بزنید:
kubectl apply -f calico.yaml
https://kubernetes.io/ https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/ https://docs.projectcalico.org/getting-started/kubernetes/self-managed-onprem/onpremises