Co je zálohování služby Azure Kubernetes Service?
Zálohování služby Azure Kubernetes Service (AKS) je jednoduchý proces nativní pro cloud, který můžete použít k zálohování a obnovení kontejnerizovaných aplikací a dat spuštěných v clusteru AKS. Můžete nakonfigurovat naplánované zálohování pro stav clusteru a data aplikací, která jsou uložená na trvalých svazcích v úložišti Azure Disk Storage založeném na ovladači CSI. Řešení poskytuje podrobné řízení pro výběr konkrétního oboru názvů nebo celého clusteru pro zálohování nebo obnovení uložením záloh místně v kontejneru objektů blob a jako snímky disků. Zálohování AKS můžete použít pro kompletní scénáře, včetně provozního obnovení, klonování vývojových/testovacích prostředí a scénářů upgradu clusteru.
Zálohování AKS se integruje s centrem zálohování v Azure a poskytuje jedno zobrazení, které vám pomůže řídit, monitorovat, provozovat a analyzovat zálohy ve velkém měřítku. Vaše zálohy jsou dostupné také na webu Azure Portal v části Nastavení v nabídce služby pro instanci AKS.
Jak funguje zálohování AKS?
Zálohování AKS slouží k zálohování úloh AKS a trvalých svazků nasazených v clusterech AKS. Řešení vyžaduje , aby bylo v clusteru AKS nainstalované rozšíření Backup. Trezor služby Backup komunikuje s rozšířením za účelem dokončení operací souvisejících se zálohováním a obnovením. Použití rozšíření Backup je povinné a rozšíření musí být nainstalované uvnitř clusteru AKS, aby bylo možné povolit zálohování a obnovení clusteru. Při konfiguraci zálohování AKS přidáte hodnoty pro účet úložiště a kontejner objektů blob, kde se ukládají zálohy.
Společně s rozšířením Backup se ve spravované skupině prostředků AKS vytvoří identita uživatele (označovaná jako identita rozšíření). Identitě rozšíření je přiřazena role Přispěvatel účtu úložiště v účtu úložiště, kde jsou zálohy uložené v kontejneru objektů blob.
Aby bylo možné podporovat veřejné, privátní a autorizované clustery založené na IP adresách, zálohování AKS vyžaduje, aby byl mezi clusterem AKS a trezorem služby Backup povolený důvěryhodný přístup. Důvěryhodný přístup umožňuje trezoru služby Backup přístup ke clusteru AKS kvůli určitým oprávněním, která jsou k němu přiřazena pro operace zálohování. Další informace o důvěryhodném přístupu AKS najdete v tématu Povolení přístupu k clusterům AKS pomocí důvěryhodného přístupu k prostředkům Azure.
Poznámka:
Zálohování AKS umožňuje ukládat zálohy v provozní vrstvě i na úrovni trezoru. Provozní úroveň je místní úložiště dat (zálohy se ukládají ve vašem tenantovi jako snímky). Teď můžete přesunout jeden bod obnovení za den a uložit ho do úrovně trezoru jako objekty blob (mimo vašeho tenanta) pomocí zálohování AKS. Zálohy uložené v trezoru je také možné použít k obnovení dat v sekundární oblasti (spárovaná oblast Azure).
Po instalaci rozšíření Backup a povolení důvěryhodného přístupu můžete nakonfigurovat naplánované zálohování pro clustery podle zásad zálohování. Zálohy můžete obnovit také do původního clusteru nebo do alternativního clusteru, který je ve stejném předplatném a oblasti. Při nastavování konkrétní operace můžete zvolit konkrétní obor názvů nebo celý cluster jako konfiguraci zálohování a obnovení.
Řešení zálohování umožňuje operace zálohování pro vaše zdroje dat AKS, které jsou nasazené v clusteru, a pro data uložená v trvalém svazku clusteru a pak uloží zálohy do kontejneru objektů blob. Trvalé svazky založené na disku se zálohují jako snímky disků ve skupině prostředků snímku. Snímky a stav clusteru v objektu blob se kombinují a tvoří bod obnovení uložený ve vašem tenantovi s názvem Provozní úroveň. Zálohy (první úspěšné zálohování za den, týden, měsíc nebo rok) můžete také převést na objekty blob a pak je přesunout do trezoru (mimo vašeho tenanta) jednou denně.
Poznámka:
Azure Backup v současné době podporuje pouze trvalé svazky v úložišti Azure Disk Storage založeném na ovladačích CSI. Během zálohování řešení přeskočí jiné typy trvalých svazků, jako jsou sdílená složka Azure a objekty blob. Pokud jste také definovali pravidla uchovávání informací pro úroveň trezoru, zálohování je možné přesunout do trezoru pouze v případě, že jsou trvalé svazky menší nebo rovny 1 TB.
Konfigurace zálohování
Pokud chcete nakonfigurovat zálohy pro clustery AKS, nejprve vytvořte trezor služby Backup. Trezor poskytuje konsolidované zobrazení záloh, které jsou nakonfigurované napříč různými zdroji dat. Zálohování AKS podporuje zálohy provozní vrstvy i vrstvy trezoru.
Poznámka:
- Trezor služby Backup a cluster AKS, který chcete zálohovat nebo obnovit, musí být ve stejné oblasti a předplatném.
- Nastavení redundance úložiště trezoru služby Backup (LRS/GRS) se vztahuje pouze na zálohy uložené ve vrstvě trezoru. Pokud chcete použít zálohy pro zotavení po havárii, nastavte redundanci úložiště jako GRS s povoleným obnovením mezi oblastmi.
Zálohování AKS automaticky aktivuje naplánovanou úlohu zálohování. Úloha zkopíruje prostředky clusteru do kontejneru objektů blob a vytvoří přírůstkový snímek trvalých svazků založených na disku podle frekvence zálohování. Zálohy se uchovávají v provozní vrstvě a vrstvě trezoru podle doby uchovávání definované v zásadách zálohování a po uplynutí doby trvání se odstraní.
Poznámka:
Zálohování AKS můžete použít k vytvoření více instancí zálohování pro jeden cluster AKS pomocí různých konfigurací zálohování na instanci zálohování. Každá instance zálohování clusteru AKS by se ale měla vytvořit buď v jiném trezoru služby Backup, nebo pomocí samostatných zásad zálohování ve stejném trezoru služby Backup.
Správa zálohování
Po dokončení konfigurace zálohování clusteru AKS se v trezoru služby Backup vytvoří instance zálohování. Instanci zálohování pro cluster můžete zobrazit v části Zálohování instance AKS na webu Azure Portal. Pro instanci můžete provádět jakékoli operace související se zálohováním, například inicializování obnovení, monitorování, zastavení ochrany atd. prostřednictvím příslušné instance zálohování.
Zálohování AKS se také integruje přímo s centrem zálohování, které vám pomůže spravovat ochranu všech clusterů AKS a dalších úloh podporovaných zálohováním centrálně. Centrum zálohování je jedno zobrazení pro všechny požadavky na zálohování, jako je monitorování úloh a stav záloh a obnovení. Centrum zálohování pomáhá zajistit dodržování předpisů a zásad správného řízení, analyzovat využití zálohování a provádět důležité operace pro zálohování a obnovení dat.
Zálohování AKS používá spravovanou identitu pro přístup k dalším prostředkům Azure. Ke konfiguraci zálohování clusteru AKS a k obnovení ze starší zálohy vyžaduje spravovaná identita trezoru služby Backup sadu oprávnění ke clusteru AKS a skupině prostředků snímků, ve které se vytvářejí a spravují snímky. Cluster AKS v současné době vyžaduje sadu oprávnění pro skupinu prostředků snímku. Rozšíření Backup také vytvoří identitu uživatele a přiřadí sadu oprávnění pro přístup k účtu úložiště, kde se zálohy ukládají v objektu blob. Oprávnění ke spravované identitě můžete udělit pomocí řízení přístupu na základě role v Azure (Azure RBAC). Spravovaná identita je speciální typ instančního objektu, který lze použít pouze s prostředky Azure. Přečtěte si další informace o spravovaných identitách.
Obnovení ze zálohy
Data můžete obnovit z libovolného bodu v čase, pro který existuje bod obnovení. Bod obnovení se vytvoří, když je instance zálohy v chráněném stavu a dá se použít k obnovení dat, dokud je zásady zálohování nezachovají.
Azure Backup nabízí možnost obnovit všechny zálohované položky nebo použít podrobné ovládací prvky k výběru konkrétních položek ze záloh výběrem oborů názvů a dalších možností filtru. Obnovení můžete provést také v původním clusteru AKS (clusteru, který je zálohovaný) nebo v alternativním clusteru AKS. Zálohy uložené v provozní úrovni a vrstvě trezoru můžete obnovit do clusteru ve stejném a jiném předplatném. K obnovení do clusteru v jiné oblasti (spárované oblasti Azure) je možné použít pouze zálohy uložené ve vrstvě trezoru.
Pokud chcete obnovit zálohu uloženou ve vrstvě trezoru, musíte zadat pracovní umístění, kde jsou zálohovaná data hydratovaná. Toto pracovní umístění zahrnuje skupinu prostředků a účet úložiště ve stejné oblasti a předplatné jako cílový cluster pro obnovení. Během obnovení se v rámci hydrace vytvoří konkrétní prostředky (kontejner objektů blob, disk a snímky disků), které se po dokončení operace obnovení vymažou.
Azure Backup pro AKS v současné době podporuje následující dvě možnosti při operaci obnovení, když dojde ke střetu prostředků (zálohovaný prostředek má stejný název jako prostředek v cílovém clusteru AKS). Při definování konfigurace obnovení můžete zvolit jednu z těchto možností.
Přeskočit: Tato možnost je ve výchozím nastavení vybraná. Pokud jste například zálohovali PVC s názvem pvc-azuredisk a obnovujete ho v cílovém clusteru se stejným názvem, rozšíření zálohování přeskočí obnovení zálohované trvalé deklarace svazku (PVC). V takových scénářích doporučujeme odstranit prostředek z clusteru a pak provést operaci obnovení, aby zálohované položky byly dostupné jenom v clusteru a nepřeskočily se.
Oprava: Tato možnost umožňuje měnitelnou proměnnou oprav v zálohovaných prostředcích na prostředku v cílovém clusteru. Pokud chcete aktualizovat počet replik v cílovém clusteru, můžete se rozhodnout pro opravu jako operaci.
Poznámka:
Zálohování AKS v současné době neodstraní a znovu vytvoří prostředky v cílovém clusteru, pokud už existují. Pokud se pokusíte obnovit trvalé svazky v původním umístění, odstraňte existující trvalé svazky a pak proveďte operaci obnovení.
Použití vlastních háků pro zálohování a obnovení
Pomocí vlastních háků můžete pořizovat snímky svazků konzistentních vzhledem k aplikacím, které se používají pro databáze nasazené jako kontejnerizované úlohy.
Co jsou vlastní háky?
Pomocí zálohování AKS můžete spouštět vlastní háky jako součást operace zálohování a obnovení. Háky jsou příkazy, které jsou nakonfigurované tak, aby spouštěly jeden nebo více příkazů, které se mají spouštět v podu v kontejneru během operace zálohování nebo po obnovení. Tyto hooky definujete jako vlastní prostředek a nasadíte je v clusteru AKS, který chcete zálohovat nebo obnovit. Když je vlastní prostředek nasazený v clusteru AKS v požadovaném oboru názvů, zadáte podrobnosti jako vstup pro tok pro konfiguraci zálohování a obnovení. Rozšíření Backup spouští háky definované v souboru YAML.
Poznámka:
Háky se nespouštějí v prostředí kontejnerů.
Zálohování v AKS má dva typy háků:
- Zálohovací háky
- Obnovení háků
Zálohovací háky
V zaháku zálohování můžete nakonfigurovat příkazy pro spuštění háku před jakýmkoli vlastním zpracováním akcí (předhozky) nebo po dokončení všech vlastních akcí a všechny další položky určené vlastními akcemi se zálohují (post-hooky).
Tady je například šablona YAML pro vlastní prostředek, který se má nasadit pomocí háků zálohování:
apiVersion: clusterbackup.dataprotection.microsoft.com/v1alpha1
kind: BackupHook
metadata:
# BackupHook CR Name and Namespace
name: bkphookname0
namespace: default
spec:
# BackupHook is a list of hooks to execute before and after backing up a resource.
backupHook:
# BackupHook Name. This is the name of the hook that will be executed during backup.
# compulsory
- name: hook1
# Namespaces where this hook will be executed.
includedNamespaces:
- hrweb
excludedNamespaces:
labelSelector:
# PreHooks is a list of BackupResourceHooks to execute prior to backing up an item.
preHooks:
- exec:
# Container is the container in the pod where the command should be executed.
container: webcontainer
# Command is the command and arguments to execute.
command:
- /bin/uname
- -a
# OnError specifies how Velero should behave if it encounters an error executing this hook
onError: Continue
# Timeout is the amount of time to wait for the hook to complete before considering it failed.
timeout: 10s
- exec:
command:
- /bin/bash
- -c
- echo hello > hello.txt && echo goodbye > goodbye.txt
container: webcontainer
onError: Continue
# PostHooks is a list of BackupResourceHooks to execute after backing up an item.
postHooks:
- exec:
container: webcontainer
command:
- /bin/uname
- -a
onError: Continue
timeout: 10s
Obnovení háků
Ve skriptu pro obnovení háku se vlastní příkazy nebo skripty zapisují tak, aby se spouštěly v kontejnerech obnoveného podu AKS.
Tady je šablona YAML pro vlastní prostředek, který se má nasadit pomocí háků pro obnovení:
apiVersion: clusterbackup.dataprotection.microsoft.com/v1alpha1
kind: RestoreHook
metadata:
name: restorehookname0
namespace: default
spec:
# RestoreHook is a list of hooks to execute after restoring a resource.
restoreHook:
# Name is the name of this hook.
- name: myhook-1
# Restored Namespaces where this hook will be executed.
includedNamespaces:
excludedNamespaces:
labelSelector:
# PostHooks is a list of RestoreResourceHooks to execute during and after restoring a resource.
postHooks:
- exec:
# Container is the container in the pod where the command should be executed.
container: webcontainer
# Command is the command and arguments to execute from within a container after a pod has been restored.
command:
- /bin/bash
- -c
- echo hello > hello.txt && echo goodbye > goodbye.txt
# OnError specifies how Velero should behave if it encounters an error executing this hook
# default value is Continue
onError: Continue
# Timeout is the amount of time to wait for the hook to complete before considering it failed.
execTimeout: 30s
# WaitTimeout defines the maximum amount of time Velero should wait for the container to be ready before attempting to run the command.
waitTimeout: 5m
Naučte se používat hooky během zálohování AKS.
Poznámka:
- Během obnovení rozšíření zálohování čeká, až se kontejner objeví, a pak na nich spustí příkazy exec definované v hácích obnovení.
- V případě, že provádíte obnovení do stejného oboru názvů, který byl zálohován, se volání obnovení nespustí, protože hledá pouze nový kontejner, který se vytvoří. To je bez ohledu na to, jestli jsou zásady přeskočení nebo opravy výslovné.
Úprava prostředku při obnovování záloh do clusteru AKS
Funkci Úpravy prostředků můžete použít k úpravě zálohovaných prostředků Kubernetes během obnovení zadáním oprav configmap
JSON nasazených v clusteru AKS.
Vytvoření a použití konfigurační mapy modifikátoru prostředků během obnovení
Pokud chcete vytvořit a použít úpravu prostředku, postupujte takto:
Vytvoření konfigurační mapy modifikátorů prostředků
Potřebujete vytvořit jednu mapu konfigurace v upřednostňovaném oboru názvů ze souboru YAML , který definoval modifikátory prostředků.
Příklad pro vytvoření příkazu:
version: v1 resourceModifierRules: - conditions: groupResource: persistentvolumeclaims resourceNameRegex: "^mysql.*$" namespaces: - bar - foo labelSelector: matchLabels: foo: bar patches: - operation: replace path: "/spec/storageClassName" value: "premium" - operation: remove path: "/metadata/labels/test"
- Výše uvedená mapa configmap použije opravu JSON na všechny trvalé kopie svazků na panelu oborů názvů a foo s názvem, který začíná
mysql
na amatch label foo: bar
. Oprava JSON nahradístorageClassName
premium
a odebere popisektest
z trvalých kopií svazku. - Obor názvů je původní obor názvů zálohovaného prostředku, nikoli nový obor názvů, ve kterém se prostředek obnoví.
- Pro konkrétní prostředek můžete zadat několik oprav JSON. Opravy se použijí podle pořadí zadaného v konfigurační mapě. Následná oprava se použije v pořadí. Pokud je pro stejnou cestu zadáno více oprav, přepíše poslední oprava předchozí opravy.
- V objektu configmap můžete zadat více
resourceModifierRules
. Pravidla se použijí podle pořadí zadaného v konfigurační mapě.
- Výše uvedená mapa configmap použije opravu JSON na všechny trvalé kopie svazků na panelu oborů názvů a foo s názvem, který začíná
Vytvoření odkazu modifikátoru prostředků v konfiguraci obnovení
Při provádění operace obnovení zadejte název ConfigMap a obor názvů , kde je nasazen jako součást konfigurace obnovení. Tyto podrobnosti je potřeba zadat v rámci pravidel modifikátoru prostředků.
Operace podporované modifikátorem prostředků
Přidat
Operaci Přidat můžete použít k přidání nového bloku do kódu JSON prostředku. V následujícím příkladu operace přidá do specifikace s nasazením nové podrobnosti kontejneru.
version: v1 resourceModifierRules: - conditions: groupResource: deployments.apps resourceNameRegex: "^test-.*$" namespaces: - bar - foo patches: # Dealing with complex values by escaping the yaml - operation: add path: "/spec/template/spec/containers/0" value: "{\"name\": \"nginx\", \"image\": \"nginx:1.14.2\", \"ports\": [{\"containerPort\": 80}]}"
Odebrat
Operaci Odebrat můžete použít k odebrání klíče z json prostředku. V následujícím příkladu operace odebere popisek s testem jako klíčem.
version: v1 resourceModifierRules: - conditions: groupResource: persistentvolumeclaims resourceNameRegex: "^mysql.*$" namespaces: - bar - foo labelSelector: matchLabels: foo: bar patches: - operation: remove path: "/metadata/labels/test"
Nahradit
Operaci Nahradit můžete použít k nahrazení hodnoty cesty uvedené na alternativní cestě. V následujícím příkladu operace nahradí storageClassName v trvalé deklaraci identity svazku premium.
version: v1 resourceModifierRules: - conditions: groupResource: persistentvolumeclaims resourceNameRegex: "^mysql.*$" namespaces: - bar - foo labelSelector: matchLabels: foo: bar patches: - operation: replace path: "/spec/storageClassName" value: "premium"
Kopírování
Pomocí operace kopírování můžete zkopírovat hodnotu z jedné cesty z prostředků definovaných do jiné cesty.
version: v1 resourceModifierRules: - conditions: groupResource: deployments.apps resourceNameRegex: "^test-.*$" namespaces: - bar - foo patches: - operation: copy from: "/spec/template/spec/containers/0" path: "/spec/template/spec/containers/1"
Testování
Pomocí operace Testování můžete zkontrolovat, jestli v prostředku existuje určitá hodnota. Pokud je hodnota k dispozici, použije se oprava. Pokud hodnota není k dispozici, oprava se nepoužije. V následujícím příkladu operace zkontroluje, jestli trvalé deklarace identity svazku mají premium jako StorageClassName, a pokud je true, nahradí se standardem.
version: v1 resourceModifierRules: - conditions: groupResource: persistentvolumeclaims resourceNameRegex: ".*" namespaces: - bar - foo patches: - operation: test path: "/spec/storageClassName" value: "premium" - operation: replace path: "/spec/storageClassName" value: "standard"
Oprava JSON
Tato mapa konfigurace použije opravu JSON pro všechna nasazení v oborech názvů ve výchozím nastavení a nginx nginxdep
with the name that starts with
. Oprava JSON aktualizuje počet replik na 12 pro všechna taková nasazení.version: v1 resourceModifierRules: - conditions: groupResource: deployments.apps resourceNameRegex: "^nginxdep.*$" namespaces: - default - nginx patches: - operation: replace path: "/spec/replicas" value: "12"
Oprava sloučení JSON
Toto mapování konfigurace použije opravu sloučení JSON pro všechna nasazení ve výchozím nastavení oborů názvů a nginx s názvem začínajícím na nginxdep. Oprava sloučení JSON přidá nebo aktualizuje popisek "app" hodnotou "nginx1".
version: v1 resourceModifierRules: - conditions: groupResource: deployments.apps resourceNameRegex: "^nginxdep.*$" namespaces: - default - nginx mergePatches: - patchData: | { "metadata" : { "labels" : { "app" : "nginx1" } } }
Strategická oprava sloučení
Toto mapování konfigurace použije opravu strategického sloučení u všech podů ve výchozím nastavení oboru názvů s názvem začínajícím na nginx. Strategická oprava sloučení aktualizuje image kontejneru nginx na mcr.microsoft.com/cbl-mariner/base/nginx:1.22
version: v1 resourceModifierRules: - conditions: groupResource: pods resourceNameRegex: "^nginx.*$" namespaces: - default strategicPatches: - patchData: | { "spec": { "containers": [ { "name": "nginx", "image": "mcr.microsoft.com/cbl-mariner/base/nginx:1.22" } ] } }
Která úroveň úložiště zálohování podporuje zálohování AKS?
Azure Backup pro AKS podporuje dvě úrovně úložiště jako úložiště dat záloh:
Provozní úroveň: Rozšíření zálohování nainstalované v clusteru AKS nejprve provede zálohování pořízením snímků svazků prostřednictvím ovladače CSI a uloží stav clusteru do kontejneru objektů blob ve vašem vlastním tenantovi. Tato úroveň podporuje nižší cíl bodu obnovení s minimální dobou trvání mezi dvěma zálohami čtyř hodin. Pro svazky založené na discích Azure navíc provozní úroveň podporuje rychlejší obnovení.
Úroveň trezoru: Pokud chcete ukládat zálohovaná data po delší dobu s nižšími náklady než snímky, zálohování AKS podporuje úložiště dat úrovně Vault úrovně Standard. Podle pravidel uchovávání informací nastavených v zásadách zálohování se první úspěšná záloha (den, týden, měsíc nebo rok) přesune do kontejneru objektů blob mimo vašeho tenanta. Toto úložiště dat umožňuje nejen delší uchovávání dat, ale také poskytuje ochranu proti ransomwaru. Zálohy uložené v trezoru můžete také přesunout do jiné oblasti (spárovaná oblast Azure) pro obnovení povolením geografické redundance a obnovení mezi oblastmi v trezoru záloh.
Poznámka:
Zálohovaná data můžete uložit ve standardním úložišti dat trezoru pomocí zásad zálohování definováním pravidel uchovávání informací. Do úrovně trezoru se přesune jenom jeden naplánovaný bod obnovení za den. Podle vybraného pravidla ale můžete do trezoru přesunout libovolný počet záloh na vyžádání.
Vysvětlení cen
Účtují se vám poplatky za:
Poplatek za chráněné instance: Azure Backup pro AKS účtuje poplatek za chráněnou instanci za obor názvů za měsíc. Když nakonfigurujete zálohování pro cluster AKS, vytvoří se chráněná instance. Každá instance má určitý počet oborů názvů, které se zálohují podle definice v konfiguraci zálohování. Další informace o cenách zálohování AKS najdete v tématu Ceny cloudového zálohování a jako úlohu vyberte Azure Kubernetes Service.
Poplatek za snímek: Azure Backup pro AKS chrání trvalý svazek založený na disku pořízením snímků uložených ve skupině prostředků ve vašem předplatném Azure. Za tyto snímky se účtují poplatky za úložiště snímků. Vzhledem k tomu, že se snímky nekopírují do trezoru služby Backup, neplatí náklady na úložiště zálohování. Další informace o cenách snímků najdete v tématu Ceny spravovaných disků.
Poplatek za úložiště zálohování: Azure Backup pro AKS také podporuje ukládání záloh ve vrstvě trezoru. Toho lze dosáhnout definováním pravidel uchovávání pro standard trezoru v zásadách zálohování, přičemž jeden bod obnovení za den může být přesunut do trezoru. Body obnovení uložené ve vrstvě trezoru se účtují jako samostatný poplatek, který se označuje jako poplatek za úložiště zálohování podle celkového počtu uložených dat (v GB) a typu redundance povoleného ve službě Backup Vault.