Kasten k10 多云适配系列 08 - 利用 Kasten K10 保护 VMware Tanzu TKG 云原生应用
[toc]
1. 背景
Build!Run!Manage!
正如 VMware Tanzu
产品组合中所映射的那样,基于 Kubernetes
架构而构建的云原生应用正在影响着企业软件开发和运营的每一个过程。 不仅如此,企业在构建云原生应用程序的同时,企业的 SRE 小组还要践行 Day 2 Operation
。简单讲 Day-2 Operation
是系统为组织产生结果的地方。因此,要不断寻求 Day-2 Opeation
的改进,以实现效益最大化,而基于云原生的数据管理就是 Day-2 Opeation
的重要组成部分。Kasten 与 VMware 的合作使企业的 IT 和 DevOps 团队能够立即实现云原生数据管理功能的优势,例如,灾备、和迁移,这不仅与数据安全性有关,还将缩短产品研发周期、提高基础设施利用率和运营效率。这篇文章将探讨了如何利用 Kasten K10 保护 VMware Tanzu Kubernetes Grid (TKG) 云原生应用程序,让我们开始吧!
2. Kasten 与 VMware Tanzu TKG
2.1. Kasten 与 VMware Tanzu TKG 介绍
Kasten K10 是 Veeam 在 Kubernetes 平台的数据管理解决方案,通过部署 Kasten K10 企业可以安全地备份和还原、执行灾难恢复以及迁移云原生的应用。Kubernetes 集群资源和持久卷等存储资源。解决用户备份、灾难恢复、迁移过程中的数据管理问题,提高云原生环境数据管理的便捷性,帮助用户降低灾备成本,提高生产执行效率。
Tanzu Kubernetes 集群是由 VMware 构建、签名和支持的开源 Kubernetes 容器编排平台的完整分发版。可以通过使用 Tanzu Kubernetes Grid 服务在主管集群上置备和运行 Tanzu Kubernetes 集群。主管集群是启用了 vSphere with Tanzu 的 vSphere 集群。
2.2. 使用 Kasten K10 和 VMware 解决数据管理问题
Kasten K10 数据管理软件平台专为 Kubernetes 打造。作为数据管理的 VMware 设计合作伙伴,K10 可以与 vSphere 跨 TKG 和其他 Kubernetes 发行版无缝部署。K10 以应用程序为中心的方法以及与关系数据库和 NoSQL 数据库以及包括 VMware Cloud Native Storage (CNS) 在内的存储系统的深度集成为您的整个 Kubernetes 应用程序提供备份/恢复和移动性。K10 以操作简单为核心宗旨,让Kubernetes 应用移动和备份变得像 1-2-3 一样简单。
这种合作伙伴关系提供了最佳解决方案,可在 vSphere 环境中的 Kubernetes上无缝扩展和操作您的云原生应用程序。Kasten 以应用程序为中心的方法提供了 IT 和运营团队操作云原生应用程序所需的简单性和可移植性,这些应用程序在后台使用多个数据服务并部署在多个集群、区域或云中。
3. 验证目标
在本次验证场景中,我们将借助 VMware Tanzu TKG Demo Appliance
与 Kasten K10
实现云原生应用的数据保护。
- 部署 Tanzu TKG Cluster
- 创建 Workload Cluster
- 安装 Kasten K10 到 workload cluster
- 创建 云原生应用
利用 K10 对存储 CNS API 进行调用生成快照,达成最快速的 RPO 与 RTO的备份与恢复
利用 S3 对象存储,将快照数据导出到对象存储桶上,实现了异地容灾与数据长期保留
4. 部署 Tanzu TKG Cluster with a Demo Appliance
4.1. 为什么要从 Demo Appliance 开始?
基于来自 Veeam Partner 的反馈,大多数在云原生平台上工作的人,包括管理员、架构师、开发人员、平台运营商等,很难获得 VMware Tanzu TKG 的体验机会。他们的挑战涵盖但不限于下载软件、许可软件以及配置软件运行所需的资源。
Tanzu Demo Appliance 预先捆绑了部分所依赖的资源项,以帮助客户在 VMware Cloud on AWS 或 vSphere 环境上运行的独立 Tanzu Kubernetes Grid (TKG) 集群,可以非常方便的用于学习、测试、开发和搭建预生产环境等目的。
4.2. 部署 TKG Demo Appliance
要部署 TGK Demo Appliance 可以遵从如下文档,将其部署至自己适合的环境。
TGK Demo Appliance 安装前的准备
https://hackmd.io/rHOUvdS3QsGlhCpGRU-hOQ
TGK Demo Appliance Workshop Guide
https://hackmd.io/EbTCJhsWRLObk28okTgkuQ
部署之后,连接虚拟机将有如下显示
4.3. 用 Tanzu CLI 部署 TKG Management Cluster
我们需要建立管理集群 (Management Cluster) 与工作负载集群(Workload Cluster)
在创建 Tanzu Kubernetes Grid 实例时,我们首先要部署管理集群 Management Cluster
它承担 TKG 实例的主要管理和运营中心的角色。
在这里,我们可以创建 Workload Cluster
集群和配置集群服务。
The TKG Demo Appliance 默认包括如下 YAML files:
For On-Premises vSphere envionrment
- vsphere-tkg-mgmt-template.yaml
- vsphere-tkg-workload-1-template.yaml
- vsphere-tkg-workload-2-template.yaml
4.3.1. 创建管理集群 Management Cluster
您可以根据环境编辑配置相应的 TKG 管理和工作负载集群模板,并使用 VMC vCenter Server 的内部 IP 地址(例如 10.10.1.18)和具有 cloudadmin@vmc.local 帐户凭据的VSPHERE_PASSWORD
变量更新VSPHERE_SERVER
变量。您还需要更新VSPHERE_SSH_AUTHORIZED_KEY
变量等。在此示例中,将用于管理控制平面以部署 K8s 管理群集的虚拟 IP 地址将是10.10.2.2
,可以通过更新 VSPHERE_CONTROL_PLANE_ENDPOINT
变量来更改以下创建集群的命令与示例
执行以下命令建立管理集群
$ tanzu management-cluster create -f vmc-tkg-mgmt-template-mars.yaml -v2
创建管理集群的 yaml 示例
#! ---------------------------------------------------------------------
#! Basic cluster creation configuration
#! ---------------------------------------------------------------------
CLUSTER_NAME: tkg-mgmt-mars
CLUSTER_PLAN: dev
INFRASTRUCTURE_PROVIDER: vsphere
ENABLE_CEIP_PARTICIPATION: "true"
# TMC_REGISTRATION_URL:
ENABLE_AUDIT_LOGGING: true
CLUSTER_CIDR: 100.96.0.0/11
SERVICE_CIDR: 100.64.0.0/13
#! ---------------------------------------------------------------------
#! vSphere configuration
#! ---------------------------------------------------------------------
VSPHERE_SERVER: 10.10.1.18
VSPHERE_PASSWORD: *********
VSPHERE_USERNAME: cloudadmin@vmc.local
VSPHERE_DATACENTER: /demolab
VSPHERE_RESOURCE_POOL: /demolab/host/demolab-Cluster/Resources/TKG
VSPHERE_DATASTORE: /demolab/datastore/WorkloadDatastore
VSPHERE_FOLDER: /demolab/vm/TKG
VSPHERE_NETWORK: tkg-network
VSPHERE_CONTROL_PLANE_ENDPOINT: 10.10.2.2
VSPHERE_SSH_AUTHORIZED_KEY: ssh-rsa KEY-TOO-LONG root@tkg.demolab.local
VSPHERE_INSECURE: true
DEPLOY_TKG_ON_VSPHERE7: true
ENABLE_TKGS_ON_VSPHERE7: false
#! ---------------------------------------------------------------------
#! Node configuration
#! ---------------------------------------------------------------------
VSPHERE_CONTROL_PLANE_DISK_GIB: "20"
VSPHERE_CONTROL_PLANE_MEM_MIB: "8192"
VSPHERE_CONTROL_PLANE_NUM_CPUS: "4"
VSPHERE_WORKER_DISK_GIB: "20"
VSPHERE_WORKER_MEM_MIB: "8192"
VSPHERE_WORKER_NUM_CPUS: "4"
<truncated...>
4.3.2. 创建管理集群 Wokload Cluster
在此示例中,将用于管理控制平面以部署 K8s 工作负载群集的名为 tkg-cluster-01
的虚拟 IP 地址将为 10.10.2.3
,可以通过更新 VSPHERE_CONTROL_PLANE_ENDPOINT
变量进行更改。默认情况下,这将部署最新版本的 K8s。
# cat vsphere-tkg-workload-1-template-mars.yaml
#! ---------------------------------------------------------------------
#! Basic cluster creation configuration
#! ---------------------------------------------------------------------
CLUSTER_NAME: tkg-cluster-01
CLUSTER_PLAN: dev
INFRASTRUCTURE_PROVIDER: vsphere
ENABLE_CEIP_PARTICIPATION: "true"
# TMC_REGISTRATION_URL:
ENABLE_AUDIT_LOGGING: true
CLUSTER_CIDR: 100.96.0.0/11
SERVICE_CIDR: 100.64.0.0/13
#! ---------------------------------------------------------------------
#! vSphere configuration
#! ---------------------------------------------------------------------
VSPHERE_SERVER: 10.10.1.18
VSPHERE_PASSWORD: *********
VSPHERE_USERNAME: administrator@demo.local
VSPHERE_DATACENTER: /demolab
VSPHERE_RESOURCE_POOL: /demolab/host/demolab-Cluster/Resources/TKG
VSPHERE_DATASTORE: /demolab/datastore/WorkloadDatastore
VSPHERE_FOLDER: /demolab/vm/TKG
VSPHERE_NETWORK: tkg-network
VSPHERE_CONTROL_PLANE_ENDPOINT: 10.10.2.3
VSPHERE_SSH_AUTHORIZED_KEY: ssh-rsa KEY-TOO-LONG root@tkg.demolab.local
VSPHERE_INSECURE: true
DEPLOY_TKG_ON_VSPHERE7: true
ENABLE_TKGS_ON_VSPHERE7: false
#! ---------------------------------------------------------------------
#! Node configuration
#! ---------------------------------------------------------------------
VSPHERE_CONTROL_PLANE_DISK_GIB: "20"
VSPHERE_CONTROL_PLANE_MEM_MIB: "8192"
VSPHERE_CONTROL_PLANE_NUM_CPUS: "4"
VSPHERE_WORKER_DISK_GIB: "20"
VSPHERE_WORKER_MEM_MIB: "8192"
VSPHERE_WORKER_NUM_CPUS: "4"
<truncated...>
运行以下命令以创建 TKG Workload Cluster:
$ tanzu cluster create -f vmc-tkg-workload-1-template.yaml
Validating configuration...
Warning: Pinniped configuration not found. Skipping pinniped configuration in workload cluster. Please refer to the documentation to check if you can configure pinniped on workload cluster manually
Creating workload cluster 'tkg-cluster-01'...
Waiting for cluster to be initialized...
Waiting for cluster nodes to be available...
Waiting for addons installation...
Workload cluster 'tkg-cluster-01' created
TKG 群集启动并运行后,我们需要先检索凭据,运行以下命令,直到可以正常检索集群内的信息:
$ tanzu cluster kubeconfig get --admin tkg-cluster-01
Credentials of workload cluster 'tkg-cluster-01' have been saved
You can now access the cluster by running 'kubectl config use-context tkg-cluster-01-admin@tkg-cluster-01'
To switch context to our newly provisioned TKG Cluster, run the following command which will be based on the name of the cluster:
$ k config get-contexts
CURRENT NAME CLUSTER AUTHINFO NAMESPACE
* tkg-cluster-01-admin@tkg-cluster-01 tkg-cluster-01 tkg-cluster-01-admin
tkg-mgmt-mars-admin@tkg-mgmt-mars tkg-mgmt-mars tkg-mgmt-mars-admin
$ k config use-context tkg-cluster-01-admin@tkg-cluster-01
$ k get ns
NAME STATUS AGE
default Active 1m
kube-node-lease Active 1m
kube-public Active 1m
kube-system Active 1m
tkg-system Active 1m
tkg-system-public Active 1m
5. 安装 Kasten K10 到 Workload cluster
5.1 就绪检查 Pre-Flight Checks
通过 Pre-Flight Checks 脚本,我们可以验证部署的前提条件是否满足
$ curl https://kasten-1257130361.cos.ap-chengdu.myqcloud.com/k10_primer.sh | bash
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 6081 100 6081 0 0 9144 0 --:--:-Namespace option not provided, using default namespace
- --:--:-- --:--:-- 9144
Checking for tools
--> Found kubectl
--> Found helm
Checking if the Kasten Helm repo is present
--> The Kasten Helm repo was found
Checking for required Helm version (>= v3.0.0)
--> No Tiller needed with Helm v3.6.0
K10Primer image
--> Using Image (ccr.ccs.tencentyun.com/kasten/k10tools:4.5.10) to run test
Checking access to the Kubernetes context tkg-cluster-01-admin@tkg-cluster-01
--> Able to access the default Kubernetes namespace
Running K10Primer Job in cluster with command-
./k10tools primer
serviceaccount/k10-primer created
clusterrolebinding.rbac.authorization.k8s.io/k10-primer created
job.batch/k10primer created
Waiting for pod k10primer-rx6ln to be ready - ContainerCreating
Pod Ready!
Kubernetes Version Check:
Valid kubernetes version (v1.20.5+vmware.2) - OK
RBAC Check:
Kubernetes RBAC is enabled - OK
Aggregated Layer Check:
The Kubernetes Aggregated Layer is enabled - OK
W0309 14:24:45.749065 8 warnings.go:70] storage.k8s.io/v1beta1 CSIDriver is deprecated in v1.19+, unavailable in v1.22+; use storage.k8s.io/v1 CSIDriver
CSI Capabilities Check:
VolumeSnapshot CRD-based APIs are not installed - Error
Validating Provisioners:
csi.vsphere.vmware.com:
Storage Classes:
default
K10 supports the vSphere CSI driver natively. Creation of a K10 infrastucture profile is required.
Valid Storage Class - OK
vsan-csi
K10 supports the vSphere CSI driver natively. Creation of a K10 infrastucture profile is required.
Valid Storage Class - OK
Validate Generic Volume Snapshot:
Pod Created successfully - OK
GVS Backup command executed successfully - OK
Pod deleted successfully - OK
serviceaccount "k10-primer" deleted
clusterrolebinding.rbac.authorization.k8s.io "k10-primer" deleted
job.batch "k10primer" deleted
5.2 安装 Kasten-io
- 获取 Helm Chart 供本地使用
添加 Kasten Helm charts 存储库 $ helm repo add kasten https://charts.kasten.io/
$ helm repo list
NAME URL ls
kasten https://charts.kasten.io/
$ helm repo update
以下这条命令会把 k10-4.0.x.tgz 包下载下来,如果不加任何参数,则会下载最新的版本
在Air Gapped 的环境中安装时,可以先行下载再使用。
$ helm fetch kasten/k10 --version=4.5.4
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "kasten" chart repository
Update Complete. ⎈Happy Helming!⎈
2. 建立名空间
```yaml
$ kubectl create ns kasten-io
namespace/kasten-io created
$ helm fetch kasten/k10 --version=4.5.4
- 安装 Kasten K10
# 查看存储类
$ kubectl get sc
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
default (default) csi.vsphere.vmware.com Delete Immediate true 8d
vsan-csi csi.vsphere.vmware.com Delete Immediate false 8d
#
$ helm install k10 k10-4.5.4.tgz --namespace kasten-io --set global.airgapped.repository=ccr.ccs.tencentyun.com/kasten-k10 \
--set auth.tokenAuth.enabled=true \
--set metering.mode=airgap \
--set global.persistence.storageClass=default
$ kubectl get po -n kasten-io
NAME READY STATUS RESTARTS AGE
aggregatedapis-svc-c9d8d45-4bsp2 1/1 Running 0 12m
auth-svc-7887459498-gll5c 1/1 Running 0 12m
catalog-svc-5f85f46c5b-7jmf8 2/2 Running 0 12m
config-svc-5778964469-gl5s9 1/1 Running 1 12m
crypto-svc-687b4678f7-4cs7s 2/2 Running 0 12m
dashboardbff-svc-66785d9dbb-tz8mn 1/1 Running 11 12m
executor-svc-79c75d7fbf-hcvlk 2/2 Running 0 12m
executor-svc-79c75d7fbf-tfv68 2/2 Running 0 12m
executor-svc-79c75d7fbf-tp5pf 2/2 Running 0 12m
frontend-svc-d4494f7c6-c5f9v 1/1 Running 0 12m
gateway-6b8cb9f84d-4kkjm 1/1 Running 2 12m
jobs-svc-cd7499cc8-zpmt2 1/1 Running 0 12m
k10-grafana-8464f566bd-2pd2v 1/1 Running 0 12m
kanister-svc-7dcdcdbdb7-6hmbw 1/1 Running 0 12m
logging-svc-84cf4b4cbf-lrs5h 1/1 Running 1 12m
metering-svc-7b74f597d7-hk2pf 1/1 Running 1 12m
prometheus-server-fc8fb9bb7-glktg 2/2 Running 0 12m
state-svc-f646c68dd-9gmq4 1/1 Running 0 12m
5.3 登录 Kasten UI
查看 Kasten 的服务
$ kubectl get svc -n kasten-io
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
aggregatedapis-svc ClusterIP 100.64.9.166 <none> 443/TCP 14m
auth-svc ClusterIP 100.69.27.196 <none> 8000/TCP 14m
catalog-svc ClusterIP 100.68.136.174 <none> 8000/TCP 14m
config-svc ClusterIP 100.69.155.26 <none> 8000/TCP,443/TCP 14m
crypto-svc ClusterIP 100.68.233.16 <none> 8000/TCP,8001/TCP 14m
dashboardbff-svc ClusterIP 100.64.120.212 <none> 8000/TCP 14m
executor-svc ClusterIP 100.67.122.139 <none> 8000/TCP 14m
frontend-svc ClusterIP 100.70.72.16 <none> 8000/TCP 14m
gateway ClusterIP 100.70.140.97 <none> 8000/TCP 14m
gateway-admin ClusterIP 100.64.104.45 <none> 8877/TCP 14m
jobs-svc ClusterIP 100.71.36.220 <none> 8000/TCP 14m
k10-grafana ClusterIP 100.66.119.187 <none> 80/TCP 14m
kanister-svc ClusterIP 100.66.170.60 <none> 8000/TCP 14m
logging-svc ClusterIP 100.67.127.211 <none> 8000/TCP,24224/TCP,24225/TCP 14m
metering-svc ClusterIP 100.70.38.115 <none> 8000/TCP 14m
prometheus-server ClusterIP 100.71.46.21 <none> 80/TCP 14m
prometheus-server-exp ClusterIP 100.71.117.84 <none> 80/TCP 14m
state-svc ClusterIP 100.70.12.175 <none> 8000/TCP 14m
$ $ kubectl expose service gateway -n kasten-io --type=NodePort --name=gateway-nodeport
service/gateway-nodeport exposed
查看 登录中的 IP
$ kubectl get svc -n kasten-io
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
<truncated...>
gateway-nodeport NodePort 100.67.123.119 <none> 8000:32099/TCP 11s
<truncated...>
浏览器访问如下地址
http:// 10.10.2.238:32099/k10/#/
在终端输入如下命令获取 Token
$ sa_secret=$(kubectl get serviceaccount k10-k10 -o jsonpath="{.secrets[0].name}" --namespace kasten-io) && \
kubectl get secret $sa_secret --namespace kasten-io -ojsonpath="{.data.token}{'\n'}" | base64 --decode
登录后的UI
5.4. 使用 octant 查看 Kasten 部署情况
在 控制台输入 octant
, 等特下方出现 Dashboard is available at http://127.0.0.1:7777
$ octant
2022-03-09T14:51:42.543Z INFO dash/watcher.go:117 watching config file {"component": "config-watcher", "config": "/root/.kube/config"}
2022-03-09T14:51:42.550Z INFO module/manager.go:87 registering action {"component": "module-manager", "actionPath": "action.octant.dev/containerEditor", "module-name": "overview"}
2022-03-09T14:51:42.550Z INFO module/manager.go:87 registering action {"component": "module-manager", "actionPath": "action.octant.dev/serviceEditor", "module-name": "overview"}
2022-03-09T14:51:42.551Z INFO module/manager.go:87 registering action {"component": "module-manager", "actionPath": "action.octant.dev/deploymentConfiguration", "module-name": "overview"}
2022-03-09T14:51:42.551Z INFO module/manager.go:87 registering action {"component": "module-manager", "actionPath": "overview/stopPortForward", "module-name": "overview"}
2022-03-09T14:51:42.551Z INFO module/manager.go:87 registering action {"component": "module-manager", "actionPath": "action.octant.dev/cordon", "module-name": "overview"}
2022-03-09T14:51:42.551Z INFO module/manager.go:87 registering action {"component": "module-manager", "actionPath": "action.octant.dev/uncordon", "module-name": "overview"}
2022-03-09T14:51:42.551Z INFO module/manager.go:87 registering action {"component": "module-manager", "actionPath": "action.octant.dev/cronJob", "module-name": "overview"}
2022-03-09T14:51:42.551Z INFO module/manager.go:87 registering action {"component": "module-manager", "actionPath": "action.octant.dev/suspendCronJob", "module-name": "overview"}
2022-03-09T14:51:42.551Z INFO module/manager.go:87 registering action {"component": "module-manager", "actionPath": "action.octant.dev/resumeCronJob", "module-name": "overview"}
2022-03-09T14:51:42.551Z INFO module/manager.go:87 registering action {"component": "module-manager", "actionPath": "action.octant.dev/update", "module-name": "overview"}
2022-03-09T14:51:42.551Z INFO module/manager.go:87 registering action {"component": "module-manager", "actionPath": "overview/startPortForward", "module-name": "overview"}
2022-03-09T14:51:42.551Z INFO module/manager.go:87 registering action {"component": "module-manager", "actionPath": "action.octant.dev/apply", "module-name": "overview"}
2022-03-09T14:51:42.552Z INFO module/manager.go:87 registering action {"component": "module-manager", "actionPath": "action.octant.dev/deleteObject", "module-name": "configuration"}
2022-03-09T14:51:42.554Z INFO dash/dash.go:694 Dashboard is available at http://127.0.0.1:7777
在本机的命令行窗口输入 ssh root@10.10.1.107 -L 7777:127.0.0.1:7777
(注意不是 Putty
这类工具而是本机的 Terminal
)
C:\Users\mars.zhang\Downloads\cmder
λ ssh root@10.10.1.107 -L 7777:127.0.0.1:7777
(root@10.10.1.107) Password:
Last login: Wed Mar 9 15:10:46 2022 from 10.10.1.175
我们也可以从 Octant
获取 Token
,点击 token 后面的剪贴板图标
6. 配置存储基础架构与备份存储库
6.1.配置存储基础架构 Infrastructure Profiles
K10 支持 vSphere 存储集成,可以通过从“设置”菜单创建 vSphere 基础架构配置文件来启用。必须使用 vSphere CSI 置备程序置备持久卷。
6.2. 配置 Tencent COS 作为对象存储库
我们可以能过设置 S3 Compatible 存储库的方式,将 COS 对象存储设置成为备份存储库,满足 3-2-1-1-0 的备份黄金法则。
7 安装测试应用 yelb
在这个 TKG Demo Appliance
中有一个非常有用的投票 Demo 应用 yelb,我们可以用它来进行备份恢复的测试。在 TKG Demo Appliance
的 /root/demo/yelb
目录中,有个 yelb.yaml
我们就用它来创建应用。
$ cd /root/demo/yelb
#创建 `yelb` 命名空间
$ k create ns yelb
namespace/yelb created
#部署应用
$ k apply -f yelb.yaml
service/redis-server created
service/yelb-db created
service/yelb-appserver created
service/yelb-ui created
deployment.apps/yelb-ui created
deployment.apps/redis-server created
deployment.apps/yelb-db created
deployment.apps/yelb-appserver created
#检查应用的状态
$ k -n yelb get deployments
NAME READY UP-TO-DATE AVAILABLE AGE
redis-server 1/1 1 1 15s
yelb-appserver 1/1 1 1 15s
yelb-db 1/1 1 1 15s
yelb-ui 1/1 1 1 15s
#查找 yelb UI IP
$ k -n yelb get pods |grep ui
yelb-ui-6b4cc6685d-tgzzb 1/1 Running 0 4m5s
$ k -n yelb describe po yelb-ui-6b4cc6685d-tgzzb |grep Node
Node: tkg-cluster-01-md-0-d99699b98-nkdrv/10.10.2.238
Node-Selectors: <none>
$ k -n yelb get svc |grep ui
yelb-ui NodePort 100.71.31.29 <none> 80:31001/TCP 5m41s
在一个访问 TKG 网络的浏览器中输入: http://192.168.2.185:31001
8. 云原生应用的备份与还原
8.1 云原生应用的备份
点击 Create Policy, 让我们创建一个数据备份策略,除本地备份之外还备份到云端的对象存储,实现 3-2-1-1-0 的数据保护。
注:Veeam主张使用“3-2-1-1-0”规则作为通用数据管理的策略。即数据必须有三个备份,两个不同的媒介来储存,一份异地备份。新增加的“1”是离线备份数据或不变备份,“0”是零恢复错误。
点击 Run Once 执行备份任务
观察 Dashboard 可以看到应用已经备份完成
8.2 云原生应用的还原
在 Dashboard 中找到 Applications 点击 Restore
选择还原的时间点,新建一个 Namespace 进行还原,这里我们命名为 yelb-restore
在控制台观察还原操作已经顺利完成
在Tanzu Octant 控制台中我们已经看到还原的应用在正常的运行了
9. 总结
通过上述实验,我们可以看到 Kasten by Veeam K10 数据管理平台为企业运营团队提供了一个易于使用、可扩展和安全的系统,用于 VMware Tanzu TKG 的备份/恢复、容灾、应用迁移。K10 使用以应用程序为中心的方法,可以适配多种云原生应用、Kubernetes 发行版、VMware Tanzu TKG 版本 和多种云的深度集成,为企业运维团队提供了选择基础设施的自由度。VMware 和 Veeam 的合作伙伴关系不仅解决了传统解决方案面临的所有数据管理挑战,而且遵循了我们之前概述的云原生备份解决方案的核心原则 -- 面向未来,践行 Day 2 Operation。
10. 参考链接
什么是 Day-2 Operation
https://jimmysong.io/blog/what-is-day-2-operation/
kasten partner with VMware
https://www.kasten.io/partner-vmware
Demo Appliance for Tanzu Kubernetes Grid
https://flings.vmware.com/demo-appliance-for-tanzu-kubernetes-grid
TGK Demo Appliance 安装前的准备
https://hackmd.io/rHOUvdS3QsGlhCpGRU-hOQ
TGK Demo Appliance Workshop Guide
https://hackmd.io/EbTCJhsWRLObk28okTgkuQ