لینوکس

نحوه تهیه نسخه پشتیبان و بازیابی یک خوشه Kubernetes در vpsgol با استفاده از Velero

مقدمه
Velero یک ابزار پشتیبان مناسب برای خوشه های Kubernetes است که موارد Kubernetes را برای ذخیره سازی مورد به مورد، فشرده سازی و پشتیبان گیری می کند. همچنین با استفاده از ویژگی های اسنپ شات ذخیره سازی واحد ارائه دهنده cloud ، عکس هایی از والیوم های مداوم خوشه شما می گیرد و می تواند موارد و والیوم های ماندگار خوشه را به حالت قبلی بازگرداند.
افزونه vpsgol Velero به شما امکان می دهد تا از حافظه بلوک vpsgol استفاده کنید تا از والیوم های ماندگار اسنپ شات بگیرید و فضایی به شما میدهد تا از موارد Kubernetes بک آپ تهیه کنید. در هنگام اجرای یک خوشه Kubernetes در vpsgol ، این به شما امکان می دهد تا به سرعت از وضعیت خوشه خود نسخه پشتیبان تهیه کرده و در صورت بروز مشکل بازیابی کنید.
در این آموزش ابزار خط فرمان velero را روی یک دستگاه محلی تنظیم و پیکربندی می کنیم و مؤلفه سرور مجازی را در خوشه Kubernetes خود مستقر می کنیم. سپس یک نمونه از برنامه Nginx را استفاده می کنیم که از یک والیوم پایدار برای ورود به سیستم استفاده می کند و سپس یک سناریوی بازیابی مشکل را شبیه سازی می کند.
پیش نیازها
قبل از شروع این آموزش ، موارد زیر را باید در اختیار داشته باشید:
در رایانه محلی خود:
⦁ ابزار خط فرمان kubectl ، پیکربندی شده باید تا به خوشه شما متصل شود. می توانید اطلاعات بیشتری در مورد نصب و پیکربندی ر در مطالب Kubernetes بخوانید.
⦁ ابزار خط فرمان gitکه می توانید نحوه نصب git را در شروع با Git بیاموزید.
در حساب vpsgol خود:
⦁ یک خوشه vpsgol Kubernetes یا یک خوشه Kubernetes (نسخه 1.7.5 یا بالاتر) در دراپلت های vpsgol.
⦁ سرور DNS که در داخل خوشه شما قرار دارد. اگر از vpsgol Kubernetes استفاده می کنید ، این به طور پیش فرض اجرا می شود. برای کسب اطلاعات بیشتر در مورد پیکربندی یک سرویس DNS Kubernetes ، از ⦁ Customizing DNS Service در مطالب رسمی Kuberentes کمک بگیرید.
⦁ فضای vpsgol که موارد پشتیبان گرفته شده Kubernetes شما را ذخیره می کند. برای یادگیری نحوه ایجاد یک فضا ، از  ⦁ the Spaces product documentation کمک بگیرید.
⦁ یک جفت کلید دسترسی برای vpsgol Space. برای یادگیری نحوه ایجاد مجموعه ای از کلیدهای دستیابی ، از ⦁ How to Manage Administrative Access to Spaces کمک بگیرید.
⦁ یک نشانه دسترسی شخصی برای استفاده با vpsgol API. برای یادگیری نحوه ایجاد یک نشانه دسترسی شخصی ، از ⦁ How to Manage Administrative Access to Spaces کمک بگیرید. اطمینان حاصل کنید که توکن ایجاد شده یا استفاده شده از مجوزهای خواندن / نوشتن و یا اسنپ شات استفاده نمیکند.
پس از تنظیم همه این موارد ، آماده شروع کار با این راهنما هستید.

