برنامه نویسی

Kubernetes 105: خوشه Kubernetes را ایجاد کنید

بیایید دوباره شروع کنیم. اکنون ما برخی از شیوه ها را انجام خواهیم داد.

در این بخش از سری Kubernetes ، ما چگونگی ایجاد یک خوشه Kubernetes را در محیط های مختلف بررسی خواهیم کرد. این که آیا شما Kubernetes را به صورت محلی و یا در ابر اجرا می کنید ، درک چگونگی ایجاد یک خوشه برای استقرار و مدیریت کاربردهای کانتینر شده به طور مؤثر اساسی است.

ما سه روش مختلف برای ایجاد یک خوشه Kubernetes را پوشش خواهیم داد:

  • مهربان (Kubernetes in Docker) – روشی سبک برای اجرای خوشه های Kubernetes به صورت محلی برای آزمایش و توسعه.

  • K3D (K3s در Docker) – توزیع Kubernetes سبک تر ، بهینه سازی شده برای توسعه محلی و گردش کار CI/CD.

  • EKS (سرویس Kubernetes amazon elastic) – یک سرویس Kubernetes مدیریت شده توسط AWS برای اجرای بارهای کاری Kubernetes در ابر ارائه شده است.

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

تنظیم یک خوشه Kubernetes با نوع

آرم مهربان

نوع (Kubernetes in Docker) یکی از ساده ترین راه ها برای چرخش یک خوشه Kubernetes برای توسعه و آزمایش محلی است. این خوشه های Kubernetes را درون ظروف Docker اجرا می کند و به طور گسترده برای CI/CD و گردش کار توسعه استفاده می شود.

پیش نیازهای

خوشه ای با نوع ایجاد کنید

  • یک خوشه مهربان جدید ایجاد کنید:
$  kind create cluster --name kind-cluster

Creating cluster "kind-cluster" ...
 ✓ Ensuring node image (kindest/node:v1.31.0) 🖼
 ✓ Preparing nodes 📦
 ✓ Writing configuration 📜
 ✓ Starting control-plane 🕹
 ✓ Installing CNI 🔌
 ✓ Installing StorageClass 💾
Set kubectl context to "kind-kind-cluster"
You can now use your cluster with:

kubectl cluster-info --context kind-kind-cluster

Thanks for using kind! 😊
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

$   kubectl cluster-info --context kind-kind-cluster

Kubernetes control plane is running at https://127.0.0.1:43417
CoreDNS is running at https://127.0.0.1:43417/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

$ kubectl get nodes

NAME                         STATUS   ROLES           AGE   VERSION
kind-cluster-control-plane   Ready    control-plane   75s   v1.31.0
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

استقرار ساده ایجاد کنید

  • از kubectl برای تعریف و شروع استقرار دستور استقرار ایجاد کنید:
$  kubectl create deployment nginx --image=nginx

deployment.apps/nginx created
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

  • وضعیت استقرار را با استفاده از kubectl get deployment دستور:
$ kubectl get deployment

NAME    READY   UP-TO-DATE   AVAILABLE   AGE
nginx   0/1     1            0           29s
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

$ kubectl expose deployment nginx --port=80 --type=LoadBalancer

service/nginx exposed
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

  • وضعیت POD را تأیید کنید و سپس سعی کنید با استفاده از مرورگر خود به NGINX دسترسی پیدا کنید:
$ kubectl get pods

NAME                     READY   STATUS    RESTARTS   AGE
nginx-676b6c5bbc-wd87x   1/1     Running   0          12m
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

دسترسی به nginx

  • در صورت نیاز دیگر خوشه را حذف کنید
$ kind delete cluster --name kind-cluster

Deleting cluster "kind-cluster" ...
Deleted nodes: ["kind-cluster-control-plane"]
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

تنظیم یک خوشه Kubernetes با K3D

K3d به زودی

K3D ابزاری است که به شما امکان می دهد خوشه های سبک وزن Kubernetes را با استفاده از K3s در داخل Docker اجرا کنید. این یک انتخاب عالی برای توسعه سریع و محلی Kubernetes است.

پیش نیازهای

با K3D یک خوشه ایجاد کنید

  • یک خوشه K3D جدید ایجاد کنید:
$ k3d cluster create my-k3d-cluster

INFO[0000] Prep: Network
INFO[0000] Created network 'k3d-my-k3d-cluster'
INFO[0000] Created image volume k3d-my-k3d-cluster-images
INFO[0000] Starting new tools node...
INFO[0000] Starting node 'k3d-my-k3d-cluster-tools'
INFO[0001] Creating node 'k3d-my-k3d-cluster-server-0'
INFO[0001] Creating LoadBalancer 'k3d-my-k3d-cluster-serverlb'
INFO[0001] Using the k3d-tools node to gather environment information
INFO[0001] HostIP: using network gateway 172.20.0.1 address
INFO[0001] Starting cluster 'my-k3d-cluster'
INFO[0001] Starting servers...
INFO[0001] Starting node 'k3d-my-k3d-cluster-server-0'
INFO[0008] All agents already running.
INFO[0008] Starting helpers...
INFO[0008] Starting node 'k3d-my-k3d-cluster-serverlb'
INFO[0016] Injecting records for hostAliases (incl. host.k3d.internal) and for 2 network members into CoreDNS configma
p...
INFO[0018] Cluster 'my-k3d-cluster' created successfully!
INFO[0018] You can now use it like this:
kubectl cluster-info
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

  • وضعیت خوشه را بررسی کنید:
$ kubectl cluster-info

Kubernetes control plane is running at https://0.0.0.0:46503
CoreDNS is running at https://0.0.0.0:46503/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
Metrics-server is running at https://0.0.0.0:46503/api/v1/namespaces/kube-system/services/https:metrics-server:https/p
roxy

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

$ kubectl get nodes

NAME                          STATUS   ROLES                  AGE     VERSION
k3d-my-k3d-cluster-server-0   Ready    control-plane,master   2m33s   v1.30.4+k3s1
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

استقرار ساده ایجاد کنید

  • از kubectl برای تعریف و شروع استقرار دستور استقرار ایجاد کنید:
$ kubectl create deployment httpd --image=httpd
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

  • وضعیت استقرار را با استفاده از kubectl get deployment دستور:
$ kubectl get deployment

NAME    READY   UP-TO-DATE   AVAILABLE   AGE
httpd   0/1     1            0           45s
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

$  kubectl get pods

NAME                     READY   STATUS    RESTARTS   AGE
httpd-56f946b8c8-84ww8   1/1     Running   0          9m11s
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

$ kubectl expose deployment httpd --port=80 --type=LoadBalancer
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

  • سعی کنید با استفاده از مرورگر دسترسی پیدا کنید:

دسترسی به httpd

  • هنگامی که دیگر مورد نیاز نیست ، خوشه را حذف کنید:
$ k3d cluster delete my-k3d-cluster

INFO[0000] Deleting cluster 'my-k3d-cluster'
INFO[0001] Deleting cluster network 'k3d-my-k3d-cluster'
INFO[0001] Deleting 1 attached volumes...
INFO[0001] Removing cluster details from default kubeconfig...
INFO[0001] Removing standalone kubeconfig file (if there is one)...
INFO[0001] Successfully deleted cluster my-k3d-cluster!
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

راه اندازی یک خوشه Kubernetes در AWS EKS

آرم AWS EKS

سرویس Kubernetes آمازون Elastic (EKS) یک سرویس Kubernetes کاملاً مدیریت شده در AWS است که برای اجرای بارهای تولیدی طراحی شده است.

پیش نیازهای

یک خوشه در EKS ایجاد کنید

برای ایجاد یک خوشه Kubernetes در AWS ، می توانید از کنسول AWS (داشبورد) یا EKSCTL CLI استفاده کنید. برای این راهنما استفاده خواهیم کرد eksctlبشر

ما یک خوشه EKS را با دو مورد ارائه خواهیم داد t4g.small گره ها در us-east-1 منطقه ، آن را برای اجرای بار کاری Kubernetes آماده می کند.

$ eksctl create cluster  \
--name cluster-1  \
--region us-east-1 \
--node-type t4g.small \
--nodes 2 \
--nodegroup-name node-group-1

2025-02-01 19:52:35 [ℹ]  eksctl version 0.202.0
2025-02-01 19:52:35 [ℹ]  using region us-east-1
2025-02-01 19:52:37 [ℹ]  setting availability zones to [us-east-1c us-east-1f]

...

2025-02-01 20:02:04 [ℹ]  creating addon
2025-02-01 20:02:04 [ℹ]  successfully created addon
2025-02-01 20:02:05 [ℹ]  creating addon
2025-02-01 20:02:06 [ℹ]  successfully created addon
2025-02-01 20:02:07 [ℹ]  creating addon
2025-02-01 20:02:07 [ℹ]  successfully created addon
"us-east-1" region is ready
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

  • دسترسی به کنسول AWS ، به سرویس EKS بروید و می بینید که خوشه با موفقیت ایجاد شده است.

بعد از ایجاد خوشه

kubectl get nodes
NAME                             STATUS   ROLES    AGE   VERSION
ip-192-168-xx-yy.ec2.internal   Ready       17m   v1.30.8-eks-aeac579
ip-192-168-xx-yy.ec2.internal   Ready       17m   v1.30.8-eks-aeac57
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

استقرار ساده ایجاد کنید

  • برای تعریف و شروع استقرار از دستور ایجاد استقرار Kubectl استفاده کنید:
$ kubectl create deployment nginx --image=nginx

deployment.apps/nginx create
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

  • وضعیت استقرار را با استفاده از kubectl get deployment دستور:
$  kubectl get deployment

NAME     READY   UP-TO-DATE   AVAILABLE   AGE
nginx    1/1     1            1           23s
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

$ kubectl get pods

NAME                     READY   STATUS         RESTARTS   AGE
nginx-bf5d5cf98-9dld5    1/1     Running        0          43s
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

$ kubectl expose deployment nginx --type=LoadBalancer --port=80 --name=nginx-service
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

  • سعی کنید با استفاده از مرورگر دسترسی پیدا کنید:

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

  • هنگامی که دیگر مورد نیاز نیست ، خوشه را حذف کنید:
$  eksctl delete cluster --name cluster-1 --region us-east-1

2025-02-01 20:51:59 [ℹ]  deleting EKS cluster "cluster-1"
2025-02-01 20:52:02 [ℹ]  will drain 0 unmanaged nodegroup(s) in cluster "cluster-1"
2025-02-01 20:52:02 [ℹ]  starting parallel draining, max in-flight of 1
2025-02-01 20:52:04 [ℹ]  deleted 0 Fargate profile(s)
2025-02-01 20:52:13 [✔]  kubeconfig has been updated
2025-02-01 20:52:13 [ℹ]  cleaning up AWS load balancers created by Kubernetes objects of Kind Service or Ingress
2025-02-01 20:52:56 [ℹ]
...

2025-02-01 21:02:00 [ℹ]  waiting for CloudFormation stack "eksctl-cluster-1-nodegroup-node-group-1"
2025-02-01 21:02:01 [ℹ]  will delete stack "eksctl-cluster-1-cluster"
2025-02-01 21:02:04 [✔]  all cluster resources were deleted
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

پایان

راه اندازی یک خوشه Kubernetes اولین قدم در اجرای برنامه های کانتینر شده در مقیاس است. در این راهنما ، ما سه روش مختلف برای ایجاد یک خوشه Kubernetes و انجام یک استقرار ساده را مورد بررسی قرار داده ایم: استفاده از نوع و K3D برای توسعه محلی و استفاده از EKS برای استقرار مبتنی بر ابر. هر روش بسته به مورد استفاده شما مزایای خاص خود را دارد.

با ما همراه باشید!

منابع:

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا