Kubernetes 备份容灾服务产品体验教程
尹珉
杭州数跑科技运维工程师,KubeSphere 开源社区 Ambassador,KubeSphere 社区用户委员会杭州站站长,云原生爱好者。
本篇目录
云原生备份容灾服务简介
运行生产级别的 Kubernetes 集群,无论您的集群运行的多稳定,定期备份是未雨绸缪,一定要做的工作。Kubernetes 集群的运行状态都保存在 ETCD 中,为了确保您生产环境的稳定性,建议您定期备份。
云原生备份容灾服务简介云原生备份容灾服务简介云原生备份容灾服务简介云原生备份容灾服务简介云原生备份容灾服务简介云原生备份容灾服务简介云原生备份容灾服务简介云原生备份容灾服务简介云原生备份容灾服务简介
运行生产级别的 Kubernetes 集群,无论您的集群运行的多稳定,定期备份是未雨绸缪,一定要做的工作。Kubernetes 集群的运行状态都保存在 ETCD 中,为了确保您生产环境的稳定性,建议您定期备份。
运行生产级别的 Kubernetes 集群,
- 无论您的集群运行的多稳定,
- 一定要做的工作。
- Kubernetes 集群的运行状态都保存在 ETCD 中,
- 为了确保您生产环境的稳定性,
是/否 | 检查项 | 描述 |
---|---|---|
✅ | ETCDHealthStatus | 如果 etcd 启动并正常运行 |
✅ | ControllerManagerHealthStatus | 如果 kubernetes kube-controller-manager 正常启动并运行 |
✅ | SchedulerHealthStatus | 如果 kubernetes kube-schedule 正常启动并运行 |
✅ | NodeMemory | 如果节点内存使用量超过阈值 |
✅ | DockerHealthStatus | 如果 docker 正常运行 |
✅ | NodeDisk | 如果节点磁盘使用量超过阈值 |
✅ | KubeletHealthStatus | 如果 kubelet 激活状态且正常运行 |
✅ | NodeCPU | 如果节点 CPU 使用量超过阈值 |
✅ | NodeCorruptOverlay2 | Overlay2 不可用 |
✅ | NodeKernelNULLPointer | node 显示 NotReady |
✅ | NodeDeadlock | 死锁是指两个或两个以上的进程在争夺资源时互相等待的现象。 |
✅ | NodeOOM | 监控那些消耗过多内存的进程,尤其是那些消耗大量内存非常快的进程,内核会杀掉它们,防止它们耗尽内存 |
✅ | NodeExt4Error | Ext4 挂载失败 |
✅ | NodeTaskHung | 检查D状态下是否有超过 120s 的进程 |
✅ | NodeUnregisterNetDevice | 检查对应网络 |
✅ | NodeCorruptDockerImage | 检查 docker 镜像 |
✅ | NodeAUFSUmountHung | 检查存储 |
✅ | NodeDockerHung | Docker hang住, 检查 docker 的日志 |
✅ | PodSetLivenessProbe | 如果为pod中的每一个容器设置了 livenessProbe |
✅ | PodSetTagNotSpecified | 镜像地址没有声明标签或标签是最新 |
✅ | PodSetRunAsPrivileged | 以特权模式运行 Pod 意味着 Pod 可以访问主机的资源和内核功能 |
✅ | PodSetImagePullBackOff | Pod 无法正确拉出镜像,因此可以在相应节点上手动拉出镜像 |
✅ | PodSetImageRegistry | 检查镜像形式是否在相应仓库 |
✅ | PodSetCpuLimitsMissing | 未声明 CPU 资源限制 |
✅ | PodNoSuchFileOrDirectory | 进入容器查看相应文件是否存在 |
✅ | PodIOError | 这通常是由于文件 IO 性能瓶颈 |
✅ | PodNoSuchDeviceOrAddress | 检查对应网络 |
✅ | PodInvalidArgument | 检查对应存储 |
✅ | PodDeviceOrResourceBusy | 检查对应的目录和 PID |
✅ | PodFileExists | 检查现有文件 |
✅ | PodTooManyOpenFiles | 程序打开的文件/套接字连接数超过系统设置值 |
✅ | PodNoSpaceLeftOnDevice | 检查磁盘和索引节点的使用情况 |
✅ | NodeApiServerExpiredPeriod | 将检查 ApiServer 证书的到期日期少于30天 |
✅ | PodSetCpuRequestsMissing | 未声明 CPU 资源请求值 |
✅ | PodSetHostIPCSet | 设置主机 IP |
✅ | PodSetHostNetworkSet | 设置主机网络 |
✅ | PodHostPIDSet | 设置主机 PID |
✅ | PodMemoryRequestsMiss | 没有声明内存资源请求值 |
✅ | PodSetHostPort | 设置主机端口 |
✅ | PodSetMemoryLimitsMissing | 没有声明内存资源限制值 |
✅ | PodNotReadOnlyRootFiles | 文件系统未设置为只读 |
✅ | PodSetPullPolicyNotAlways | 镜像拉策略并非总是如此 |
✅ | PodSetRunAsRootAllowed | 以 root 用户执行 |
✅ | PodDangerousCapabilities | 您在 ALL / SYS_ADMIN / NET_ADMIN 等功能中有危险的选择 |
✅ | PodlivenessProbeMissing | 未声明 ReadinessProbe |
✅ | privilegeEscalationAllowed | 允许特权升级 |
NodeNotReadyAndUseOfClosedNetworkConnection | http 2-max-streams-per-connection | |
NodeNotReady | 无法启动 ContainerManager 无法设置属性 TasksAccounting 或未知属性 |
建议您定期备份。
KubeSphere Cloud 云原生备份容灾服务是 KubeSphere 团队针对混合云场景推出的 Kubernetes 备份容灾即服务产品。用户无需构建备份容灾的基础架构,基于原生的 Kubernetes API,提供了可视化界面,能够覆盖云原生数据保护的绝大多数重要场景,而且能够跨集群、跨云服务商、跨存储区域,轻松实现基础设施间多地、按需的备份恢复。登录 KubeSphere Cloud 即可对 Kubernetes 集群中的容器进行备份和恢复。
注册平台账号
1.登录 KubeSphere Cloud 平台

replicaCount: 1
config:
query:
clsuterId: default
# add builtin user
users:
- name: databend
# available type: sha256_password, double_sha1_password, no_password, jwt
authType: double_sha1_password
# echo -n "databend" | sha1sum | cut -d' ' -f1 | xxd -r -p | sha1sum
authString: 3081f32caef285c232d066033c89a78d88a6d8a5
meta:
# Set endpoints to use remote meta service
# depends on previous deployed meta service、namespace and nodes
endpoints:
- "databend-meta-0.databend-meta.databend-meta.svc:9191"
- "databend-meta-1.databend-meta.databend-meta.svc:9191"
- "databend-meta-2.databend-meta.databend-meta.svc:9191"
storage:
# s3, oss
type: s3
s3:
bucket: "<bucket>"
endpoint_url: "https://s3.<region>.qingstor.com" # for qingstor
access_key_id: "<key>"
secret_access_key: "<secret>"
# [recommended] enable monitoring service
serviceMonitor:
enabled: true
# [recommended] enable access from outside cluster
service:
type: LoadBalancer
replicaCount: 1
config:
query:
clsuterId: default
# add builtin user
users:
- name: databend
# available type: sha256_password, double_sha1_password, no_password, jwt
authType: double_sha1_password
# echo -n "databend" | sha1sum | cut -d' ' -f1 | xxd -r -p | sha1sum
authString: 3081f32caef285c232d066033c89a78d88a6d8a5
meta:
# Set endpoints to use remote meta service
# depends on previous deployed meta service、namespace and nodes
endpoints:
- "databend-meta-0.databend-meta.databend-meta.svc:9191"
- "databend-meta-1.databend-meta.databend-meta.svc:9191"
- "databend-meta-2.databend-meta.databend-meta.svc:9191"
storage:
# s3, oss
type: s3
s3:
bucket: "<bucket>"
endpoint_url: "https://s3.<region>.qingstor.com" # for qingstor
access_key_id: "<key>"
secret_access_key: "<secret>"
# [recommended] enable monitoring service
serviceMonitor:
enabled: true
# [recommended] enable access from outside cluster
service:
type: LoadBalancer

2.创建账户

准备集群
1.进入首页找到【资源管理】选择【导入集群】

2.填写集群相关信息,选择【直接连接 Kubernetes 集群】方式

3.获取 kubeconfig
方式一:托管 Kubernetes 集群 请参考对应云厂商产品文档进行获取如:阿里云、华为云、腾讯云等
方式二:自建 Kubernetes 集群
(一)master 节点上执行
cat $HOME/.kube/config
(二)请确保 kubeconfig 中 cluser.server 字段的地址可以通过公网进行访问,或者同时勾选跳过 TLS 验证进行导入

4.验证集群连接状态

添加对象存储仓库
1.选择【新建仓库】


2.查看仓库是否可用

创建备份计划
注意:备份的集群 namespace 里不能包含带有 error 的 PVC 或者 PV,否则无法恢复!!!!
1.选择【创建备份】

2.查看备份计划状态

创建恢复计划
1.清除备份计划源集群中的服务

2.选择【恢复备份】

3.创建备份计划

4.查看恢复计划状态

5.查看目标 namespace 恢复状态

总结
运行生产级别的 Kubernetes 集群,无论您的集群运行的多稳定,定期备份是未雨绸缪,一定要做的工作。Kubernetes 集群的运行状态都保存在 ETCD 中,为了确保您生产环境的稳定性,建议您定期备份。
KubeSphere Cloud 云原生备份容灾服务的应用场景包括:
1.系统或硬件设施发生故障
云原生备份容灾服务能够有效降低因故障而导致的业务中断风险,保障 Kubernetes 集群中核心业务的连续性。
2.开发测试中出现环境变更
云原生备份容灾服务能够在开发、测试等过程出现环境变更、配置调整时,及时恢复任何时期、任意仓库中备份的数据。
3.遭遇恶意破坏或不当操作
云原生备份容灾服务能够通过数据的备份和恢复,避免恶意破坏或不当操作造成的数据丢失,保障数据的完整可用。
4.多集群、多存储协同保护
云原生备份容灾服务能够跨集群、跨云服务商、跨存储区域,轻松实现基础设施间多地、按需的备份恢复、容灾保护。
5.容器应用数据的云上迁移
云原生备份容灾服务提供了一种便利的数据迁移方式,让企业灵活、自主地选择或更换云服务商,避免基础设施绑定。
目前该服务还在体验改进阶段,提供了 1TB 的免费托管仓库,感兴趣的可以加入专属体验群,扫码加群管理员小 kk 微信,备注:灾备服务体验。

发表回复