برنامه نویسی

با استفاده از Kubeadm، یک خوشه Kubernetes چند گره در ماشین های مجازی گوگل ابری بسازید، از ابتدا!

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

طعم لینوکس خود را انتخاب کنید، توصیه می شود Ubuntu 22.04 (Jammy) (این روی جعبه های توسعه دهنده محلی و در ماشین های مجازی Cloud Compute با Jammy کار می کند)

در Google Cloud Web Console، پروژه مورد نظر خود را که صورتحساب آن فعال است را انتخاب کنید و ابزار cli خود (Google Cloud CLI) را راه اندازی کنید و یک VPC، زیرشبکه و فایروال ایجاد کنید تا امکان ترافیک فراهم شود.

(نام منابع را در پرانتز بدون پرانتز جایگزین کنید):
یک شبکه ابر خصوصی مجازی ایجاد کنید
gcloud compute networks create [vpc name] --subnet-mode custom
ایجاد یک زیر شبکه با یک محدوده خاص (10.0.96.0/24)
gcloud compute networks subnets create [subnet name] --network [vpc name] --range 10.0.96.0/24
قانون فایروال را ایجاد کنید که به ارتباطات داخلی در تمام پروتکل ها اجازه می دهد (10.0.96.0/24، 10.0.92.0/22)
gcloud compute firewall-rules create [internal network name] --allow tcp,udp,icmp --network [vpc name] --source-ranges 110.0.96.0/24, 10.0.92.0/22
یک قانون فایروال ایجاد کنید که به SSH، ICMP و HTTPS خارجی اجازه دهد:
gcloud compute firewall-rules create [external network name] --allow tcp,icmp --network [vpc name] --source-ranges 0.0.0.0/0
قوانین فایروال را در شبکه VPC فهرست کنید:
gcloud compute firewall-rules list --filter="network:[vpc name]"

گره های تامین:
3، 5 یا 7 نمونه محاسباتی ایجاد کنید که به ترتیب میزبان پراکسی Kubernetes، صفحه کنترل و گره های کارگر باشند (اگر در حال ایجاد 5 گره یا بیشتر هستید، یک پروکسی توصیه می شود):

گره هواپیمای پروکسی (اختیاری):
gcloud compute instances create proxynode --async --boot-disk-size 50GB --can-ip-forward --image-family ubuntu-2204-lts --image-project ubuntu-os-cloud --machine-type n2-standard-2 --private-network-ip 10.0.96.10 --scopes compute-rw,storage-ro,service-management,service-control,logging-write,monitoring --subnet kubevms-subnet --tags kubevms-node,proxy

گره هواپیمای کنترل اصلی:
gcloud compute instances create masternode --async --boot-disk-size 200GB --can-ip-forward --image-family ubuntu-2204-lts --image-project ubuntu-os-cloud --machine-type n2-standard-2 --private-network-ip 10.0.96.11 --scopes compute-rw,storage-ro,service-management,service-control,logging-write,monitoring --subnet butler-subnet --tags vms-node,controller

گره های کارگر: (10.0.96.21+ برای سایر گره های کارگر)
gcloud compute instances create workernode1 --async --boot-disk-size 100GB --can-ip-forward --image-family ubuntu-2204-lts --image-project ubuntu-os-cloud --machine-type n2-standard-2 --private-network-ip 10.0.96.20 --scopes compute-rw,storage-ro,service-management,service-control,logging-write,monitoring --subnet butler-subnet --tags vms-node,worker

آدرس IP داخلی و محدوده Pod CIDR را برای هر گره کارگر چاپ کنید
gcloud compute instances describe workernode1 --format 'value[separator=" "](networkInterfaces[0].networkIP,metadata.items[0].value)'

نمونه های محاسباتی را در منطقه محاسباتی پیش فرض خود فهرست کنید:
gcloud compute instances list --filter="tags.items=kubeadm-cluster"

SSH را در Google Cloud VM Instance آزمایش کنید
gcloud compute ssh [compute instance name]

این نصب ها را روی همه گره ها اجرا کنید
آ. sudo -i
ب apt-get update && apt-get upgrade -y
ج apt install curl apt-transport-https vim git wget gnupg2 software-properties-common apt-transport-https ca-certificates uidmap lsb-release -y
د swapoff -a

نصب و پیکربندی پیش نیازهای زمان اجرای کانتینر روی همه گره ها
بررسی کنید که ماژول br_netfilter با اجرا بارگذاری شده است
lsmod | grep br_netfilter
برای اینکه iptable های یک گره لینوکس به درستی ترافیک پل شده را مشاهده کنند، آن را تأیید کنید net.bridge.bridge-nf-call-iptables در sysctl شما روی 1 تنظیم شده است.

cat <
overlay
br_netfilter
EOF

sudo modprobe overlay
sudo modprobe br_netfilter

پارامترهای sysctl که در راه‌اندازی لازم است، پارامترها در طول راه‌اندازی مجدد باقی می‌مانند
cat <
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
EOF

پارامترهای sysctl را بدون راه اندازی مجدد اعمال کنید
sudo sysctl --system

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

آ. mkdir -p /etc/apt/keyrings
ب curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
ج echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
د apt-get update
ه. apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

پیکربندی درایور CGROUP برای کانتینر در همه گره ها (ما از SystemD پیشرفته تری که با اوبونتو 2204 ارائه می شود استفاده خواهیم کرد)
آ. stat -fc %T /sys/fs/cgroup/ (بررسی کنید که آیا از cgroupV2 پشتیبانی شده استفاده می کنید)
ب sudo containerd config default | sudo tee /etc/containerd/config.toml (مطمئن شوید که config.toml با پیش فرض وجود دارد)
ج SystemDGroup = true را برای استفاده از درایور CGroup در config.toml تنظیم کنید [plugins.”io.containerd.grpc.v1.cri”.containerd.runtimes.runc]…
[plugins.”io.containerd.grpc.v1.cri”.containerd.runtimes.runc.options]SystemdCgroup = درست است
د sudo systemctl restart containerd (Reset ContainerD)

KUBEADM را روی همه گره ها نصب کنید

دانلود کلید امضای عمومی Google Cloud:
آ. sudo curl -fsSLo /etc/apt/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg

مخزن Kubernetes apt را اضافه کنید:
ب echo "deb [signed-by=/etc/apt/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
ج sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl

درایور CGROUP را برای MASTER NODE پیکربندی کنید (اگر از سیستم عامل پشتیبانی شده برای SystemD استفاده می کنید، بخش را به kubeadm-config.yaml اضافه کنید)

    apiVersion: kubeadm.k8s.io/v1beta3
    kind: ClusterConfiguration
    kubernetesVersion: 1.28.0
    controlPlaneEndpoint: "masternode:6443"
    networking:
      podSubnet: 10.200.0.0/16

    ---
    apiVersion: kubelet.config.k8s.io/v1beta1
    kind: KubeletConfiguration
    cgroupDriver: systemd
وارد حالت تمام صفحه شوید

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

نام میزبان را برای گره اصلی پیکربندی کنید
باز کردن فایل: nano /ect/hosts
اضافه کردن IP Static Master Node و Hostname ترجیحی (10.0.96.11 masternode)

KUBEADM را در MASTER اولیه کنید
kubeadm init --config=kubeadm-config.yaml --upload-certs | tee kubeadm-init.out

اگر هنوز ROOT هستید از ROOT خارج شوید

برای اینکه kubectl برای کاربر غیر روت شما کار کند، این دستورات را اجرا کنید، که بخشی از خروجی init kubeadm نیز هستند:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

یک رابط شبکه POD را روی Master نصب کنید
اپراتور Tigera Calico و تعاریف منابع سفارشی را دانلود و نصب کنید.
kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.24.5/manifests/tigera-operator.yaml

با ایجاد منبع سفارشی لازم، Calico را دانلود و نصب کنید.
قبل از نصب به یاد داشته باشید که CALICO_IPV4POOL_CIDR را به POD_CIDR (10.200.0.0/16) تغییر دهید.
kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.24.5/manifests/custom-resources.yaml

برای کنترل هواپیما به گره های کارگر بپیوندید
دستور زیر را در داخل هر گره کارگر با توکنی که از cli دریافت کردید، هنگام تنظیم اولیه kubeadm در Master Node اجرا کنید:
kubeadm join masternode:6443 --token n0smf1.ixdasx8uy109cuf8 --discovery-token-ca-cert-hash sha256:f6bce2764268ece50e6f9ecb7b933258eac95b525217b8debb647ef41d49a898

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

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

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

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