نصب کوبرنیتز

آموزش نصب Kubernetes درubuntu 18، با استفاده از Kubeadm

آموزش نصب Kubernetes درubuntu 18، با استفاده از Kubeadm

در این مقاله قرار است مفهوم kubernetes و kubeadm را بررسی کنیم و روش نصب آن را بیاموزم.

 

Kubernetes (کوبرنیتز) چیست؟

 

Kubernetes یا k8s (عنوان غیر رسمی کوبرنیتز) یک سیستم متن باز است که برای خودکار سازی، مقیاس سازی و مدیریت برنامه های کاربردی کانتینر،استفاده می شود.

 

مزایای کوبر نیتزها :

 

  • نصب و راه اندازی خودکار سیستم ها: کوبر نیتز زمانی که درحال نظارت و کنترل بر سلامت برنامه ها و پیکربندی آنهاست ، به تدریج تغییراتی را ایجاد میکند تا مطمئن شود همه نمونه ها بطور همزمان از بین نروند و وقتی مشکلی پیش آمد آن تغییرات را برای ما بازیابی کند.

 

  • کشف خدمات و تعادل بارگذاری: کوبر نیتز برای راه اندازی pods، آدرس IP و نام DNS مربوطه را به مجموعه ی pods میدهد و بارگذاری را بین آنها توزیع میکند.

 

  • سازماندهی مخازن: کاربران میتوانند سیستم های ذخیره ساز محلی یا ابری را بطور خودکار نصب کنند.

 

  • پکیج کردن خودکار کانتینر: کوبر نیتز به طور خودکار کانتینرها را بر اساس نیازمنابع خود و سایر محدودیت ها توزیع می کند.کانتینرهایی که منابع بهتری به آنها اختصاص داده شده عملکرد سیستم برای آنها بهتر خواهد بود.

 

  • استفاده از پکیج ها در کوبر نیتز: کوبر نیتز در کنار خدماتی که انجام میدهد،میتواند تنظیمات پکیج شما را نیز مدیریت کند.

 

  • خود بازیابی: کوبر نیتز وضعیت کانتینرها را کنترل میکند و زمانی که برای کانتینرها مشکلی پیش بیاید ، کانتینرهای جدید را جایگزین آنها میکند. بنابراین کانتینرهایی که در حال حاضر شکسته اند دوباره ساخته میشوند.

 

  • Kubeadm: وظیفهkubeadm نصب و پیکربندی خودکار اجزای کوبرنیتز،API server ، کنترل مدیریت و kube Dns میباشد .

 

Kubeadm چیست؟

 

Kubeadm مجموعه ابزاری است که همراه با توزیع کوبر نتیزها ارائه میشود و بهترین روش و متد را برای ساختن یک cluster (دسته) در زیر ساخت های موجود فراهم میکند.

 

فرایند نصب کوبرنیتز:

 

پیکربندی سرورها

 

برای نصب کوبر نیتز از 3 سرور با مشخصات سیستمی زیر استفاده می کنیم:

  • Master server – 4 CPU and 4096 RAM
  • Worker1 server – 2 CPU and 4096 RAM
  • Worker2 server – 2 CPU and 4096 RAM

 

همه سرورها، از اوبونتو 18.04 استفاده میکنند و هر کدام از IP و DNS های زیر استفاده میکنند:

  • Master server – IP 192.168.50.58
  • Worker1 server – IP 192.168.50.38
  • Worker2 server – IP 192.168.50.178

 

به روز رسانی یا آپدیت

 

اولین حرکت مطمئن شدن از به روز بودن تمام پکیج ها در هر سرور است:

 

root@host:~# apt update -y && apt upgrade -y

 

اضافه کردن اطلاعات HOST یا میزبان

 

هم اکنون باید وارد هر ماشین شوید و با استفاده از دستورات زیر ، پیکربندی پرونده hosts یا etc را ویرایش کنید :

 

root@host:~# tee -a /etc/hosts 192.168.50.38 worker1

> 192.168.50.178 worker2

> EOF

192.168.50.58 master

192.168.50.38 worker1

192.168.50.178 worker2

root@host:~#

 

بعد از اجرای کد بالا می توانیم تغییرات موجود در پرونده میزبان را به صورت زیر تایید کنیم:

 

root@host:~# cat /etc/hosts

127.0.0.1 localhost

127.0.1.1 host

::1 ip6-localhost ip6-loopback

fe00::0 ip6-localnet

ff00::0 ip6-mcastprefix

ff02::1 ip6-allnodes

ff02::2 ip6-allrouters

192.168.50.58 master

192.168.50.38 worker1

192.168.50.178 worker2

root@host:~#

 

غیرفعال کردن swap memory

 

برای عملکرد صحیح kubelet ، حتما باید حافظه swap را غیرفعال کنید که این تغییر بر روی همه سرورها اعمال میشود. در صورت عدم وجود فضای کافی در RAM از فضای صفحه بندی هارد دیسک برای ذخیره موقت داده ها استفاده میشود.

با استفاده از دستورات زیر میتوانید این کار را انجام دهید:

 

root@host:~# sed -i ‘/ swap / s/^\(.*\)$/#\1/g’ /etc/fstab

root@host:~# swapoff -a

نصب و راه اندازی Kubelet , kubeadm و kubectl

 

برای این کار باید عناصر مورد نیاز را انتخاب کنیم. برای نمونه در این آموزش ما از سه عنصر زیر استفاده میکنیم:

  • Kubelet
  • Kubeadm
  • Kubectl

 

اضافه کردن مخازن

 

با استفاده از دستورات زیر می توان مخازن را به مدیریت پکیج ها اضافه کرد و بررسی کلیدی را بر روی آنها انجام داد.

برای اینکه منابع HTTPS خارجی بصورت ایمن به لیست منابع apt اضافه شوند، اول apt-transport-https را نصب کنید و سپس kubelet ،kubeadm وkubectl را نصب کنید.

برای شروع نصب اولیه را بر روی سرور Master انجام خواهیم داد:

 

root@host:~# apt-get update && apt-get install -y

root@host:~# apt-transport-https curl

 

سپس باید مخازن کوبرنیتز و کلید برای بررسی اینکه همه چیز با امنیت نصب شده است را اضافه کنید:

 

root@host:~# curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add –

OK

root@host:~#

 

در ادامه مخازن خود را اضافه کنید:

 

root@host:~# echo “deb https://apt.kubernetes.io/ kubernetes-xenial main” | tee /etc/apt/sources.list.d/kubernetes.list

deb https://apt.kubernetes.io/ kubernetes-xenial main

root@host:~#

 

نصب

 

هم اکنون سرور را دوباره اپدیت کنید تا مخزن جدید را بشناسید و پکیج ها را نصب کنید.

 

root@host:~# apt update

root@host:~# apt -y install vim git curl wget kubelet kubeadm kubectl

 

تعیین حالت

 

Kubelet در یک حلقه آماده به کار است و منتظر اقدامات بعدی است به همین خاطر هرچند ثانیه یکبار راه اندازی میشود. با استفاده از دستورات زیر آن را در حالت آماده به کار، قرار دهید :

 

root@host:~# apt-mark hold kubelet kubeadm kubectl

kubelet set on hold.

kubeadm set on hold.

kubectl set on hold.

root@host:~#

 

تایید نصب

 

اکنون با استفاده از دستورات زیر نسخه اجزای نصب شده را بررسی کنید:

 

root@host:~# kubectl version –client && kubeadm version

Client Version: version.Info{Major:”1″, Minor:”19″, GitVersion:”v1.19.3″, GitCommit:”1e11e4a2108024935ecfcb2912226cedeafd99df”, GitTreeState:”clean”, BuildDate:”2020-10-14T12:50:19Z”, GoVersion:”go1.15.2″, Compiler:”gc”, Platform:”linux/amd64″}

kubeadm version: &version.Info{Major:”1″, Minor:”19″, GitVersion:”v1.19.3″, GitCommit:”1e11e4a2108024935ecfcb2912226cedeafd99df”, GitTreeState:”clean”, BuildDate:”2020-10-14T12:47:53Z”, GoVersion:”go1.15.2″, Compiler:”gc”, Platform:”linux/amd64″}

root@host:~#

 

پیکربندی فایروال

 

در این مرحله باید iptables پیکربندی شود تا بتواند از طریق پل شبکه ترافیک ایجاد کند.این تغییر بسیار حیاتی است زیرا وظیفه آن بررسی ترافیک هایی است که میتوانند از اتصالات عبور کنند.

حالا باید ماژول افزودنی br_netfilter را بارگیری کنید:

 

root@host:~# modprobe overlay

root@host:~# modprobe br_netfilter

 

در پیکربندی sysctl از k8s ، مقدار 1 را تعیین میکنیم که به معنی بررسی ترافیک است.

 

root@host:~# tee /etc/sysctl.d/kubernetes.conf net.bridge.bridge-nf-call-iptables = 1

> net.ipv4.ip_forward = 1

> EOF

net.bridge.bridge-nf-call-ip6tables = 1

net.bridge.bridge-nf-call-iptables = 1

net.ipv4.ip_forward = 1

root@host:~#

 

و دوباره sysctl را بارگذاری کنید:

 

root@host:~# sysctl –system

* Applying /etc/sysctl.d/10-console-messages.conf …

kernel.printk = 4 4 1 7

* Applying /etc/sysctl.d/10-ipv6-privacy.conf …

net.ipv6.conf.all.use_tempaddr = 2

net.ipv6.conf.default.use_tempaddr = 2

* Applying /etc/sysctl.d/10-kernel-hardening.conf …

kernel.kptr_restrict = 1

* Applying /etc/sysctl.d/10-link-restrictions.conf …

fs.protected_hardlinks = 1

fs.protected_symlinks = 1

* Applying /etc/sysctl.d/10-magic-sysrq.conf …

kernel.sysrq = 176

* Applying /etc/sysctl.d/10-network-security.conf …

net.ipv4.conf.default.rp_filter = 1

net.ipv4.conf.all.rp_filter = 1

net.ipv4.tcp_syncookies = 1

* Applying /etc/sysctl.d/10-ptrace.conf …

kernel.yama.ptrace_scope = 1

* Applying /etc/sysctl.d/10-zeropage.conf …

vm.mmap_min_addr = 65536

* Applying /usr/lib/sysctl.d/50-default.conf …

net.ipv4.conf.all.promote_secondaries = 1

net.core.default_qdisc = fq_codel

* Applying /etc/sysctl.d/99-sysctl.conf …

* Applying /etc/sysctl.d/kubernetes.conf …

net.bridge.bridge-nf-call-ip6tables = 1

net.bridge.bridge-nf-call-iptables = 1

net.ipv4.ip_forward = 1

* Applying /etc/sysctl.conf …

root@host:~#

 

نصب داکر

 

داکر یک کانتینر، برای محصول درحال اجراست که با استفاده از مجازی سازی سطح سیستم عامل،کانتینرها را راه اندازی میکند. این کانتینر ها از یکدیگر جدا شده اند و شامل نرم افزار،کتابخانه ها و پرونده های پیکربندی مورد نیاز برای اجرای یک برنامه هستند.

گام بعدی مربوط به افزودن مخازن به مدیر پکیج ها و بررسی کلیدهاست. به یاد داشته باشید که باید تمام این وظایف بر روی هر سرور انجام شود . در ابتدا باید یک بار دیگر یک به روز رسانی سریع با دستور apt انجام دهید.

 

root@host:~# apt update

root@host:~# apt install -y curl gnupg2

root@host:~# curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add –

OK

root@host:~# add-apt-repository “deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable”

root@host:~# apt update

root@host:~# apt install -y containerd.io docker-ce

 

ایجاد راهنما و پیکربندی

 

در این قسمت پیکربندی داکر را وارد کنید تا بتواند در پس زمینه اجرا شود:

 

root@host:~# mkdir -p /etc/systemd/system/docker.service.d

root@host:~# tee /etc/docker/daemon.json “exec-opts”: [“native.cgroupdriver=systemd”],

> “log-driver”: “json-file”,

> “log-opts”: {

> “max-size”: “100m”

> },

> “storage-driver”: “overlay2”

> }

> EOF

{

“exec-opts”: [“native.cgroupdriver=systemd”],

“log-driver”: “json-file”,

“log-opts”: {

“max-size”: “100m”

},

“storage-driver”: “overlay2”

}

root@host:~#

 

راه اندازی مجدد داکر

 

حالا باید docker deamon را دوباره بارگیری و راه اندازی کنید (reload and restart) و سپس آن را فعال کنید:

 

root@host:~# systemctl daemon-reload

root@host:~# systemctl restart docker

root@host:~# systemctl enable docker

Synchronizing state of docker.service with SysV service script with /lib/systemd/systemd-sysv-install.

Executing: /lib/systemd/systemd-sysv-install enable docker

root@host:~#

تایید وضعیت داکر

 

برای تایید فعال بودن و در حال اجرا بودن داکر مانند زیر عمل کنید:

 

root@host:~# systemctl status docker

● docker.service – Docker Application Container Engine

Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset:

Active: active (running) since Fri 2020-10-23 19:31:23 +03; 1min 6s ago

Docs: https://docs.docker.com

Main PID: 16856 (dockerd)

Tasks: 13

CGroup: /system.slice/docker.service

└─16856 /usr/bin/dockerd -H fd:// –containerd=/run/containerd/containerd.sock

Oct 23 19:31:23 host dockerd[16856]: time=”2020-10-23T19:31:23.570268584+03:00″

Oct 23 19:31:23 host dockerd[16856]: time=”2020-10-23T19:31:23.570272311+03:00″

Oct 23 19:31:23 host dockerd[16856]: time=”2020-10-23T19:31:23.570275888+03:00″

Oct 23 19:31:23 host dockerd[16856]: time=”2020-10-23T19:31:23.570389541+03:00″

Oct 23 19:31:23 host dockerd[16856]: time=”2020-10-23T19:31:23.626550911+03:00″

Oct 23 19:31:23 host dockerd[16856]: time=”2020-10-23T19:31:23.650814097+03:00″

Oct 23 19:31:23 host dockerd[16856]: time=”2020-10-23T19:31:23.661596420+03:00″

Oct 23 19:31:23 host dockerd[16856]: time=”2020-10-23T19:31:23.661656042+03:00″

Oct 23 19:31:23 host dockerd[16856]: time=”2020-10-23T19:31:23.671493768+03:00″

Oct 23 19:31:23 host systemd[1]: Started Docker Application Container Engine.

lines 1-19/19 (END)

 

ایجاد Master server

 

در این بخش باید ماژول br_netfilter را با استفاده از دستورات زیر بارگیری کنید:

 

root@host:~# lsmod | grep br_netfilter

br_netfilter 28672 0

bridge 176128 1 br_netfilter

root@host:~#

 

شروع Kubelet

 

در این مرحله kubelet را فعال کنید و سپس سرور را برای مدیریت K8s مقداردهی کنید مانند etcd (پایگاه داده دسته ایی) و API server :

 

root@host:~# systemctl enable kubelet

root@host:~# kubeadm config images pull

[config / images] Pulled k8s.gcr.io/kube-apiserver:v1.19.3

[config / images] Pulled k8s.gcr.io/kube-controller-manager:v1.19.3

[config / images] Pulled k8s.gcr.io/kube-scheduler:v1.19.3

[config / images] Pulled k8s.gcr.io/kube-proxy:v1.19.3

[config / images] Pulled k8s.gcr.io/pause:3.2

[config / images] Pulled k8s.gcr.io/etcd:3.4.13-0

[config / images] Pulled k8s.gcr.io/coredns:1.7.0

root@host:~#

 

ایجاد Cluster یا دسته

 

از پارامترهای زیر برای ایجاد یک دسته با دستور kubeadm استفاده خواهیم کرد:

 

  • از دستور –pod-network-cidr برای پیکربندی شبکه و تنظیم محدوده CIDR (Classless Inter-Domain Routing)

