Kubernetes 备份容灾服务产品体验教程

尹珉
杭州数跑科技运维工程师,KubeSphere 开源社区 Ambassador,KubeSphere 社区用户委员会杭州站站长,云原生爱好者。

云原生备份容灾服务简介

运行生产级别的 Kubernetes 集群,无论您的集群运行的多稳定,定期备份是未雨绸缪,一定要做的工作。Kubernetes 集群的运行状态都保存在 ETCD 中,为了确保您生产环境的稳定性,建议您定期备份。

云原生备份容灾服务简介云原生备份容灾服务简介云原生备份容灾服务简介云原生备份容灾服务简介云原生备份容灾服务简介云原生备份容灾服务简介云原生备份容灾服务简介云原生备份容灾服务简介云原生备份容灾服务简介

运行生产级别的 Kubernetes 集群,无论您的集群运行的多稳定,定期备份是未雨绸缪,一定要做的工作。Kubernetes 集群的运行状态都保存在 ETCD 中,为了确保您生产环境的稳定性,建议您定期备份。

运行生产级别的 Kubernetes 集群,

  1. 无论您的集群运行的多稳定,
  2. 一定要做的工作。
  3. Kubernetes 集群的运行状态都保存在 ETCD 中,
  4. 为了确保您生产环境的稳定性,
是/否检查项描述
ETCDHealthStatus如果 etcd 启动并正常运行
ControllerManagerHealthStatus如果 kubernetes kube-controller-manager 正常启动并运行
SchedulerHealthStatus如果 kubernetes kube-schedule 正常启动并运行
NodeMemory如果节点内存使用量超过阈值
DockerHealthStatus如果 docker 正常运行
NodeDisk如果节点磁盘使用量超过阈值
KubeletHealthStatus如果 kubelet 激活状态且正常运行
NodeCPU如果节点 CPU 使用量超过阈值
NodeCorruptOverlay2Overlay2 不可用
NodeKernelNULLPointernode 显示 NotReady
NodeDeadlock死锁是指两个或两个以上的进程在争夺资源时互相等待的现象。
NodeOOM监控那些消耗过多内存的进程,尤其是那些消耗大量内存非常快的进程,内核会杀掉它们,防止它们耗尽内存
NodeExt4ErrorExt4 挂载失败
NodeTaskHung检查D状态下是否有超过 120s 的进程
NodeUnregisterNetDevice检查对应网络
NodeCorruptDockerImage检查 docker 镜像
NodeAUFSUmountHung检查存储
NodeDockerHungDocker hang住, 检查 docker 的日志
PodSetLivenessProbe如果为pod中的每一个容器设置了 livenessProbe
PodSetTagNotSpecified镜像地址没有声明标签或标签是最新
PodSetRunAsPrivileged以特权模式运行 Pod 意味着 Pod 可以访问主机的资源和内核功能
PodSetImagePullBackOffPod 无法正确拉出镜像,因此可以在相应节点上手动拉出镜像
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允许特权升级
NodeNotReadyAndUseOfClosedNetworkConnectionhttp                                                                        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
国内首个企业级Kubernetes

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 微信,备注:灾备服务体验。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注