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
- در صورت نیاز دیگر خوشه را حذف کنید
$ kind delete cluster --name kind-cluster
Deleting cluster "kind-cluster" ...
Deleted nodes: ["kind-cluster-control-plane"]
تنظیم یک خوشه Kubernetes با 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
- سعی کنید با استفاده از مرورگر دسترسی پیدا کنید:
- هنگامی که دیگر مورد نیاز نیست ، خوشه را حذف کنید:
$ 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
سرویس 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 برای استقرار مبتنی بر ابر. هر روش بسته به مورد استفاده شما مزایای خاص خود را دارد.
با ما همراه باشید!
منابع: