K8s使用说明: 安装方法:将dbackup3-agent-k8s-version.x86_64.tar包传到所有K8S集群节点, docker: 通过 docker load -i dbackup3-agent-k8s-version.x86_64.tar 载入镜像(每个集群节点均需要载入镜像,载入后可通过 docker image ls 命令查询) Container: 通过 ctr -n=k8s.io image import dbackup3-agent-k8s-version.x86_64.tar 载入镜像(每个集群节点均需要载入镜像,载入后可通过 ctr -n=k8s.io image ls 命令查询) 上传完成后需要通过以k8s的pod资源方式进行部署和配置,详细部署请参考K8S用户指南。 参考部署配置如下(需根据实际情况进行配置,以下操作均在master节点操作): 一、 创建命名空间和指定hostid 1)创建dbackup3命名空间 kubectl create namespace dbackup3 2)创建hostid记录该值,在配置dbackup3-k8s-agent.yaml文件的“- name: HOSTID_0”时会使用到 在宿主机执行以下命令: uuidgen -r | sed "s/-//g" 3)创建pod完成cluster-admin授权配置 touch cluster.yaml # cat cluster.yaml apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: dbackupk8s roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: default namespace: dbackup3 #执行下面命令,创建资源 kubectl apply -f cluster.yaml 4)sc-config-map.yaml配置文件 touch sc-config-map.yaml 数组当中填写的是Storage Class的名字,根据sc的特性填写到具体位置。 apiVersion: v1 kind: ConfigMap metadata: name: sc-config namespace: dbackup3 data: # 存储类配置Json文件 config.json: | { "csi": [ "csi-rbd-sc" , #注意修改,用kubectl get sc查看,然后根据sc的特性填写 "csi-sc" ], "nfs":[ "nfs-client" #注意修改 ], "local": [ "fast-disks" #注意修改 ] } #执行下面命令,创建资源 kubectl apply -f sc-config-map.yaml 5)创建迪备代理pod touch dbackup3-k8s-agent.yaml ###dbackup3-k8s-agent.yaml 配置参考### apiVersion: apps/v1 kind: StatefulSet metadata: name: dbackup-agent namespace: dbackup3 spec: selector: matchLabels: app: dbackup-agent serviceName: dbackup-agent replicas: 1 template: metadata: labels: app: dbackup-agent spec: affinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchLabels: app: dbackup-agent topologyKey: "kubernetes.io/hostname" containers: - env: - name: BACKUPD_HOST value: 172.16.30.162 #迪备,注意修改 - name: BACKUPD_PORT value: "50305" - name: HOSTID_0 value: 6eabbc1a786f49eb8053291e2748ce74 # - name: HOSTID_1 #设置多agent时开启 # value: 8dc565f18be34da3a22eaf17b6b3c399 # - name: HOSTID_2 # value: daahwio1309123j21124e129fqwqa11r - name: BACKUPD_SSL value: "false" - name: POD_IMAGE value: registry.aliyuncs.com/k8sxio/pause:3.2 #通过docker images | grep pause查看进行更改 - name: POD_NAME value: backup-pod - name: DEPLOY_METHOD value: statefulset - name: HOSTNAME valueFrom: fieldRef: fieldPath: metadata.name # - name: BACKUPD_ACCESS_KEY # value: "f1528cdec9afabe99b804e47e0833848" - name: BACKUP_NODE valueFrom: fieldRef: fieldPath: spec.nodeName image: registry.docker.scutech.com/dbackup/stable/focal/dbackup3-agent-k8s:version #注意修改 imagePullPolicy: IfNotPresent resources: name: agent securityContext: privileged: true volumeMounts: - mountPath: /var/log/dbackup3 name: log-volume - mountPath: /var/opt/scutech/dbackup3/agent name: opt-volume - mountPath: /var/lib/kubelet/pods mountPropagation: HostToContainer name: pods-path - mountPath: /dev mountPropagation: HostToContainer name: dev - mountPath: /opt/storage_class name: storage-class - name: host-time ###设定本地服务器时区 mountPath: /etc/localtime hostIPC: true hostNetwork: true hostPID: true # nodeName: k8s-master-200 #指定node节点执行 # nodeSelector: # kubernetes.io/hostname: k8s-master-200 volumes: - hostPath: path: /var/lib/kubelet/pods name: pods-path - hostPath: path: /dev name: dev - hostPath: path: /opt/data/opt_volume name: opt-volume - hostPath: path: /opt/data/log_volume name: log-volume - name: host-time hostPath: path: /etc/localtime - name: storage-class configMap: name: sc-config items: - key: "config.json" path: "config.json" #执行下面命令,创建资源 kubectl apply -f dbackup3-k8s-agent.yaml 4)备份代理pod 创建后,可通过 kubectl get pod -n dbackup3 查询。pod 状态为running 即可在web 界面继续进行备份操作。 二、检查kubectl 状态可使用如下命令,备份前可要求管理员进行检查 1)#systemctl status kubelet,查看 kubelet 服务是否为正常 active(running) 2)#systemctl status docker,查看 docker 服务是否为正常 active(running) 3)#kubectl get nodes -owide,查看 kubernetes 集群的部署版本,请确保所有节点的 version 不低于 v1.17.0,否则不支持 CSI 驱动,并查看所有 node 节点是否为 Ready。 4)#kubectl get pod -A,查看 备份资源状态是否为running。