- استعادة مجموعات Kubernetes استنادًا إلى لقطات etcd
- تكوين إجراءات مواجهة الكوارث
تكوين إجراءات مواجهة الكوارث
ملاحظة:
يفترض هذا الحل وجود كل من مجموعات Kubernetes، بما في ذلك مستوى التحكم ونقاط التوصيل العاملة بالفعل.تخطيط التكوين
ملاحظة:
يفترض هذا الحل وجود كل من مجموعات Kubernetes، بما في ذلك مستوى التحكم ونقاط التوصيل العاملة بالفعل. لا تقوم التوصيات والأدوات المساعدة المتوفرة في هذا الكتاب بالتحقق من الموارد أو مستوى التحكم أو سعة وتكوين نقطة توصيل العامل.يمكن تطبيق الاستعادة، كما هو موضح هنا، في الكتل التي "تتجاوز" الأساسية (العدد نفسه لنقاط توصيل مستوى التحكم، نفس عدد نقاط توصيل العامل). تفترض الإجراءات وجود مجموعة Kubernetes أساسية تم تكوينها باستخدام kubeadm
. يتم تكوين أسماء المضيفين في النظام الثانوي لمحاكاة الأسماء الأساسية، كما هو موضح في الفقرات التالية. بعد ذلك، يتم تكوين المجموعة الثانوية أيضًا باستخدام kubeadm
(مرة أخرى فقط بعد التأكد من دقة اسم المضيف المطلوبة).
استكمل المتطلبات التالية الخاصة بـ Restore
عند تخطيط التكوين:
- تأكد من إتاحة الموارد ونقاط توصيل العامل المطلوبة في المرحلة الأساسية في المرحلة الثانوية. ويتضمن ذلك وصلات تخزين مشتركة وموازنات تحميل وقواعد بيانات تستخدمها وحدات التنفيذ الأساسية والأنظمة المستخدمة في مساحات الأسماء التي ستتم استعادتها.
- قم بتكوين دقة اسم المضيف بحيث تكون أسماء المضيفات المستخدمة بواسطة عنصر التحكم ومستوى العامل صالحة في المستوى الثانوي.
على سبيل المثال، إذا قام موقعك الأساسي بحل المجموعة المشابهة لما يلي:
[opc@olk8-m1 ~]$ kubectl get nodes -A NAME STATUS ROLES AGE VERSION olk8-m1 Ready control-plane 552d v1.25.12 olk8-m2 Ready control-plane 552d v1.25.12 olk8-m3 Ready control-plane 2y213d v1.25.12 olk8-w1 Ready <none> 2y213d v1.25.12 olk8-w2 Ready <none> 2y213d v1.25.12 olk8-w3 Ready <none> 2y213d v1.25.12 [opc@olk8-m1 ~]$ nslookup olk8-m1 Server: 169.254.169.254 Address: 169.254.169.254#53 Non-authoritative answer: Name: olk8-m1.k8dbfrasubnet.k8dbvcn.oraclevcn.com Address: 10.11.0.16
بعد ذلك، يجب أن يستخدم موقعك الثانوي نفس أسماء نقاط التوصيل. في المثال السابق لنقطة التوصيل في مستوى التحكم، سيكون اسم المضيف في المنطقة الثانية هو نفسه المعين إلى IP مختلف.[opc@k8dramsnewbastion ~]$ nslookup olk8-m1 Server: 169.254.169.254 Address: 169.254.169.254#53 Non-authoritative answer: Name: olk8-m1.sub01261629121.k8drvcnams.oraclevcn.com Address: 10.5.176.144 [opc@k8dramsnewbastion ~]$
سيستخدم التكوين الناتج في الثانوية (بعد استخدامkubeadm
لتكوين المجموعة وإضافة نقاط التوصيل العاملة) نفس أسماء نقاط التوصيل بالضبط، حتى في حالة تأجيل عناوين IP الداخلية والقيم الأخرى.[opc@k8dramsnewbastion ~]$ kubectl get nodes -A NAME STATUS ROLES AGE VERSION olk8-m1 Ready control-plane 552d v1.25.11 olk8-m2 Ready control-plane 552d v1.25.11 olk8-m3 Ready control-plane 2y213d v1.25.11 olk8-w1 Ready <none> 2y213d v1.25.11 olk8-w2 Ready <none> 2y213d v1.25.11 olk8-w3 Ready <none> 2y213d v1.25.11
- استخدم "اسم مضيف بديل" مماثل لعنوان الطرف الأمامي
kube-api
.ملاحظة:
يجب ألا تستخدم مجموعة kubernetes الأساسية عناوين IP لواجهة المستخدم
kube-api
. يجب استخدام اسم مضيف حتى يمكن استخدام الواجهة الأمامية هذه في النظام الثانوي. راجع اسكربت maak8s-kube-api-alias.sh للاطلاع على مثال حول كيفية إضافة اسم مضيف بديل إلى نظامkube-api
الأساسي الموجود لديك.على سبيل المثال، إذا كان حل العنوان الأساسيkube-api
كما يلي:[opc@olk8-m1 ~]$ grep server .kube/config server: https://k8lbr.paasmaaoracle.com:6443 [opc@olk8-m1 ~]$ grep k8lbr.paasmaaoracle.com /etc/hosts 132.145.247.187 k8lbr.paasmaaoracle.com k8lbr
ثم، يجب أن يستخدمkube-api
الثانوي نفس اسم المضيف (يمكنك تخطيطه إلى IP مختلف):[opc@k8dramsnewbastion ~]$ grep server .kube/config server: https://k8lbr.paasmaaoracle.com:6443 [opc@k8dramsnewbastion ~]$ grep k8lbr.paasmaaoracle.com /etc/hosts 144.21.37.81 k8lbr.paasmaaoracle.com k8lbr
يمكنك تحقيق ذلك باستخدام الأجهزة المضيفة الظاهرية أو دقة/etc/hosts
المحلية أو خوادم DNS مختلفة في كل موقع. لتحديد أسلوب دقة اسم المضيف المستخدم بواسطة مضيف معين، ابحث عن قيمة معلمة المضيفين في ملف/etc/nsswitch.conf
على المضيف.-
إذا أردت تحليل أسماء المضيفين محليًا على المضيف، فقم بجعل إدخال الملفات هو الإدخال الأول لمعلمة
hosts
. عندما يكونfiles
هو الإدخال الأول لمعلمة المضيفات، يتم استخدام الإدخالات في ملف المضيف/etc/hosts
أولاً لحل أسماء المضيف.تحديد استخدام قرار اسم المضيف المحلي في ملف
/etc/nsswitch.conf
:hosts: files dns nis
-
إذا أردت حل أسماء المضيفين باستخدام DNS على المضيف، فقم بجعل إدخال
dns
هو الإدخال الأول لمعلمة المضيفين. عندما يكونdns
هو الإدخال الأول لمعلمةhosts
، يتم استخدام إدخالات خادم DNS أولاً لحل أسماء المضيفين.تحديد استخدام ملف قرار اسم مضيف DNS
/etc/nsswitch.conf
:hosts: dns files nis
من أجل البساطة والاتساق، توصي Oracle جميع المضيفين داخل الموقع (موقع الإنتاج أو الموقع البديل) باستخدام نفس طريقة حل اسم المضيف (حل أسماء المضيفين محليًا أو حل أسماء المضيفين باستخدام خوادم DNS منفصلة أو خادم DNS عام).
تم استخدام تقنية "بديل اسم المضيف" لسنوات عديدة في الحماية من الكوارث لأنظمة البرامج الوسيطة. يمكنك العثور على التفاصيل والأمثلة في وثائق Oracle، بما في ذلك دليل استرداد كوارث Oracle Fusion Middleware والمستندات الأخرى المتعلقة بحماية كوارث Oracle Cloud، مثل Oracle WebLogic Server for Oracle Cloud Infrastructure Disaster Recovery وSOA Suite في Oracle Cloud Infrastructure Marketplace Disaster Recovery.
-
- قم بتكوين المجموعة الثانوية باستخدام نفس اسم المضيف لموازن تحميل
kube-api
في الواجهة الأمامية كما هو الحال في الأساسي.قم بتنفيذ هذه الخطوة بعد أن يكون حل اسم المضيف جاهزًا. راجع وثائق أداة Kuberneteskubeadm
. استخدم نفس إصداراتkubeadm
وKubernetes كما هي في الإصدار الأساسي. قد تؤجل أوقات تشغيل الحاوية، ولكن يجب عليك استخدام نفس إصدارات بنية Kubernetes الأساسية في كلا المنطقتين.على سبيل المثال، إذا تم تكوين المجموعة الأساسية باستخدام ما يلي:kubeadm init --control-plane-endpoint $LBR_HN:$LBR_PORT --pod-network-cidr=10.244.0.0/16 --node-name $mnode1 --upload-certs --v=9
ثم استخدم نفس قيم
$LBR_HN:$LBR_PORT
وCIDR في العنصر الثانوي كما هي في العنصر الأساسي. ينطبق الشيء نفسه إذا كنت تستخدم أدوات إنشاء مجموعات أخرى، مثل kOps وkubesparay. - عند إضافة مستوى تحكم إضافي أو نقاط توصيل عامل، تأكد من استخدام نفس أسماء نقاط التوصيل في الأساسي والثانوي.
kubeadm join $LBR_HN:$LBR_PORT --token $token --node-name $host --discovery-token-ca-cert-hash $token_ca --control-plane --certificate-key $cp_ca
- بمجرد تكوين المجموعة الثانوية، يجب أن تظهر أسماء المضيف نفسها عند استرجاع معلومات نقطة التوصيل من kubernetes.
يجب أن تكون المتغيرات $host المستخدمة في الثانوية لكل مستوى تحكم ونقاط توصيل عامل مماثلة للمتغيرات المستخدمة في الأساس.
المجموعة الأساسية
قم بتشغيل الأمر التالي على "أساسي" لتأكيد حالة نقطة توصيل العامل ومستوى التحكم، والدور، والعمر، والإصدار، وIP الداخلي، وIP الخارجي، وصورة نظام التشغيل، وإصدار المحرك الأساسي، ووقت تشغيل الحاوية:فيما يلي مثال على المخرجات.[opc@olk8-m1 ~]$ kubectl get nodes -o wide
[opc@olk8-m1 ~]$ kubectl get nodes -o wide NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME olk8-m1 Ready control-plane 578d v1.25.12 10.11.0.16 <none> Oracle Linux Server 7.9 4.14.35-1902.302.2.el7uek.x86_64 cri-o://1.26.1 olk8-m2 Ready control-plane 578d v1.25.12 10.11.210.212 <none> Oracle Linux Server 7.9 5.4.17-2136.301.1.3.el7uek.x86_64 cri-o://1.26.1 olk8-m3 Ready control-plane 2y238d v1.25.12 10.11.0.18 <none> Oracle Linux Server 7.9 4.14.35-2047.527.2.el7uek.x86_64 cri-o://1.26.1 olk8-w1 Ready <none> 2y238d v1.25.12 10.11.0.20 <none> Oracle Linux Server 7.9 4.14.35-1902.302.2.el7uek.x86_64 cri-o://1.26.1 olk8-w2 Ready <none> 2y238d v1.25.12 10.11.0.21 <none> Oracle Linux Server 7.9 4.14.35-1902.302.2.el7uek.x86_64 cri-o://1.26.1 olk8-w3 Ready <none> 2y238d v1.25.12 10.11.0.22 <none> Oracle Linux Server 7.9 4.14.35-1902.302.2.el7uek.x86_64 cri-o://1.26.1 [opc@olk8-m1 ~]$
قم بتشغيل الأمر التالي على الخادم الأساسي لتحديد موقع مستوى التحكم في Kubernetes ونظام أسماء النطاقات (DNS) الأساسي.[opc@olk8-m1 ~]$ kubectl cluster-info
المجموعة الثانوية
قم بتشغيل الأمر التالي الثانوي لتأكيد حالة نقطة توصيل العامل ومستوى التحكم والدور والعمر والإصدار وIP الداخلي وIP الخارجي وصورة نظام التشغيل وإصدار المحرك الأساسي ووقت تشغيل الحاوية:[opc@k8dramsnewbastion ~]$ kubectl get node -o wide
فيما يلي مثال على المخرجات.[opc@k8dramsnewbastion ~]$ kubectl get node -o wide NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME olk8-m1 Ready control-plane 579d v1.25.11 10.5.176.144 <none> Oracle Linux Server 8.7 5.15.0-101.103.2.1.el8uek.x86_64 containerd://1.6.21 olk8-m2 Ready control-plane 579d v1.25.11 10.5.176.167 <none> Oracle Linux Server 8.7 5.15.0-101.103.2.1.el8uek.x86_64 containerd://1.6.21 olk8-m3 Ready control-plane 2y239d v1.25.11 10.5.176.154 <none> Oracle Linux Server 8.7 5.15.0-101.103.2.1.el8uek.x86_64 containerd://1.6.21 olk8-w1 Ready <none> 2y239d v1.25.11 10.5.176.205 <none> Oracle Linux Server 8.7 5.15.0-101.103.2.1.el8uek.x86_64 containerd://1.6.22 olk8-w2 Ready <none> 2y239d v1.25.11 10.5.176.247 <none> Oracle Linux Server 8.7 5.15.0-101.103.2.1.el8uek.x86_64 containerd://1.6.22 olk8-w3 Ready <none> 2y239d v1.25.11 10.5.176.132 <none> Oracle Linux Server 8.7 5.15.0-101.103.2.1.el8uek.x86_64 containerd://1.6.22 [opc@k8dramsnewbastion ~]$ kubectl cluster-info Kubernetes control plane is running at https://k8lbr.paasmaaoracle.com:6443 CoreDNS is running at https://k8lbr.paasmaaoracle.com:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'. [opc@k8dramsnewbastion ~]$
قم بتشغيل الأمر التالي على المرحلة الثانوية لتحديد مكان تشغيل مستوى التحكم في Kubernetes ونظام أسماء النطاقات (DNS) الأساسي.[opc@k8dramsnewbastion ~]$ kubectl cluster-info
باستخدام الإعدادات الافتراضية في إنشاء مجموعة
kubeadm
، سيستخدمetcd
نفس المنافذ في المنفذين الأساسي والثانوي. إذا احتاجت المجموعة الثانوية إلى استخدام منافذ مختلفة، فلا بد من تعديل الاسكربتات لمعالجتها. يمكنك استخدام مواقع تخزين مختلفة في الأساس والثانوي لقاعدة بياناتetcds
. ستهتم البرامج النصية بالاستعادة في الموقع المناسب الذي تستخدمه المجموعة الثانوية من أجلetcd
. - قم بتثبيت
etcdctl
في الموقعين الأساسي والثانويين (نقاط التوصيل التي تقوم بتنفيذ اسكربتات النسخ الاحتياطي والاستعادة).ستستخدم اسكربتات النسخ الاحتياطي والاستعادةetcdctl
للحصول على معلومات من المجموعة ولإنشاء لقطاتetcd
وتطبيقها. لتثبيتetcdctl
يرجى الاطلاع على وثائق https://github.com/etcd-io/etcd/releases. - تأكد من وجود جدار الحماية وقواعد الأمان المناسبة حتى يتم تمكين نقطة التوصيل التي تقوم بتنفيذ عمليات النسخ الاحتياطي والاستعادة لهذا النوع من الوصول.كما ستحتاج البرامج النصية إلى الوصول إلى المجموعة باستخدام kubectl والوصول إلى نقاط التوصيل المختلفة من خلال SSH وHTTP (لأوامر shell وعمليات
etcdctl
).
تكوين
اضبط ذلك لاستعادة القدرة على العمل بعد الكوارث.
تتضمن خطوات الاستعادة ما يلي:
- خذ نسخة احتياطية من
etcd
في موقع أساسي. - شحن النسخة الاحتياطية إلى الموقع الثانوي.
- استعادة ذلك النسخ الاحتياطي من
etcd
في مجموعة ثانوية.
تنفيذ الخطوات التالية:
- تكوين نسخة احتياطية من
etcd
في مجموعة Kubernetes أساسية.- Download ALL the of the scripts for
etcd
snapshot DR from the "Download Code" section of this document.ملاحظة:
يجب أن تكون كل السكريبتات في نفس المسار لأن السكريبتات الرئيسية تستخدم سكريبتات مساعدة أخرى. - احصل على advert_port من تكوين
etcd
لنقطة توصيل مستوى التحكم.[opc@olk8-m1 ~]$ sudo grep etcd.advertise-client-urls /etc/kubernetes/manifests/etcd.yaml | awk -F ":" '{print $NF}' 2379
ونفس الشيء بالنسبة إلىinit_port
:[opc@olk8-m1 ~]$ sudo grep initial-advertise-peer-urls /etc/kubernetes/manifests/etcd.yaml | awk -F ":" '{print $NF}' 2380
وهذه المنافذ هي المنافذ الافتراضية ويتم استخدامها بواسطة كافة وحدات التنفيذ الأساسية
etcd
الخاصة بمستوى التحكم. في المواقف النادرة التي يتم فيها تخصيصetcd
لاستخدام منفذinit
وadvertise
مختلف في كل نقطة توصيل، يجب تخصيص الاسكربتات لمراعاة ذلك. يمكنك أيضًا تخصيص قيمةinfra_pod_list
في حالة استخدام برامج إضافية أخرى للشبكة أو في حالة ضرورة إعادة تشغيل وحدات التنفيذ الأساسية أو عمليات النشر ذات الصلة بعد الاستعادة في حالتك الخاصة. ومع ذلك، بشكل عام، يمكن تعيينها افتراضيًا على القيم المتوفرة في الملف. - قم بتحرير الاسكربت
maak8s.env
وتحديث المتغيرات وفقًا للبيئة الخاصة بك.فيما يلي مثال على ملفmaak8s.env
:[opc@olk8-m1 ~]$ cat maak8s.env #sudo ready user to ssh into the control plane nodes export user=opc #ssh key for the ssh export ssh_key=/home/opc/KeyMAA.ppk #etcdctl executable's location export etcdctlhome=/scratch/etcdctl/ #etcd advertise port export advert_port=2379 #etcd init cluster port export init_port=2380 #infrastructure pods that will be restarted on restore export infra_pod_list="flannel proxy controller scheduler"
- قم بتشغيل الاسكربت
maak8-etcd-backup.sh
مع توفير الحقول التالية في هذا الترتيب كوسائط:- الدليل حيث سيتم تخزين النسخة الاحتياطية
- وصف "LABEL/TEXT" النسخ الاحتياطي
- موقع تكوين المجموعة لتشغيل عمليات
kubectl
على سبيل المثال:[opc@olk8-m1 ~]$ ./maak8-etcd-backup.sh /backup-volumes/ "ETCD Snapshot after first configuration " /home/opc/.kubenew/config
ينفذ الاسكربت المهام التالية:
- تكوين لقطة
etcd
من نقطة التوصيل الرئيسيةetcd
- تكوين نسخة من التكوين الحالي لكل نقطة توصيل مستوى تحكم (تحركات وشهادات لكل نقطة توصيل مستوى تحكم)، بما في ذلك مفاتيح التوقيع للمجموعة
- تسجيل قائمة نقاط التوصيل ووحدات التنفيذ الأساسية والخدمات وتكوين المجموعة
- تخزين كافة المعلومات أعلاه في دليل مسمى بالتاريخ. إذا كان الدليل المحدد في وسيطة سطر الأوامر هو
/backup-volume
، فسيتم تخزين النسخة الاحتياطية ضمن/backup-volume/etcd_snapshot_date
للنسخة الاحتياطية. على سبيل المثال،/backup-volume/etcd_snapshot_2022-08-29_15-56-59
.
- Download ALL the of the scripts for
- نسخ الدليل بالكامل (
/backup-volume/etcd_snapshot_date
) إلى المجموعة الثانوية.- استخدم أداة
sftp
أو قم بإنشاء رسم بياني باستخدام الدليل وقم بإرساله إلى الموقع الثانوي. - قم بفك ضغط الملف أو فك ضغطه لجعله متوفرًا في النظام الثانوي، كما كان في النظام الأساسي.
- قم بتدوين تسمية التاريخ في النسخة الاحتياطية (في المثال أعلاه سيكون 2022-08-29_15-56-59).
على سبيل المثال،[opc@olk8-m1 ~]$ scp -i KeyMAA.ppk -qr /backup-volume/etcd_snapshot_2022-08-29_15-56-59 154.21.39.171:/restore-volume [opc@olk8-m1 ~]$ ssh -i KeyMAA.ppk 154.21.39.171 "ls -lart /restore-volume" total 4 drwxrwxrwt. 6 root root 252 Aug 30 15:11 .. drwxrwxr-x. 3 opc opc 47 Aug 30 15:12 . drwxrwxr-x. 5 opc opc 4096 Aug 30 15:12 etcd_snapshot_2022-08-29_15-56-59
- استخدم أداة
- بمجرد إتاحة النسخ الاحتياطي في الموقع الثانوي، اتبع هذه الخطوات لاستعادةه:
- قم بتنزيل جميع اسكربتات
etcd
اللقطة DR من قسم "تعليمات التنزيل البرمجية" إلى نقطة توصيل المنطقة الثانوية التي ستقوم بتشغيل الاستعادة.تذكر أن نقطة التوصيل هذه يجب أن يكون لها أيضًاetcdctl
مثبت وkubectl
حق الوصول إلى المجموعة الثانوية.ملاحظة:
نظرًا لأن السكريبتات الرئيسية تستخدم سكريبتات مساعدة أخرى، يجب أن يكون لديك كل السكريبتات في نفس المسار عند تنفيذ الخطوات المختلفة. - قم بتحرير الاسكربت
maak8s.env
وتحديث المتغيرات وفقًا للبيئة الخاصة بك.يمكنك تغيير المستخدم ومفتاح ssh وموقعetcdctl
، وفقًا لنقاط التوصيل الثانوية، ولكن يجب أن تكون المنافذadvert
وinit
هي نفسها المنافذ المستخدمة في الأساس.فيما يلي مثال على ملفmaak8s.env
:[opc@olk8-m1 ~]$ cat maak8s.env #sudo ready user to ssh into the control plane nodes export user=opc #ssh key for the ssh export ssh_key=/home/opc/KeyMAA.ppk #etcdctl executable's location export etcdctlhome=/scratch/etcdctl/ #etcd advertise port export advert_port=2379 #etcd init cluster port export init_port=2380 #infrastructure pods that will be restarted on restore export infra_pod_list="flannel proxy controller scheduler"
- قم بتشغيل الاستعادة باستخدام الاسكربت
maak8-etcd-restore.sh
. أدخل، كوسائط، الدليل الأولي حيث تم نسخ النسخة الاحتياطية من الأساس إلى البديل، والطابع الزمني للنسخة الاحتياطية، وموقع تكوينkubectl
للمجموعة.على سبيل المثال،[opc@k8dramsnewbastion ~]$ ./maak8-etcd-restore.sh /restore-volume 2022-08-29_15-56-59 /home/opc/.kube/config
يبحث الاسكربت في دليل
/restore-volume
عن دليل فرعي بالاسمetcd_snapshot_date
. باستخدام المثال، سيتم استخدام/restore-volume/etcd_snapshot_2022-08-29_15-56-59
.تنفذ الاستعادة المهام التالية:- فرض إيقاف مستوى التحكم في المرحلة الثانوية، إذا كان قيد التشغيل
- استعادة اللقطة
etcd
في كل نقاط توصيل مستوى التحكم - استبدال مفاتيح توقيع المجموعة في كل نقاط توصيل مستوى التحكم
- يبدء مستوى التحكم
- إعادة تدوير جميع وحدات البنية الأساسية الأساسية (الوكيل، أداة الجدولة، وحدات التحكم) وعمليات النشر في المجموعة (لإحضارها إلى حالة متسقة)
في نهاية الاستعادة، يعرض تقرير حالة وحدات التنفيذ الأساسية والنظام الفرعي
etcd
. على سبيل المثال،NAMESPACE NAME READY STATUS RESTARTS AGE default dnsutils 1/1 Running 0 27d default nginx-deployment-566ff9bd67-6rl7f 1/1 Running 0 19s default nginx-deployment-566ff9bd67-hnx69 1/1 Running 0 17s default nginx-deployment-566ff9bd67-hvrwq 1/1 Running 0 15s default test-pd 1/1 Running 0 26d kube-flannel kube-flannel-ds-4f2fz 1/1 Running 3 (22d ago) 35d kube-flannel kube-flannel-ds-cvqzh 1/1 Running 3 (22d ago) 35d kube-flannel kube-flannel-ds-dmbhp 1/1 Running 3 (22d ago) 35d kube-flannel kube-flannel-ds-skhz2 1/1 Running 3 (22d ago) 35d kube-flannel kube-flannel-ds-zgkkp 1/1 Running 4 (22d ago) 35d kube-flannel kube-flannel-ds-zpbn7 1/1 Running 3 (22d ago) 35d kube-system coredns-8f994fbf8-6ghs4 0/1 ContainerCreating 0 15s kube-system coredns-8f994fbf8-d79h8 1/1 Running 0 19s kube-system coredns-8f994fbf8-wcknd 1/1 Running 0 12s kube-system coredns-8f994fbf8-zh8w4 1/1 Running 0 19s kube-system etcd-olk8-m1 1/1 Running 22 (89s ago) 44s kube-system etcd-olk8-m2 1/1 Running 59 (88s ago) 44s kube-system etcd-olk8-m3 1/1 Running 18 (88s ago) 26s kube-system kube-apiserver-olk8-m1 1/1 Running 26 (89s ago) 44s kube-system kube-apiserver-olk8-m2 1/1 Running 60 (88s ago) 42s kube-system kube-apiserver-olk8-m3 1/1 Running 18 (88s ago) 27s kube-system kube-controller-manager-olk8-m1 1/1 Running 19 (89s ago) 10s kube-system kube-controller-manager-olk8-m2 1/1 Running 18 (88s ago) 10s kube-system kube-controller-manager-olk8-m3 1/1 Running 18 (88s ago) 10s kube-system kube-flannel-ds-62dcq 1/1 Running 0 19s kube-system kube-flannel-ds-bh5w7 1/1 Running 0 19s kube-system kube-flannel-ds-cc2rk 1/1 Running 0 19s kube-system kube-flannel-ds-p8kdk 1/1 Running 0 19s kube-system kube-flannel-ds-vj8r8 1/1 Running 0 18s kube-system kube-flannel-ds-wz2kv 1/1 Running 0 18s kube-system kube-proxy-28d98 1/1 Running 0 14s kube-system kube-proxy-2gb99 1/1 Running 0 15s kube-system kube-proxy-4dfjd 1/1 Running 0 14s kube-system kube-proxy-72l5q 1/1 Running 0 14s kube-system kube-proxy-s8zbs 1/1 Running 0 14s kube-system kube-proxy-tmqnm 1/1 Running 0 14s kube-system kube-scheduler-olk8-m1 0/1 Pending 0 5s kube-system kube-scheduler-olk8-m2 1/1 Running 18 (88s ago) 5s kube-system kube-scheduler-olk8-m3 1/1 Running 18 (88s ago) 5s newopns weblogic-operator-5d74f56886-mtjp6 0/1 Terminating 0 26d newopns weblogic-operator-webhook-768d9f6f79-tdt8b 0/1 Terminating 0 26d soans soaedgdomain-adminserver 0/1 Running 0 22d soans soaedgdomain-soa-server1 0/1 Running 0 22d soans soaedgdomain-soa-server2 0/1 Running 0 22d +--------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+ | ENDPOINT | ID | VERSION | DB SIZE | IS LEADER | IS LEARNER | RAFT TERM | RAFT INDEX | RAFT APPLIED INDEX | ERRORS | +--------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+ | olk8-m1:2379 | 63c63522f0be24a6 | 3.5.6 | 146 MB | true | false | 2 | 1195 | 1195 | | | olk8-m2:2379 | 697d3746d6f10842 | 3.5.6 | 146 MB | false | false | 2 | 1195 | 1195 | | | olk8-m3:2379 | 7a23c67093a3029 | 3.5.6 | 146 MB | false | false | 2 | 1195 | 1195 | | +--------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+ +------------------+---------+---------+----------------------+---------------------------+------------+ | ID | STATUS | NAME | PEER ADDRS | CLIENT ADDRS | IS LEARNER | +------------------+---------+---------+----------------------+---------------------------+------------+ | 7a23c67093a3029 | started | olk8-m3 | https://olk8-m3:2380 | https://10.5.176.154:2379 | false | | 63c63522f0be24a6 | started | olk8-m1 | https://olk8-m1:2380 | https://10.5.176.144:2379 | false | | 697d3746d6f10842 | started | olk8-m2 | https://olk8-m2:2380 | https://10.5.176.167:2379 | false | +------------------+---------+---------+----------------------+---------------------------+------------+ Restore completed at 2023-08-30_15-18-22 [opc@k8dramsnewbastion ~]$
- قم بتنزيل جميع اسكربتات
تحقق
maak8DR-apply.sh
، تحقق من استنساخ جميع البيانات الاصطناعية الموجودة في المجموعة الأساسية إلى المجموعة الثانوية. انظر إلى المجموعة الثانوية وتحقق من أن وحدات التنفيذ الأساسية في الموقع الثانوي قيد التشغيل بدون أخطاء.
- تحقق من حالة العنصر الثانوي حتى تتطابق وحدات التنفيذ الأساسية المطلوبة مع الحالة في العنصر الأساسي. وبشكل افتراضي، تبدأ وحدات التنفيذ الأساسية وعمليات النشر في المنطقة الثانوية. في نهاية الاستعادة، تظهر حالة المجموعة الثانوية. قد تستغرق بعض وحدات التنفيذ الأساسية وقتًا إضافيًا للوصول إلى حالة التشغيل.
- راجع
restore
تسجيل الدخول الثانوي لمعرفة الأخطاء الممكنة.يتم الإبلاغ عن موقع السجل في بداية الاستعادة. وبشكل افتراضي، يتم تكوين السجل ضمن الدليل حيث كانت النسخة الاحتياطية نفسها موجودة، في/backup_dir/etcd_snapshot_backup-date/restore_attempted_restore-date/restore.log
. يتم تكوين سجل آخر خاص بعملية استعادة اللقطةetcd
/backup_dir/etcd_snapshot_backup-date/restore_attempted_restore-date/etcd_op.log
. - (اختياري) تراجع.
بالإضافة إلى سجلات الاستعادة، يتم إنشاء نسخة احتياطية من تكوين
/etc/kubernetes
السابق لكل نقطة توصيل من نقاط توصيل مستويات التحكم ضمن الدليل/backup_dir/etcd_snapshot_backup-date/restore_attempted_restore-date/current_etc_kubernetes
. وبالمثل، يتم نسخ قواعد بياناتetcd
في كل نقطة توصيل قبل الاستعادة إلى/backup_dir/etcd_snapshot_backup-date/restore_attempted_restore-date/node_name
. يمكنك استخدام هذه الإجراءات للعودة إلى تكوين المجموعة الموجود قبل تنفيذ الاستعادة.