مرحله 1 – نصب مشتری Velero
ابزار پشتیبان گیری Velero شامل یک مشتری نصب شده بر روی رایانه محلی شما و یک سرور مجازی است که در خوشه Kubernetes شما اجرا می شود. برای شروع ، مشتری محلی Velero را نصب خواهیم کرد.
در مرورگر وب خود ، به صفحه منتشر شده repo Velero GitHub بروید ، نسخه مربوط به سیستم عامل و معماری سیستم خود را پیدا کنید و آدرس پیوند را کپی کنید. برای اهداف این راهنما ، ما از یک سرور مجازی اوبونتو 18.04 در یک پردازنده x86-64 (یا AMD64) به عنوان دستگاه محلی خود و نسخه Velero v1.2.0 استفاده خواهیم کرد.
توجه: برای دنبال کردن این راهنما ، باید v1.2.0 از مشتری Velero را دانلود و نصب کنید.
سپس ، از خط فرمان روی رایانه محلی خود ، به دایرکتوری موقت / tmp بروید و cd را در آن قرار دهید:
$cd / tmp
از wget و پیوندی که قبلاً کپی کرده اید برای دانلود تاربال نسخه استفاده کنید:
$wget https: // link_copied_from_release_page
پس از اتمام دانلود ، تاربال را با استفاده از tar اکسترکت کنید (توجه داشته باشید که نام فایل بسته به نسخه منتشر شده و سیستم عامل شما ممکن است متفاوت باشد):
$tar -xvzf velero-v1.2.0-linux-amd64.tar.gz
دیرکتوری / tmp اکنون باید دیرکتوری اکسترکت شده velero-v1.2.0-linux-amd64 و همچنین تاربلی که اخیراً دانلود کرده اید ، را شامل شود.
تأیید کنید که می توانید مشتری velero را با اجرای باینری راه اندازی کنید:
$./velero-v1.2.0-linux-amd64/velero help
شما باید خروجی راهنمایی زیر را مشاهده کنید:
Output
Velero is a tool for managing disaster recovery, specifically for Kubernetes
cluster resources. It provides a simple, configurable, and operationally robust
way to back up your application state and associated data.

If you’re familiar with kubectl, Velero supports a similar model, allowing you to
execute commands such as ‘velero get backup’ and ‘velero create schedule’. The same
operations can also be performed as ‘velero backup get’ and ‘velero schedule create’.

Usage:
velero [command]

Available Commands:
backup Work with backups
backup-location Work with backup storage locations
bug Report a Velero bug
client Velero client related commands
completion Output shell completion code for the specified shell (bash or zsh)
create Create velero resources
delete Delete velero resources
describe Describe velero resources
get Get velero resources
help Help about any command
install Install Velero
plugin Work with plugins
restic Work with restic
restore Work with restores
schedule Work with schedules
snapshot-location Work with snapshot locations
version Print the velero version and associated image
. . .

در این مرحله باید velero  قابل اجرا را از دیرکتوری موقت tmp  خارج کنید و آن را به PATH اضافه کنید. برای افزودن آن به PATH روی یک سیستم اوبونتو کافیست آن را در /usr/local/bin کپی کنید:
$sudo mv velero-v1.2.0-linux-amd64/velero /usr/local/bin/velero
مرحله 2 – پیکربندی اطلاعات سری
قبل از تنظیم مؤلفه سرور مجازی Velero ، باید کلیدهای vpsgol Spaces و نشانه های API خود را آماده کنید. مجدداً با استفاده از دستور cd به دیرکتوری موقت / tmp بروید:
$ cd / tmp
اکنون یک نسخه از افزونه Velero را برای vpsgol دانلود خواهیم کرد. به صفحه انتشار نسخه های Github افزونه بروید و پیوندهایی که به.tar.gz ختم میشوند را کپی کنید.
از wget و پیوندی که قبلاً کپی کرده اید برای دانلود تاربال نسخه استفاده کنید:
$wget https: // link_copied_from_release_page
پس از اتمام دانلود ، تاربل را با استفاده از tar اکسترکت کنید (دوباره توجه داشته باشید که نام فایل بسته به نسخه منتشر شده ممکن است متفاوت باشد):
$tar -xvzf v1.0.0.tar.gz
دیرکتوری / tmp اکنون باید پوشه velero-plugin-1.0.0 اکسترکت شده و همچنین تاربل که اخیراً دانلود کرده اید ، را شامل شود.
سپس cd را در دایرکتوری velero-plugin-1.0.0 وارد میکنیم:
$ cd velero-plugin-1.0.0
اکنون می توانیم کلیدهای دسترسی را برای vpsgol Space و نشانه API برای استفاده به عنوان Kubernetes Secret ذخیره کنیم. ابتدا با استفاده از ویرایشگر مورد علاقه خود ، فایل examples/cloud-credentials را باز کنید.
⦁ $ nano examples/cloud-credential
پرونده به شرح زیر خواهد بود:
/tmp/velero-plugin-1.0.0/examples/cloud-credentials
[default]
aws_access_key_id=
aws_secret_access_key=

برای استفاده از کلیدهای vpsgol Spaces ، “متغیرهای” و را ویرایش کنید. حتماً کاراکترهای < و > را حذف کنید.
مرحله بعدی ویرایش فایل 01-velero-secret.patch.yaml است به گونه ای که شامل نشانه API vpsgol شما باشد. پرونده را در ویرایشگر مورد علاقه خود باز کنید:

⦁ $ nano examples/01-velero-secret.patch.yaml

می بایست شبیه به این باشه:

apiVersion: v1
kind: Secret
stringData:
vpsgol_token:
type: Opaque

برای استفاده از ، کل مکان نگهدار را تغییر دهید. خط باید چیزی شبیه به vpsgol_token: 18a0d730c0e0…. باشد: باز هم ، حتماً کاراکترهای < و > را حذف کنید.
مرحله 3 – نصب سرور مجازی Velero
نصب Velero شامل تعدادی از موارد Kubernetes است که همگی برای ایجاد ، برنامه ریزی و مدیریت پشتیبان گیری با هم کار می کنند. velero قابل اجرا که به تازگی دانلود کرده اید می تواند این موارد را برای شما تولید و نصب کند. دستور نصب velero مراحل آماده سازی اولیه را انجام می دهد تا برای خوشه شما پشتیبان تهیه شود. به طور خاص:
⦁ یک نام فضا velero ایجاد میکند.
⦁ حساب سرویس velero را اضافه میکند.
⦁ قوانین کنترل دسترسی مبتنی بر نقش (RBAC) را برای اعطای مجوز به حساب سرویس velero پیکربندی میکند.
⦁ تعریف منابع اختصاصی (CRD) را برای منابع خاص Velero نصب میکند: پشتیبان گیری ، برنامه ریزی، بازیابی ، پیکربندی.
⦁ پلاگین های Velero را برای مدیریت اسنپ شات و فضای ذخیره سازی ثبت میکند.
دستور velero install را با چند گزینه تنظیمات غیر پیش فرض اجرا خواهیم کرد. به طور خاص ، شما نیاز به ویرایش هر یک از تنظیمات زیر در فراخوانی واقعی فرمان برای مطابقت با پیکربندی Spaces دارید:
– backup velero-backup: مقدار velero-backups را تغییر دهید تا با نام فضای vpsgol Space شما مطابقت داشته باشد. به عنوان مثال اگر فضای خود را ” backup-bucket ” نامیدید ، این گزینه به این شکل است: –bucket backup-bucket
–backup-location-config s3Url=https://nyc3.vpsgolspaces.com,region=nyc3 : URL و منطقه را تغییر دهید تا مطابق با تنظیمات فضای شما باشد. به طور خاص ، هر دو بخش nyc3 را ویرایش کنید تا با منطقه ای که فضای شما در آن میزبان است مطابقت داشته باشد. به عنوان مثال ، اگر فضای شما در منطقه fra1 میزبانی شود ، این خط به این صورت است: –backup-location-config s3Url=https://fra1.vpsgolspaces.com,region=fra1 region=fra1.
شناسه های منطقه عبارتند از: nyc3 ، sfo2 ، sgp1 و fra1.
پس از آماده شدن با تنظیمات مناسب مکان bucket و backup ، وقت آن است که Velero را نصب کنید. دستور زیر را اجرا کنید ، و در صورت لزوم مقادیر خود را جایگزین کنید:

$velero install \
$  –provider velero.io/aws \
$ –backup velero backup \
$ –plugins velero/velero-plugin-for-aws:v1.0.0,vpsgol/velero-plugin:v1.0.0 \
$ –backup-location-config s3Url=https://nyc3.vpsgolspaces.com,region=nyc3 \
$ –use-volume-snapshots=false \
$ –secret-file=./examples/cloud-credentials
باید خروجی زیر را مشاهده کنید:
Output
CustomResourceDefinition/backups.velero.io: attempting to create resource
CustomResourceDefinition/backups.velero.io: created
CustomResourceDefinition/backupstoragelocations.velero.io: attempting to create resource
CustomResourceDefinition/backupstoragelocations.velero.io: created
CustomResourceDefinition/deletebackuprequests.velero.io: attempting to create resource
CustomResourceDefinition/deletebackuprequests.velero.io: created
CustomResourceDefinition/downloadrequests.velero.io: attempting to create resource
CustomResourceDefinition/downloadrequests.velero.io: created
CustomResourceDefinition/podvolumebackups.velero.io: attempting to create resource
CustomResourceDefinition/podvolumebackups.velero.io: created
CustomResourceDefinition/podvolumerestores.velero.io: attempting to create resource
CustomResourceDefinition/podvolumerestores.velero.io: created
CustomResourceDefinition/resticrepositories.velero.io: attempting to create resource
CustomResourceDefinition/resticrepositories.velero.io: created
CustomResourceDefinition/restores.velero.io: attempting to create resource
CustomResourceDefinition/restores.velero.io: created
CustomResourceDefinition/schedules.velero.io: attempting to create resource
CustomResourceDefinition/schedules.velero.io: created
CustomResourceDefinition/serverstatusrequests.velero.io: attempting to create resource
CustomResourceDefinition/serverstatusrequests.velero.io: created
CustomResourceDefinition/volumesnapshotlocations.velero.io: attempting to create resource
CustomResourceDefinition/volumesnapshotlocations.velero.io: created
Waiting for resources to be ready in cluster…
Namespace/velero: attempting to create resource
Namespace/velero: created
ClusterRoleBinding/velero: attempting to create resource
ClusterRoleBinding/velero: created
ServiceAccount/velero: attempting to create resource
ServiceAccount/velero: created
Secret/cloud-credentials: attempting to create resource
Secret/cloud-credentials: created
BackupStorageLocation/default: attempting to create resource
BackupStorageLocation/default: created
Deployment/velero: attempting to create resource
Deployment/velero: created
Velero is installed! ⛵ Use ‘kubectl logs deployment/velero -n velero’ to view the status.

شما میتوانید به کارگیری ورودی ها با استفاده از دستور kubect از خروجی را مشاهده کنید. پس از آماده سازی به کارگیری، میتوانید به مرحله بعدی بروید که پیکربندی سرور مجازی است. به کارگیری موفق شبیه زیر خواهد بود (با یک تفاوت ستون AGE):
$ kubectl get deployment/velero –namespace velero
Output
NAME READY UP-TO-DATE AVAILABLE AGE
velero 1/1 1 1 2m

دراین نقطه مولفه سرور مجازی Velero  را در خوشه Kubernetes  به عنوان یک صف آرایی نصب کرده اید. همچنین کلیدهای فضا را با Velero  و با استفاده از Kubernetes Secret ثبت نموده اید.

توجه: می توانید kubeconfig را که ابزار خط فرمان velero باید با فلگ –kubeconfig استفاده کند ، مشخص کنید. اگر از این فلگ استفاده نمی کنید ، velero متغیر محیط KUBECONFIG را بررسی کرده و سپس به پیش فرض kubectl  یعنی (~/.kube/config) برمیگردد.

مرحله 4 – پیکربندی اسنپ شات
هنگامی که سرور مجازی Velero را نصب کردیم ، گزینه –use-volume-snapshots = false بخشی از دستور بود. از آنجا که می خواهیم اسنپ شات از دستگاه های ذخیره سازی بلوک موجود در خوشه Kubernetes بگیریم ، باید به Velero بگوییم که از پلاگین صحیح برای ذخیره سازی بلوک vpsgol استفاده کند.
دستور زیر را اجرا کنید تا افزونه فعال شود و آن را به عنوان ارائه دهنده اسنپ شات پیش فرض ثبت کنید:

$velero snapshot-location create default –provider vpsgol.com/velero
خروجی زیر را مشاهده خواهید کرد:
Snapshot volume location “default” configured successfully.

مرحله 5 – اضافه کردن یک نشانه API
در مرحله قبل ، ذخیره بلوک و موارد دخیره را در سرور مجازی Velero ایجاد کردیم. ما افزونه vpsgol / velero: v1.0.0 را با سرور مجازی ثبت کرده ایم و کلیدهای مخفی Spaces را در خوشه نصب کرده ایم.
مرحله آخر افزودن اطلاعات سری cloud-credentials است که قبلاً برای استفاده از نشانه vpsgol API ما ایجاد کرده ایم. بدون این نشانه ، افزونه Snapshot قادر به تأیید اعتبار با API vpsgol نخواهد بود.
ما می توانیم از دستور edit kubectl برای تغییر موضوع آرایش Velero با استفاده از نشانه API استفاده کنیم. با این حال ، ویرایش موضوعات پیچیده YAML با دست می تواند خسته کننده و پر خطا باشد. در عوض ، از دستور patch kubectl استفاده خواهیم کرد زیرا Kubernetes از patch موضوعات پشتیبانی می کند. بیایید نگاهی گذرا به مطالب فایل های پچ مورد نظر خود بیاندازیم.
اولین فایل افزوده examples/01-velero-secret.patch.yaml است که قبلاً ویرایش کرده اید. این برای افزودن نشانه API شما به اطلاعات سری secrets/cloud-credentials طراحی شده است که از قبل حاوی کلیدهای Spaces شما بود. فایل را cat کنید:
$cat examples/01-velero-secret.patch.yaml
باید مانند این باشد (با نشان شما به جای نگهدارنده  placeholder):
examples/01-velero-secret.patch.yaml
. . .

apiVersion: v1
kind: Secret
stringData:
vpsgol_token:
type: Opaque

حال بیایید به فایل پچ Deployment نگاه کنیم:
$cat examples/02-velero-deployment.patch.yaml
باید YAML زیر را ببینید:
examples/02-velero-deployment.patch.yaml
. . .

apiVersion: v1
kind: Deployment
spec:
template:
spec:
containers:
– args:
– server
command:
– /velero
env:
– name: vpsgol_TOKEN
valueFrom:
secretKeyRef:
key: vpsgol_token
name: cloud-credentials
name: velero

این فایل نشان می دهد که ما در حال وصله کردن Deployment’s Pod spec هستیم که به آن velero گفته می شود. از آنجا که این یک پچ است ، دیگر نیازی به مشخص کردن کل خصوصیات یا ابرداده های Kubernetes نیست. در این حالت ، پیاده سازی Velero قبلاً با استفاده از cloud-credentials پیکربندی شده است زیرا دستور نصب velero آن را برای ما ایجاد کرده است. بنابراین ، تمام آنچه که باید این پچ انجام دهد ثبت نام vpsgol_token به عنوان متغیر محیط با Velero Pod است که قبلاً مستقر شده است.
بیایید اولین پچ مخفی را با استفاده از دستور patch kubectl اعمال کنیم:

$kubectl patch secret/cloud-credentials -p “$(cat examples/01-velero-secret.patch.yaml)” –namespace velero
باید خروجی زیر را مشاهده کنید:
secret/cloud-credentials patched

سرانجام ما Deployment را پچ می کنیم. دستور زیر را اجرا کنید:
$kubectl patch deployment/velero -p “$(cat examples/02-velero-deployment.patch.yaml”) –namespace velero
در صورت موفقیت آمیز بودن، خروجی زیر را مشاهده خواهید کرد:
deployment.apps/velero patched

بیایید تأیید کنیم که آرایش پچ شده با استفاده از kubectl get در فضایvelero کار می کند:
$kubectl get deployment/velero –namespace velero
باید خروجی زیر را مشاهده کنید:
NAME READY UP-TO-DATE AVAILABLE AGE
velero 1/1 1 1 12s

در این مرحله Velero در حال اجرا و کاملاً پیکربندی شده است ، و آماده تهیه نسخه پشتیبان و بازیابی موارد خوشه ای Kubernetes و والیوم های پایدار در vpsgol Spaces و Block Storage است.
در بخش بعدی ، ما یک آزمایش سریع انجام خواهیم داد تا اطمینان حاصل کنیم که عملکرد نسخه پشتیبان و بازیابی همانطور که انتظار می رود ، کار می کند.
مرحله ششم – تست تهیه نسخه پشتیبان و بازیابی فرآیند
اکنون که Velero را با موفقیت نصب و پیکربندی کرده ایم ، می توانیم با استفاده از والیوم و سرویس مداوم ، آزمایش Nginx Deployment را ایجاد کنیم. پس از اجرای Deployment ، از پشتیبان گیری استفاده می کنیم و فرآیند را بازیابی می کنیم تا اطمینان حاصل شود که Velero پیکربندی شده و به درستی کار می کند.
اطمینان حاصل کنید که هنوز در دایرکتوری /tmp/velero-plugin-1.0.0 کار می کنید. دایرکتوری examples  حاوی نمونه Nginx به نام nginx-shembull.yaml است.
این فایل را با استفاده از ویرایشگر مورد نظر خود باز کنید:
$nano examples/nginx-example.yaml
متن زیر را باید مشاهده کنید:
Output
. . .

apiVersion: v1
kind: Namespace
metadata:
name: nginx-example
labels:
app: nginx


kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: nginx-logs
namespace: nginx-example
labels:
app: nginx
spec:
storageClassName: do-block-storage
accessModes:
– ReadWriteOnce
resources:
requests:
storage: 5Gi


apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deploy
namespace: nginx-example
labels:
app: nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
volumes:
– name: nginx-logs
persistentVolumeClaim:
claimName: nginx-logs
containers:
– image: nginx:stable
name: nginx
ports:
– containerPort: 80
volumeMounts:
– mountPath: “/var/log/nginx”
name: nginx-logs
readOnly: false


apiVersion: v1
kind: Service
metadata:
labels:
app: nginx
name: nginx-svc
namespace: nginx-example
spec:
ports:
– port: 80
targetPort: 80
selector:
app: nginx
type: LoadBalancer

در این فایل فضاهایی برای موارد زیر مشاهده می کنیم:
⦁ یک نام فضای Nginx به نام nginx-example
⦁ استقرار Nginx متشکل از یک نمونه کپی شده از تصویر کانتینر nginx:stable
⦁ ادعای والیوم مداوم 5Gi (به نام log-nginx) با استفاده از do-block-storage در StorageClass
⦁ یک سرویس LoadBalancer که پورت 80 را در معرض دید قرار می دهد
با استفاده از kubectl apply موارد را ایجاد کنید:
$kubectl apply -f examples/nginx-example.yaml
باید خروجی زیر را مشاهده کنید:
Output
namespace/nginx-example created
persistentvolumeclaim/nginx-logs created
deployment.apps/nginx-deploy created
service/nginx-svc created

بررسی کنید که استقرار موفق باشد:
$kubectl get deployments –namespace=nginx-example
باید برای سرویس my-nginx هم CLUSTER-IP داخلی و هم EXTERNAL-IP را مشاهده کنید:
Output
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
nginx-svc LoadBalancer 10.245.147.61 159.203.48.191 80:30232/TCP 3m1s

به EXTERNAL-IP توجه داشته باشید و آن را به سمت استفاده از مرورگرتان هدایت کنید.
هنگامی که در دسترس قرار گرفت به 1 رسید ، IP خارجی تعادل بار Nginx را با استفاده از kubectl دریافت کنید:

شما باید صفحه خوشامدگویی NGINX زیر را ببینید:

این نشان می دهد که Nginx Deployme شما و خدمات به روز و در حال اجرا هستند.
قبل از شبیه سازی سناریوی فاجعه ما ، ابتدا ورود به دسترسی Nginx (که در یک حجم مداوم متصل به Nginx Pod ذخیره شده) را بررسی کنید:
$kubectl get pods –namespace nginx-example
Output
NAME READY STATUS RESTARTS AGE
nginx-deploy-694c85cdc8-vknsk 1/1 Running 0 4m14s

اکنون ، داخل کانتینر در حال اجرا Nginx وارد شوید تا به یک پوسته در داخل آن برسید:
$kubectl exec -it nginx-deploy-694c85cdc8-vknsk –namespace nginx-example — /bin/bash

به محض ورود به کانتینر Nginx بروید ، ورودهای دسترسی Nginx را cat کنید:

# cat /var/log/nginx/access.log
باید برخی از ورودی های Nginx را مشاهده کنید:
Output
10.244.0.119 – – [03/Jan/2020:04:43:04 +0000] “GET / HTTP/1.1” 200 612 “-” “Mozilla/5.0 (X11; Linux x86_64; rv:72.0) Gecko/20100101 Firefox/72.0” “-”
10.244.0.119 – – [03/Jan/2020:04:43:04 +0000] “GET /favicon.ico HTTP/1.1” 404 153 “-” “Mozilla/5.0 (X11; Linux x86_64; rv:72.0) Gecko/20100101 Firefox/72.0” “-”

این موارد را یادداشت کنید (به ویژه زمانها) ، زیرا ما از آنها برای تأیید موفقیت در روش بازیابی استفاده خواهیم کرد. از pod خارج شوید:
$ exit
اکنون می توانیم از روش پشتیبان گیری برای کپی کردن همه موارد nginx Kubernetes در Spaces استفاده کنیم و یک اسنپ شات از والیوم مداوم که هنگام استقرار Nginx ایجاد کردیم را بگیرید.
$ velero backup create nginx-backup –selector app=nginx
برنامه –selector = nginx به سرور مجازی Velero دستور می دهد تا فقط از موضوعات Kubernetes با انتخابگر لیبل app=nginx پشتیبان تهیه کند.
باید خروجی زیر را مشاهده کنید:
Output
Backup request “nginx-backup” submitted successfully.
Run `velero backup describe nginx-backup` or `velero backup logs nginx-backup` for more details.

اجرای velero backup describe nginx-backup –details باید خروجی زیر را بعد از یک تأخیر کوتاه ارائه دهد:
Output
Name: nginx-backup
Namespace: velero
Labels: velero.io/backup=nginx-backup
velero.io/pv=pvc-6b7f63d7-752b-4537-9bb0-003bed9129ca
velero.io/storage-location=default
Annotations:

Phase: Completed

Namespaces:
Included: *
Excluded:

Resources:
Included: *
Excluded:
Cluster-scoped: auto

Label selector: app=nginx

Storage Location: default

Snapshot PVs: auto

TTL: 720h0m0s

Hooks:

Backup Format Version: 1

Started: 2020-01-02 23:45:30 -0500 EST
Completed: 2020-01-02 23:45:34 -0500 EST

Expiration: 2020-02-01 23:45:30 -0500 EST

Resource List:
apps/v1/Deployment:
– nginx-example/nginx-deploy
apps/v1/ReplicaSet:
– nginx-example/nginx-deploy-694c85cdc8
v1/Endpoints:
– nginx-example/nginx-svc
v1/Namespace:
– nginx-example
v1/PersistentVolume:
– pvc-6b7f63d7-752b-4537-9bb0-003bed9129ca
v1/PersistentVolumeClaim:
– nginx-example/nginx-logs
v1/Pod:
– nginx-example/nginx-deploy-694c85cdc8-vknsk
v1/Service:
– nginx-example/nginx-svc

Persistent Volumes:
pvc-6b7f63d7-752b-4537-9bb0-003bed9129ca:
Snapshot ID: dfe866cc-2de3-11ea-9ec0-0a58ac14e075
Type: ext4
Availability Zone:
IOPS: <N/A>

