- Restauración de clusters de Kubernetes basada en instantáneas etcd
- Configuración para la recuperación ante desastres
Configuración para la recuperación ante desastres
Nota:
Esta solución asume que ya existen ambos clusters de Kubernetes, incluidos el plano de control y los nodos de trabajador.Planificación de la Configuración
Nota:
Esta solución asume que ya existen ambos clusters de Kubernetes, incluidos el plano de control y los nodos de trabajador. Las recomendaciones y utilidades que se proporcionan en este manual no comprueban la capacidad ni la configuración de los recursos, el plano de control o los nodos de trabajador.La restauración, como se describe aquí, se puede aplicar en clusters que son "reflejados" principales (el mismo número de nodos de plano de control, el mismo número de nodos de trabajador). Los procedimientos suponen que existe un cluster de Kubernetes principal creado con kubeadm
. Los nombres de host del sistema secundario se configuran para imitar el principal, como se describe en los siguientes párrafos. A continuación, el cluster secundario se crea también con kubeadm
(de nuevo solo DESPUÉS de que se realice la resolución de nombre de host necesaria).
Complete los siguientes requisitos para Restore
al planificar la configuración:
- Confirme que los nodos de trabajador y los recursos necesarios del principal estén disponibles en el secundario. Esto incluye montajes de almacenamiento compartido, equilibradores de carga y bases de datos que utilizan los pods y sistemas utilizados en los espacios de nombres que se restaurarán.
- Configure la resolución de nombre de host para que los nombres de host utilizados por el plano de control y trabajador sean válidos en el secundario.
Por ejemplo, si el sitio principal resuelve el cluster de forma similar a la siguiente:
[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
A continuación, el sitio secundario debe utilizar los mismos nombres de nodo. En el nodo de ejemplo anterior en el plano de control, el nombre de host en la región 2 será el mismo asignado a una IP diferente.[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 ~]$
La configuración resultante en secundaria (después de utilizarkubeadm
para crear el cluster y agregar los nodos de trabajador) utilizará exactamente los mismos nombres de nodo, incluso si las IP internas y otros valores se retrasan.[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
- Utilice un "alias de nombre de host" similar para la dirección de front-end
kube-api
.Nota:
El cluster de kubernetes principal NO debe utilizar IP para el front-end
kube-api
. Debe utilizar un nombre de host para que este front-end pueda tener un alias en el sistema secundario. Consulte la secuencia de comandos maak8s-kube-api-alias.sh para obtener un ejemplo sobre cómo agregar un alias de nombre de host al sistemakube-api
principal existente.Por ejemplo, si la resolución de la direcciónkube-api
del principal es la siguiente:[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
A continuación,kube-api
del secundario debe utilizar el mismo nombre de host (puede asignarlo a una IP diferente):[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
Para ello, utilice hosts virtuales, resolución/etc/hosts
local o servidores DNS diferentes en cada ubicación. Para determinar el método de resolución de nombres de host utilizado por un host concreto, busque el valor del parámetro hosts en el archivo/etc/nsswitch.conf
del host.-
Si desea resolver los nombres de host localmente en el host, convierta la entrada de archivos en la primera entrada para el parámetro
hosts
. Cuandofiles
es la primera entrada para el parámetro hosts, las entradas del archivo host/etc/hosts
se utilizan primero para resolver los nombres de host.Especificación del uso de la resolución de nombre de host local en el archivo
/etc/nsswitch.conf
:hosts: files dns nis
-
Si desea resolver nombres de host mediante DNS en el host, convierta la entrada
dns
en la primera entrada para el parámetro de hosts. Cuandodns
es la primera entrada para el parámetrohosts
, las entradas del servidor DNS se utilizan primero para resolver los nombres de host.Especificación del archivo
/etc/nsswitch.conf
de resolución de nombre de host DNS:hosts: dns files nis
Para mayor simplicidad y coherencia, Oracle recomienda que todos los hosts de un sitio (sitio de producción o en espera) utilicen el mismo método de resolución de nombres de host (resolver nombres de host localmente o resolver nombres de host mediante servidores DNS independientes o un servidor DNS global).
La técnica de "alias de nombre de host" se ha utilizado durante muchos años en sistemas de protección ante desastres para middleware. Puede encontrar detalles y ejemplos en la documentación de Oracle, incluida la Guía de recuperación ante desastres de Oracle Fusion Middleware y otros documentos relativos a la protección ante desastres de Oracle Cloud, como Oracle WebLogic Server for Oracle Cloud Infrastructure Disaster Recovery y SOA Suite on Oracle Cloud Infrastructure Marketplace Disaster Recovery.
-
- Cree el cluster secundario con el mismo nombre de host para el equilibrador de carga front-end
kube-api
que en el principal.Realice este paso después de que la resolución del nombre de host esté lista. Consulte la documentación de la herramientakubeadm
de Kubernetes. Utilice las mismas versiones dekubeadm
y Kubernetes que en la primaria. Los tiempos de ejecución del contenedor pueden diferir, pero debe utilizar las mismas versiones de la infraestructura de Kubernetes en ambas regiones.Por ejemplo, si el cluster primario se creó con lo siguiente:kubeadm init --control-plane-endpoint $LBR_HN:$LBR_PORT --pod-network-cidr=10.244.0.0/16 --node-name $mnode1 --upload-certs --v=9
A continuación, utilice exactamente los mismos valores
$LBR_HN:$LBR_PORT
y CIDR en el secundario que en el principal. Lo mismo se aplica si utiliza otras herramientas de creación de clusters, como kOps y kubesparay. - Al agregar nodos de trabajador o plano de control adicionales, asegúrese de utilizar los mismos nombres de nodo en los nodos principal y secundario.
kubeadm join $LBR_HN:$LBR_PORT --token $token --node-name $host --discovery-token-ca-cert-hash $token_ca --control-plane --certificate-key $cp_ca
- Una vez configurado el cluster secundario, deben aparecer los mismos nombres de host al recuperar la información del nodo de kubernetes.
Las variables $host utilizadas en el secundario para cada plano de control y nodos de trabajador deben ser las mismas que las utilizadas en el principal.
Cluster primario
Ejecute el siguiente comando en la base de datos primaria para confirmar el estado del nodo de trabajo y el plano de control, el rol, la antigüedad, la versión, la IP interna, la IP externa, la imagen del sistema operativo, la versión del núcleo y el tiempo de ejecución del contenedor:La siguiente es una salida de ejemplo.[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 ~]$
Ejecute el siguiente comando en la base de datos primaria para identificar dónde se están ejecutando el plano de control de Kubernetes y el DNS principal.[opc@olk8-m1 ~]$ kubectl cluster-info
Cluster secundario
Ejecute el siguiente comando en el secundario para confirmar el estado, el rol, la antigüedad, la versión, la IP interna, la IP externa, la imagen del sistema operativo, la versión del núcleo y el tiempo de ejecución del contenedor del plano de control y del nodo de trabajo:[opc@k8dramsnewbastion ~]$ kubectl get node -o wide
La siguiente es una salida de ejemplo.[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 ~]$
Ejecute el siguiente comando en el secundario para identificar dónde se están ejecutando el plano de control de Kubernetes y el DNS principal.[opc@k8dramsnewbastion ~]$ kubectl cluster-info
Con la configuración por defecto en la creación del cluster
kubeadm
,etcd
utilizará los mismos puertos en el primario y el secundario. Si el cluster secundario necesita utilizar puertos diferentes, debe modificar los scripts para manejarlo. Puede utilizar diferentes ubicaciones de almacenamiento en la base de datos primaria y secundaria para la base de datosetcds
. Los scripts se encargarán de la restauración en la ubicación adecuada que esté utilizando el cluster secundario paraetcd
. - Instale
etcdctl
tanto en la ubicación primaria como en la secundaria (nodos que ejecutan las secuencias de comandos de copia de seguridad y restauración).Los scripts para la copia de seguridad y restauración utilizaránetcdctl
para obtener información del cluster y para crear y aplicar instantáneasetcd
. Para instalaretcdctl
, consulte la documentación de https://github.com/etcd-io/etcd/releases. - Asegúrese de que se aplican las reglas de seguridad y firewall adecuadas para que el nodo que ejecuta las operaciones de copia de seguridad y restauración esté activado para este tipo de acceso.Los scripts también deberán acceder al cluster con kubectl y a los distintos nodos a través de SSH y HTTP (para comandos de shell y operaciones
etcdctl
).
Configuración
Configurar para la recuperación de fallos.
Los pasos para una restauración implican lo siguiente:
- Realice una copia de seguridad
etcd
en una ubicación primaria. - Envíe la copia de seguridad a la ubicación secundaria.
- Restaure esa copia de seguridad
etcd
en un cluster secundario.
Realice los siguientes pasos:
- Cree una copia de seguridad
etcd
en un cluster de Kubernetes principal.- Descargue TODOS los scripts de DR de instantánea
etcd
de la sección "Código de descarga" de este documento.Nota:
Todos los scripts deben estar en la misma ruta porque los scripts principales utilizan otros scripts auxiliares. - Obtenga advert_port de una configuración de nodo de plano de control
etcd
.[opc@olk8-m1 ~]$ sudo grep etcd.advertise-client-urls /etc/kubernetes/manifests/etcd.yaml | awk -F ":" '{print $NF}' 2379
Y lo mismo parainit_port
:[opc@olk8-m1 ~]$ sudo grep initial-advertise-peer-urls /etc/kubernetes/manifests/etcd.yaml | awk -F ":" '{print $NF}' 2380
Estos puertos son los predeterminados y son utilizados por todos los pods
etcd
del plano de control. En las raras situaciones en las queetcd
se ha personalizado para utilizar un puertoinit
yadvertise
diferente en cada nodo, debe personalizar los scripts para considerarlos. También puede personalizar el valor deinfra_pod_list
si se utilizan otros plugins de red u otros pods o despliegues relevantes se deben reiniciar después de la restauración en su caso concreto. Sin embargo, en general, se puede establecer por defecto en los valores proporcionados en el archivo. - Edite el script
maak8s.env
y actualice las variables según el entorno.A continuación, se muestra un ejemplo de archivomaak8s.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"
- Ejecute el script
maak8-etcd-backup.sh
y proporcione como argumentos los siguientes campos en este orden:- El directorio donde se almacenará la copia de seguridad
- Un "LABEL/TEXT" que describe la copia de seguridad
- Ubicación de la configuración del cluster para ejecutar operaciones
kubectl
Por ejemplo:[opc@olk8-m1 ~]$ ./maak8-etcd-backup.sh /backup-volumes/ "ETCD Snapshot after first configuration " /home/opc/.kubenew/config
La secuencia de comandos realiza las siguientes tareas:
- Crea una instantánea
etcd
desde el nodo maestroetcd
- Crea una copia de la configuración actual de cada nodo de plano de control (manifiestos y certificados para cada nodo de plano de control), incluidas las claves de firma para el cluster.
- Registra la lista de nodos, pods, servicios y configuración de cluster
- Almacena toda la información anterior en un directorio con la fecha. Si el directorio especificado en el argumento de la línea de comandos es
/backup-volume
, la copia de seguridad se almacena en/backup-volume/etcd_snapshot_date
de la copia de seguridad. Por ejemplo,/backup-volume/etcd_snapshot_2022-08-29_15-56-59
.
- Descargue TODOS los scripts de DR de instantánea
- Copie todo el directorio (
/backup-volume/etcd_snapshot_date
) en el cluster secundario.- Utilice una herramienta
sftp
o cree un archivo tar con el directorio y envíelo a la ubicación secundaria. - Descomprima o descomprima el archivo para que esté disponible en el sistema secundario, como en el principal.
- Anote la etiqueta de fecha en la copia de seguridad (en el ejemplo anterior, sería 2022-08-29_15-56-59).
Por ejemplo:[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
- Utilice una herramienta
- Una vez que la copia de seguridad esté disponible en la ubicación secundaria, siga estos pasos para restaurarla:
- Descargue TODOS los scripts para la DR de instantánea
etcd
de la sección "Código de descarga" al nodo de región secundaria que ejecutará la restauración.Recuerde que este nodo también debe tener instaladoetcdctl
y accesokubectl
al cluster secundario.Nota:
Debido a que los scripts principales utilizan otros scripts auxiliares, debe tener todos los scripts en la misma ruta de acceso al ejecutar los distintos pasos. - Edite el script
maak8s.env
y actualice las variables según el entorno.Puede modificar el usuario, la clave ssh y la ubicaciónetcdctl
, según corresponda, a los nodos secundarios, pero los puertosadvert
yinit
deben ser los mismos que los que se utilizan en la base de datos primaria.A continuación, se muestra un ejemplo de archivomaak8s.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"
- Ejecute la restauración con el script
maak8-etcd-restore.sh
. Proporcione, como argumentos, el directorio raíz en el que se ha copiado la copia de seguridad de principal a en espera, el registro de hora de la copia de seguridad y la ubicación de la configuraciónkubectl
para el cluster.Por ejemplo:[opc@k8dramsnewbastion ~]$ ./maak8-etcd-restore.sh /restore-volume 2022-08-29_15-56-59 /home/opc/.kube/config
El script busca en el directorio
/restore-volume
un subdirectorio denominadoetcd_snapshot_date
. Mediante el ejemplo, utilizará/restore-volume/etcd_snapshot_2022-08-29_15-56-59
.La restauración realiza las siguientes tareas:- Forzar para el plano de control en secundario, si se está ejecutando
- Restaura la instantánea
etcd
en todos los nodos de plano de control - Sustituye las claves de firma de cluster en todos los nodos de plano de control
- Inicia el plano de control
- Recicla todos los pods de infraestructura (proxy, programador, controladores) y despliegues en el cluster (para que tengan un estado consistente)
Al final de la restauración, un informe muestra el estado de los pods y el subsistema
etcd
. Por ejemplo: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 ~]$
- Descargue TODOS los scripts para la DR de instantánea
Verificar
maak8DR-apply.sh
, verifique que todos los artefactos que existían en el cluster primario se hayan replicado en el cluster secundario. Observe el cluster secundario y verifique que los pods del sitio secundario se están ejecutando sin errores.
- Compruebe el estado del secundario hasta que los pods necesarios coincidan con el estado del principal. Por defecto, los pods y los despliegues se inician en la región secundaria. Al final de la restauración, se muestra el estado del cluster secundario. Algunos pods pueden tardar más tiempo en alcanzar el estado RUNNING.
- Compruebe el log
restore
en el secundario para detectar posibles errores.La ubicación del log se informa al principio de la restauración. Por defecto, el log se crea en el directorio donde se encuentra la copia de seguridad, en/backup_dir/etcd_snapshot_backup-date/restore_attempted_restore-date/restore.log
. Se crea otro log específicamente para la operación de restauración de instantáneaetcd
/backup_dir/etcd_snapshot_backup-date/restore_attempted_restore-date/etcd_op.log
. - (Opcional) Reversión.
Además de los logs de restauración, se crea una copia de seguridad de la configuración
/etc/kubernetes
anterior para cada uno de los nodos de planos de control en el directorio/backup_dir/etcd_snapshot_backup-date/restore_attempted_restore-date/current_etc_kubernetes
. Del mismo modo, las bases de datosetcd
de cada nodo ANTES de la restauración se copian en/backup_dir/etcd_snapshot_backup-date/restore_attempted_restore-date/node_name
. Puede utilizarlos para volver a la configuración del cluster que existía antes de que se ejecutara la restauración.