Kubernetes上Kafka应用数据恢复 —— YS1000实战系列

目录

一、引言

二、实验环境

三、部署zookeeper

四、部署kafka

五、对kafka进行备份和恢复

六、小结


一、引言

Kafka是由LinkedIn公司采用Scala语言开发的一个多分区、多副本的分布式消息系统,可以架设在k8s平台上基于ZooKeeper协调,达到高吞吐、持久化、水平扩展、支持流数据处理等多种特性,因而被广泛使用在互联网大数据和金融等领域。并且越来越多的开源分布式处理系统如Cloudera、Storm、Spark、Flink等都支持与Kafka集成。

Kafka的消息持久化功能和多副本机制,有效地降低了数据丢失的风险,因此也可以作为长期的数据存储系统来使用。那么如何为部署在k8s中的kafka数据上保险,进一步加强数据保护,挽救数据于黑客攻击、恶意篡改等事件,本文使用基于velero的商业化产品YS1000(免费版)带大家一窥究竟。

二、实验环境

Kubernetes版本

kubectl get nodes
NAME            STATUS   ROLES    AGE   VERSION
remote-master   Ready    master   84d   v1.18.9
worker-2        Ready    <none> 84d   v1.18.9

使用helm安装YS1000免费版,详见

https://github.com/jibutech/helm-charts/blob/main/README.md

使用手册详见https://github.com/jibutech/docs/blob/main/user_guide/%E9%93%B6%E6%95%B0%E5%A4%9A%E4%BA%91%E6%95%B0%E6%8D%AE%E7%AE%A1%E5%AE%B62.0%E7%89%88%E4%BD%BF%E7%94%A8%E8%AF%B4%E6%98%8E%E4%B9%A6.md

安装完成后查看YS1000版本

helm list -A
NAME                            NAMESPACE               REVISION        UPDATED                                 STATUS          CHART                     APP VERSION
qiming-operator-1637891889      qiming-migration        1 2021-11-26 09:58:10.840736168 +0800 CST deployed        qiming-operator-2.1.0     2.1.0

三、部署zookeeper

本文中我们将使用statefulset在kafka-test的namespace中创建2副本的zookeeper和kafka。

第一步,使用kubectl创建kafka-test

kubectl create namespace kafka-test

第二步,在kafka-test中部署zookeeper

kubectl create namespace kafka-test

zookeeper-deployment.yaml 内容供参考,具体参数如namespace,replicas和storageClassName等根据需要修改

---
apiVersion: v1
kind: Service
metadata:
  name: zk-svc
  labels:
    app: zk-svc
spec:
  ports:
  - port: 2888
    name: server
  - port: 3888
    name: leader-election
  clusterIP: None
  selector:
    app: zk
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: zk-cm
data:
  jvm.heap: "1G"
  tick: "2000"
  init: "10"
  sync: "5"
  client.cnxns: "60"
  snap.retain: "3"
  purge.interval: "0"
---
apiVersion: policy/v1beta1
kind: PodDisruptionBudget
metadata:
  name: zk-pdb
spec:
  selector:
    matchLabels:
      app: zk
  minAvailable: 2
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: zk
spec:
  serviceName: zk-svc
  replicas: 2
  selector:
    matchLabels:
      app: zk
  template:
    metadata:
      labels:
        app: zk
    spec:
      affinity:
        podAntiAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            - labelSelector:
                matchExpressions:
                  - key: "app"
                    operator: In
                    values:
                    - zk
              topologyKey: "kubernetes.io/hostname"
      containers:
      - name: k8szk
        imagePullPolicy: IfNotPresent
        image: registry.cn-hangzhou.aliyuncs.com/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值