این خروجی نشان می دهد که پشتیبان گیری nginx-backup با موفقیت انجام شد. لیست منابع هر یک از موضوعات Kubernetes را که در نسخه پشتیبان تهیه شده است نشان می دهد. بخش آخر نشان می دهد که از PersistentVolume نیز با استفاده از اسنپ شات فایل سیستم نسخه پشتیبان تهیه شده است.
برای تأیید از داخل کنترل پنل vpsgol Cloud ، به فضای حاوی فایل های پشتیبان Kubernetes خود بروید.
شما باید یک دایرکتوری جدید با نام nginx-backup را ببینید که حاوی فایل های پشتیبان Velero است.
با استفاده از نوار ناوبری در سمت چپ ، به قسمت تصاویر و سپس اسنپ شات ها بروید. در اسنپ شات ها ، به Volume بروید. شما باید Snapshot مربوط به PVC ذکر شده در خروجی فوق را مشاهده کنید.
اکنون می توانیم فرآیند بازیابی را آزمایش کنیم.
بیایید ابتدا نام فضای nginx-example را حذف کنیم. با این کار همه چیز در نام فضا، از جمله Load Balancer و والیوم مداوم حذف می شود:
$kubectl delete namespace nginx-example
تأیید کنید که دیگر نمی توانید به Nginx در انتهای Load Balancer دسترسی پیدا کنید ، و این که به کارگیری برنامه nginx-example دیگر در حال اجرا نیست:
$kubectl get deployments –namespace=nginx-example
Output
No resources found in nginx-example namespace.

اکنون می توانیم دوباره با استفاده از مشتری velero ، فرآیند بازیابی را انجام دهیم:
$ velero restore create –from-backup nginx-backup
در اینجا ما از create  برای ایجاد مورد Velero Restore از موضوع nginx-backup استفاده می کنیم.
باید خروجی زیر را مشاهده کنید:
Output
$Restore request “nginx-backup-20200102235032” submitted successfully.
$Run `velero restore describe nginx-backup-20200102235032` or `velero restore logs nginx-backup-20200102235032` for more details.
وضعیت اجرای بازیابی شده را بررسی کنید:
$kubectl get deployments –namespace=nginx-example
Output
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-deploy 1/1 1 1 58s
ایجاد والیوم مداوم را بررسی کنید
$kubectl get pvc –namespace=nginx-example
Output
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
nginx-logs Bound pvc-6b7f63d7-752b-4537-9bb0-003bed9129ca 5Gi RWO do-block-storage 75s

بازیابی همچنین LoadBalancer ایجاد کرد. گاهی اوقات سرویس با یک آدرس IP جدید ایجاد می شود. باید مجدداً آدرس EXTERNAL-IP را پیدا کنید:

$kubectl get services –namespace nginx-example
Output
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
nginx-svc LoadBalancer 10.245.15.83 159.203.48.191 80:31217/TCP 97s
برای تأیید به روز رسانی و اجرای Nginx ، یک بار دیگر به IP خارجی سرویس Nginx بروید.
در آخر ، ورودهای مربوط به والیوم پایدار را بازبینی کنید تا تأیید کنید که سابقه ورود پس از بازیابی ، حفظ شده است.
برای این کار ، یک بار دیگر نام Pod را با استفاده از kubectl get دریافت کنید:
$kubectl get pods –namespace nginx-example
Output
NAME READY STATUS RESTARTS AGE
nginx-deploy-694c85cdc8-vknsk 1/1 Running 0 2m20s

سپس به آن exec کنید:
$kubectl exec -it nginx-deploy-694c85cdc8-vknsk –namespace nginx-example — /bin/bash
به محض ورود به کانتینر Nginx، ورودهای دسترسی به Nginx را cat کنید:
$cat /var/log/nginx/access.log
Output
10.244.0.119 – – [03/Jan/2020:04:43:04 +0000] “GET / HTTP/1.1” 200 612 “-” “Mozilla/5.0 (X11; Linux x86_64; rv:72.0) Gecko/20100101 Firefox/72.0” “-”
10.244.0.119 – – [03/Jan/2020:04:43:04 +0000] “GET /favicon.ico HTTP/1.1” 404 153 “-” “Mozilla/5.0 (X11; Linux x86_64; rv:72.0) Gecko/20100101 Firefox/72.0” “-”

