shiva.Ganji
shiva.Ganji
خواندن ۲ دقیقه·۳ سال پیش

مقدمه و نصب Kubernetes، مرحله به مرحله

اول از همه بگیم kubernetes چیه؟

اگر اجرای یک ارکستر رو دیده باشید، متوجه شدید که یک نفر رو به روی نوازندگان قرار میگیره و با تکان دادن دست، نوازندگان رو رهبری می کنه.

کوبرنتیز رو هم میتونیم تقریبا رهبر یک ارکستر در نظر بگیریم!

کوبرنتیز، یک برنامه متن باز و محصول شرکت گوگل بوده و الان توسط CNCF (Cloud Native Computing Foundation)، ارائه می شود.

کلاستری که توسط kubernetes اجرا میشه، میتونه 2 نوع، Node داشته باشه:

  • Master (Control Plain)
  • Slave (Worker)

*** ولی به دلایل منع برده داری، کوبرنتیز در تلاش هست که این اسم ها رو تغییر بده و از اسم های داخل پرانتز استفاده کند!

هر وقت دیدید که کسی کوبرنتیز رو اینجوری نوشته --> K8S، منظورش همون Kubernetes هست ولی 8 حرف بین k و s رو مخفف کرده و نوشته k8s !



اجزای Kubernetes

  • etcd
  • API server
  • Scheduler
  • Controller Manager
  • Cloud Controller Manager
  • Kubelet
  • Kube-Proxy



تعاریف 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-1 - نصب Docker به عنوان Runtime

1-2 - نصب kubeadm: جزئی که باعث راه اندازی خودکار cluster می شود. (حواسش به کلاستر شما هست)

1-3 - نصب kubectl: رابط بین شما و Cluster (جزئی که توسط اون میتوانید با cluster صحبت کنید!)

1-4 - نصب kubelet: جزئی است که روی تمام ماشین های شما وجود دارد و باعث راه اندازی Container و cluster می شود.

1-1- نصب داکر:

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 &quotdeb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main&quot | 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


چند نکته کوتاه:

  • حتما باید swap مموری خود را خاموش کنید:
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

برای برقرای شبکه بین container ها و podها، نیاز به podی برای مدیریت داریم.

برای این کار من Calico رو انتخاب کردم.

نصب 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




k8skubernetesdevops
کارشناس DevOps و علاقمند به یادگیری
شاید از این پست‌ها خوشتان بیاید