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

اول از همه بگیم kubernetes چیه؟اگر اجرای یک ارکستر رو دیده باشید، متوجه شدید که یک نفر رو به روی نوازندگان قرار میگیره و با تکان دادن دست، نوازندگان رو رهبری می کنه.کوبرنتیز رو هم میتونیم تقریبا رهبر یک ارکستر در نظر بگیریم!کوبرنتیز، یک برنامه متن باز و محصول شرکت گوگل بوده و الان توسط CNCF (Cloud Native Computing Foundation)، ارائه می شود.کلاستری که توسط kubernetes اجرا میشه، میتونه 2 نوع، Node داشته باشه:Master (Control Plain)Slave (Worker)*** ولی به دلایل منع برده داری، کوبرنتیز در تلاش هست که این اسم ها رو تغییر بده و از اسم های داخل پرانتز استفاده کند!هر وقت دیدید که کسی کوبرنتیز رو اینجوری نوشته --> K8S، منظورش همون Kubernetes هست ولی 8 حرف بین k و s رو مخفف کرده و نوشته k8s !اجزای KubernetesetcdAPI serverSchedulerController ManagerCloud Controller ManagerKubeletKube-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-cesudo 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 updatesudo 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/.kubesudo 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