استفاده میشود که یک روش برای آدرس دهی بدون کلاس است.

 

  • دستور –control-plane-endpoint مجموعه ایی از نقطه پایان های مشترک برای تمام گره هاست ، به شرطی که در دسته ایی با قابلیت دسترسی بالا باشد.

 

root@host:~# kubeadm init \

> –pod-network-cidr=10.0.0.0/16 \

> –control-plane-endpoint=master

W1023 21:29:58.178002 9474 configset.go:348] WARNING: kubeadm cannot validate component configs for API groups [kubelet.config.k8s.io kubeproxy.config.k8s.io]

[init] Using Kubernetes version: v1.19.3

[preflight] Running pre-flight checks

[preflight] Pulling images required for setting up a Kubernetes cluster

[preflight] This might take a minute or two, depending on the speed of your internet connection

[preflight] You can also perform this action in beforehand using ‘kubeadm config images pull’

[certs] Using certificateDir folder “/etc/kubernetes/pki”

[certs] Generating “ca” certificate and key

[certs] Generating “apiserver” certificate and key

[certs] apiserver serving cert is signed for DNS names [host kubernetes kubernetes.default kubernetes.default.svc kubernetes.default.svc.cluster.local master] and IPs [10.96.0.1 192.168.50.58]

[certs] Generating “apiserver-kubelet-client” certificate and key

[certs] Generating “front-proxy-ca” certificate and key

[certs] Generating “front-proxy-client” certificate and key

[certs] Generating “etcd/ca” certificate and key

[certs] Generating “etcd/server” certificate and key

[certs] etcd/server serving cert is signed for DNS names [host localhost] and IPs [192.168.50.58 127.0.0.1 ::1]

[certs] Generating “etcd/peer” certificate and key

[certs] etcd/peer serving cert is signed for DNS names [host localhost] and IPs [192.168.50.58 127.0.0.1 ::1]

[certs] Generating “etcd/healthcheck-client” certificate and key

[certs] Generating “apiserver-etcd-client” certificate and key

[certs] Generating “sa” key and public key

[kubeconfig] Using kubeconfig folder “/etc/kubernetes”

[kubeconfig] Writing “admin.conf” kubeconfig file

[kubeconfig] Writing “kubelet.conf” kubeconfig file

[kubeconfig] Writing “controller-manager.conf” kubeconfig file

[kubeconfig] Writing “scheduler.conf” kubeconfig file

[kubelet-start] Writing kubelet environment file with flags to file “/var/lib/kubelet/kubeadm-flags.env”

[kubelet-start] Writing kubelet configuration to file “/var/lib/kubelet/config.yaml”

[kubelet-start] Starting the kubelet

[control-plane] Using manifest folder “/etc/kubernetes/manifests”

[control-plane] Creating static Pod manifest for “kube-apiserver”

[control-plane] Creating static Pod manifest for “kube-controller-manager”

[control-plane] Creating static Pod manifest for “kube-scheduler”

[etcd] Creating static Pod manifest for local etcd in “/etc/kubernetes/manifests”

[wait-control-plane] Waiting for the kubelet to boot up the control plane as static Pods from directory “/etc/kubernetes/manifests”. This can take up to 4m0s

[apiclient] All control plane components are healthy after 13.004870 seconds

[upload-config] Storing the configuration used in ConfigMap “kubeadm-config” in the “kube-system” Namespace

[kubelet] Creating a ConfigMap “kubelet-config-1.19” in namespace kube-system with the configuration for the kubelets in the cluster

[upload-certs] Skipping phase. Please see –upload-certs

[mark-control-plane] Marking the node host as control-plane by adding the label “node-role.kubernetes.io/master=””

[mark-control-plane] Marking the node host as control-plane by adding the taints [node-role.kubernetes.io/master:NoSchedule]

[bootstrap-token] Using token: bf6w4x.t6l461giuzqazuy2

[bootstrap-token] Configuring bootstrap tokens, cluster-info ConfigMap, RBAC Roles

[bootstrap-token] configured RBAC rules to allow Node Bootstrap tokens to get nodes

[bootstrap-token] configured RBAC rules to allow Node Bootstrap tokens to post CSRs in order for nodes to get long term certificate credentials

