مقدمه 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 بروید ، نسخه مربوط به سیستم عامل و معماری سیستم خود را پیدا کنید و آدرس پیوند را کپی کنید. برای اهداف این راهنما ، ما از یک سرور مجازی اوبونتو .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: a0d730c0e0 باشد: باز هم ، حتماً کاراکترهای < و > را حذف کنید. مرحله 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=Error! Hyperlink reference not valid. rel="nofollow" href="https://vpsgol.net/">vpsgolspaces.com,region=nyc3 : URL و منطقه را تغییر دهید تا مطابق با تنظیمات فضای شما باشد. به طور خاص ، هر دو بخش nyc3 را ویرایش کنید تا با منطقه ای که فضای شما در آن میزبان است مطابقت داشته باشد. به عنوان مثال ، اگر فضای شما در منطقه fra1 میزبانی شود ، این خط به این صورت است: --backup-location-config s3Url=Error! Hyperlink reference not valid. rel="nofollow" href="https://vpsgol.net/">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=Error! Hyperlink reference not valid. rel="nofollow" href="https://vpsgol.net/">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

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

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

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

velero ,nginx ,، ,استفاده ,یک ,vpsgol ,استفاده از ,nginx example ,velero io ,با استفاده ,سرور مجازی ,namespace nginx example ,create resource customresourcedefinition ,nginx example output ,velero secret patch

مشخصات

تبلیغات

آخرین ارسال ها

برترین جستجو ها

آخرین جستجو ها

طب فرانگر اجماع طب سنتی و طب جدید وبلاگ روستای سیبستان معرفی جدیدترین ماشین آلات بسته بندی نوین موزیک | دانلود همه چی آهنگ دانلود رایگان قسمت ۱ سریال می‌خواهم زنده بمانم |سریال می‌خواهم زنده بمانم فلدسپات گروه صنعتی تاجی ماشین WɪɴTᴇʀ ʙᴇAʀ وبلاگ دکتر سید کریم حسینی سیاستمدار خوزستانی تئاتر شهر کرج