شما باید همان اقدامات دسترسی قبل از تهیه نسخه پشتیبان را ببینید (بازه های زمانی را یادداشت کنید) که تأیید میکند که بازیابی والیوم پایدار موفقیت آمیز بوده است. توجه داشته باشید پس از انجام بازیابی ، اگر از صفحه فرود Nginx بازدید کنید ، ممکن است تلاش های بیشتری نیاز باشد.
در این مرحله ، ما با موفقیت از موضوعات Kubernetes خود در فضاهای vpsgol و والیومهای پایدار خود با استفاده از اسنپ شات های بلوک ذخیره سازی پشتیبان تهیه کرده ایم. ما یک سناریوی فاجعه را شبیه سازی کردیم و سرویس را به برنامه تست Nginx بازیابی کردیم.
نتیجه
در این راهنما ابزار پشتیبان گیری Velero Kubernetes را روی یک خوشه مبتنی بر vpsgol Kubernetes نصب و پیکربندی کردیم. ما این ابزار را برای تهیه نسخه پشتیبان از موضوعات Kubernetes در vpsgol Spaces و پشتیبان گیری از والیوم های مداوم با استفاده از اسنپ شات های والیوم ذخیره سازی بلوک پیکربندی کرده ایم.

از Velero همچنین می توان برای برنامه ریزی پشتیبان گیری منظم از خوشه Kubernetes برای بازیابی در برابر مشکلات استفاده کرد. برای این کار می توانید از دستور velero schedule استفاده کنید. Velero همچنین می تواند برای انتقال منابع از یک خوشه به گروه دیگر استفاده شود.
برای کسب اطلاعات بیشتر در مورد vpsgol Spaces ، از مطالب رسمی Spaces کمک بگیرید. برای کسب اطلاعات بیشتر در مورد والیوم های ذخیره سازی بلوک ، با مستندات والیوم ذخیره سازی بلوک مشورت کنید.
این آموزش بر اساس README موجود در repo GitHub-plugin-plugin-digital-stackPointCloud

 

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

نحوه تایید صحت رمز عبور با Apache در اوبونتو 18.04

نحوه نصب و استفاده از TimescaleDB در CentOS 7

نحوه تایید صحت رمز عبور با Apache در اوبونتو 18.04 (شروع سریع)

نحوه راه اندازی Eclipse Theia Cloud IDE Platform در Debian 10

نحوه نصب و استفاده ازRadamsa برای فوز کردن برنامه ها (تکنیک تست خودکار نرم افزار) و خدمات شبکه روی Ubuntu 18.04

نحوه نصب Docker Compose در Debian 10

چگونه می توان با کتابخانه (library) درخواست ها در پایتون شروع به کار کرد

نحوه اجرای صفحه گذاری در MySQL با PHP روی اوبونتو 18.04

نحوه تنظیم پلتفرم Eclipse Theia Cloud IDE در CentOS 7

بسته بندی برنامه Laravel 6 برای توسعه با Docker Compose در اوبونتو 18.04

نحوه بهینه سازی درخواست های MySQL با ذخیره سازی ProxySQL در اوبونتو 16.04

نحوه استفاده از Ansible برای نصب و راه اندازی وردپرس با LAMP در اوبونتو 18.04

چگونه می توان پلتفرم كد سرور Cloud IDE را در اوبونتو 18.04 تنظیم كرد (شروع سریع)

چگونه می توان از رول های ansible برای انتزاع محیط زیرساختی خود استفاده کرد

نحوه پیکربندی یک خوشه Galera با MySQL در سرورهای اوبونتو 18.04

نحوه تهیه نسخه پشتیبان و بازیابی یک خوشه Kubernetes در vpsgol با استفاده از Velero

نحوه نصب و استفاده از PostgreSQL در CentOS 7

چگونه می توان پلتفرم Eclipse Theia Cloud IDE را روی اوبونتو 18.4 تنظیم کرد

نحوه استقرار و مدیریت DNS با استفاده از DNSControl در Debian 10

چگونه می توان پلتفرم Cloud IDE کد سرور را روی CentOS 7 تنظیم كرد

 

کلمات کلیدی خرید سرور

خرید vps – خرید سرور مجازی – خرید سرور – سرور هلند – فروش vps – سرور مجازی آمریکا – خریدvps – سرور مجازی هلند – فروش سرور مجازی – سرور آمریکا – vps – سرور مجازی انگلیس – سرور مجازی آلمان – سرور مجازی کانادا – خرید vps آمریکا – خرید وی پی اس – سرور – خرید سرور مجازی هلند – vps خرید – سرور مجازی فرانسه – سرور مجازی هلند – خرید vps آمریکا – خرید سرور مجازی


https://vpsgol.net/product/vps-germany/

https://vpsgol.net/product/vps-usa/

https://vpsgol.net/product/vps-france/

https://vpsgol.net/product/vps-canada/

https://vpsgol.net/product/vps-poland/

https://vpsgol.net/product/vps-netherlands/

https://vpsgol.net/product/vps-england/