[bootstrap-token] configured RBAC rules to allow the csrapprover controller automatically approve CSRs from a Node Bootstrap Token

[bootstrap-token] configured RBAC rules to allow certificate rotation for all node client certificates in the cluster

[bootstrap-token] Creating the “cluster-info” ConfigMap in the “kube-public” namespace

[kubelet-finalize] Updating “/etc/kubernetes/kubelet.conf” to point to a rotatable kubelet client certificate and key

[addons] Applied essential addon: CoreDNS

[addons] Applied essential addon: kube-proxy

Your Kubernetes control-plane has initialized successfully!

 

برای استفاده از cluster (دسته) ابتدا به اجازه و پیکربندی کاربر برای اجرای kubectl ، نیاز دارید:

 

root@host:~# mkdir -p $HOME/.kube

root@host:~# cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

root@host:~# chown $(id -u):$(id -g) $HOME/.kube/config

 

الان قادر هستید که شبکه pod را به دسته گسترش دهید:

 

root@host:~# kubectl apply -f [podnetwork].yaml” with one of the options listed at: https://kubernetes.io/docs/concepts/cluster-administration/addons/

 

پیکربندی Kubectl

 

برای پیکربندی kubeclt باید دستورات زیر را وارد کنید:

 

root@host:~# kubectl cluster-info

Kubernetes master is running at https://master:6443

KubeDNS is running at https://master:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

To further debug and diagnose cluster problems, we use the ‘kubectl cluster-info dump command.

root@host:~#

 

نصب calico

 

افزونه calico یک پلاگین شبکه مبتنی بر میزبان برای کانتینرهاست که ماشین های مجازی برای اهداف امنیتی ، از آن استفاده میکنند. با استفاده از دستورات زیر می توانید آن را نصب کنید:

 

root@host:~# kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

configmap/calico-config created

customresourcedefinition.apiextensions.k8s.io/bgpconfigurations.crd.projectcalico.org created

customresourcedefinition.apiextensions.k8s.io/bgppeers.crd.projectcalico.org created

customresourcedefinition.apiextensions.k8s.io/blockaffinities.crd.projectcalico.org created

customresourcedefinition.apiextensions.k8s.io/clusterinformations.crd.projectcalico.org created

customresourcedefinition.apiextensions.k8s.io/felixconfigurations.crd.projectcalico.org created

customresourcedefinition.apiextensions.k8s.io/globalnetworkpolicies.crd.projectcalico.org created

customresourcedefinition.apiextensions.k8s.io/globalnetworksets.crd.projectcalico.org created

customresourcedefinition.apiextensions.k8s.io/hostendpoints.crd.projectcalico.org created

customresourcedefinition.apiextensions.k8s.io/ipamblocks.crd.projectcalico.org created

customresourcedefinition.apiextensions.k8s.io/ipamconfigs.crd.projectcalico.org created

customresourcedefinition.apiextensions.k8s.io/ipamhandles.crd.projectcalico.org created

customresourcedefinition.apiextensions.k8s.io/ippools.crd.projectcalico.org created

customresourcedefinition.apiextensions.k8s.io/kubecontrollersconfigurations.crd.projectcalico.org created

customresourcedefinition.apiextensions.k8s.io/networkpolicies.crd.projectcalico.org created

customresourcedefinition.apiextensions.k8s.io/networksets.crd.projectcalico.org created

clusterrole.rbac.authorization.k8s.io/calico-kube-controllers created

clusterrolebinding.rbac.authorization.k8s.io/calico-kube-controllers created

clusterrole.rbac.authorization.k8s.io/calico-node created

clusterrolebinding.rbac.authorization.k8s.io/calico-node created

daemonset.apps/calico-node created

serviceaccount/calico-node created

deployment.apps/calico-kube-controllers created

serviceaccount/calico-kube-controllers created

root@host:~#

 

تایید pod های درحال اجرا

 

دستور زیر به شما اجازه میدهد که وضعیت کارکرد pods را بررسی کنید:

 

root@host:~# watch kubectl get pods –all-namespaces

NAMESPACE NAME READY STATUS RESTARTS AGE

kube-system calico-kube-controllers-7d569d95-wfzjp 1/1 Running 0 2m52s

kube-system calico-node-jd5l6 1/1 Running 0 2m52s

kube-system coredns-f9fd979d6-hb4bt 1/1 Running 0 7m43s

kube-system coredns-f9fd979d6-tpbx9 1/1 Running 0 7m43s

kube-system etcd-host 1/1 Running 0 7m58s

kube-system kube-apiserver-host 1/1 Running 0 7m58s

kube-system kube-controller-manager-host 1/1 Running 0 7m58s

kube-system kube-proxy-gvd5x 1/1 Running 0 7m43s

kube-system kube-scheduler-host 1/1 Running 0 7m58s

root@host:~#

 

تایید پیکربندی

 

آخرین بررسی ، تایید وضعیت، آماده بودن و در دسترس بودن Master server است:

 

root @ host: ~ # kubectl get nodes -o wide

NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME

host Ready master 46m v1.19.3 192.168.50.58 Ubuntu 18.04.5 LTS 5.4.0-52-generic docker: //19.3.13

root @ host: ~ #

 

ایجاد Workers Nodes

 

بعد از تنظیم کردن Master ، باید با دستورات زیر Worker nodes را به دسته اضافه کنید که بتواند کنترل و بارگیری شود.

 

افزودن Worker 1 :

 

root @ host: ~ # kubectl get nodes -o wide

NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME

host Ready master 46m v1.19.3 192.168.50.58 Ubuntu 18.04.5 LTS 5.4.0-52-generic docker: //19.3.13

root @ host: ~ #

افزودن worker 2 :

 

root@host-node2:~# kubeadm join master:6443 –token bf6w4x.t6l461giuzqazuy2 \

> –discovery-token-ca-cert-hash sha256:8d0b3721ad93a24bb0bb518a15ea657d8b9b0876a76c353c445371692b7d064e

[preflight] Running pre-flight checks

[preflight] Reading configuration from the cluster…

[preflight] FYI: You can look at this config file with ‘kubectl -n kube-system get cm kubeadm-config -oyaml’

[kubelet-start] Writing kubelet configuration to file “/var/lib/kubelet/config.yaml”

[kubelet-start] Writing kubelet environment file with flags to file “/var/lib/kubelet/kubeadm-flags.env”

[kubelet-start] Starting the kubelet

[kubelet-start] Waiting for the kubelet to perform the TLS Bootstrap…

This node has joined the cluster:

* Certificate signing request was sent to apiserver, and a response was received.

* The Kubelet was informed of the new secure connection details.

Run ‘kubectl get nodes’ on the control-plane to see this node join the cluster.

root@host-node2:~#

 

تایید عضو های دسته

 

اکنون باید با دستور زیر در Server master ، بررسی کنید که هر دو Worker 1 , 2 به دسته اضافه شده اند یا خیر:

 

root@host:~# kubectl get nodes

NAME STATUS ROLES AGE VERSION

host Ready master 55m v1.19.3

host-worker-1 Ready 4m48s v1.19.3

host-worker-2 Ready 3m5s v1.19.3

root@host:~#

 

اضافه کردن برنامه

 

برای گسترش برنامه به دسته، باید کارایی آن چک شود و شروع به تست برنامه کنید:

 

root@host:~# kubectl apply -f https://k8s.io/examples/pods/commands.yaml

pod / command-demo created

root@host:~#

 

وضعیت تایید POD

 

با دستورات زیر میتوانید وضعیت pod را ببینید:

 

root@host:~# kubectl get pods

NAME READY STATUS RESTARTS AGE

command-demo 0/1 Completed 0 30s

root@host:~#

 

این مرحله فرایند نصب و پیکربندی کوبرنیتز را تکمیل میکند. برای مطالعه بیشتر در مورد داکر ها و کوبرنیتز ها می توانید به بلاگ های مرتبط زیر نیز مراجعه کنید:

Image و Container در داکر

نصب داکر بر روی ویندوز بدون نیاز به مجازی سازی

بستن