摘要:可想而知,的重要性。因而做好數(shù)據(jù)備份工作至關(guān)重要。備份數(shù)據(jù)到能做的備份方案很多,但是大同小異,基本上都是利用了命令來完成。設(shè)置一下,就可以幫助我們定時(shí)刪除舊數(shù)據(jù),保留新的備份數(shù)據(jù)。部署方案選擇中的比較合適,我的備份策略是每三小時(shí)備份一次。
前言
整個(gè)k8s諸多組件幾乎都是無狀態(tài)的,所有的數(shù)據(jù)保存在etcd里,可以說etcd是整個(gè)k8s集群的數(shù)據(jù)庫。可想而知,etcd的重要性。因而做好etcd數(shù)據(jù)備份工作至關(guān)重要。這篇主要講一下我司的相關(guān)的實(shí)踐。
備份etcd數(shù)據(jù)到s3能做etcd的備份方案很多,但是大同小異,基本上都是利用了etcdctl命令來完成。
為什么選擇s3那?
因?yàn)槲覀儐挝粚τ赼ws使用比較多,另外我們希望我們備份到一個(gè)高可用的存儲(chǔ)中,而不是部署etcd的本機(jī)中。
此外,s3支持存儲(chǔ)的生命周期的設(shè)置。設(shè)置一下,就可以aws幫助我們定時(shí)刪除舊數(shù)據(jù),保留新的備份數(shù)據(jù)。
具體方案我們基本上用了etcd-backup這個(gè)項(xiàng)目,當(dāng)然也fork了,做了稍微的更改,主要是更改了dockerfile。將etcdctl 修改為我們線上實(shí)際的版本。
修改之后的dockerfile如下:
FROM alpine:3.8 RUN apk add --no-cache curl # Get etcdctl ENV ETCD_VER=v3.2.24 RUN cd /tmp && curl -L https://storage.googleapis.com/etcd/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz | tar xz -C /usr/local/bin --strip-components=1 COPY ./etcd-backup / ENTRYPOINT ["/etcd-backup"] CMD ["-h"]
之后就是docker build之類了。
k8s部署方案選擇k8s中的cronjob比較合適,我的備份策略是每三小時(shí)備份一次。
cronjob.yaml:
apiVersion: batch/v1beta1 kind: CronJob metadata: name: etcd-backup namespace: kube-system spec: schedule: "0 */4 * * *" successfulJobsHistoryLimit: 2 failedJobsHistoryLimit: 2 jobTemplate: spec: # Job timeout activeDeadlineSeconds: 300 template: spec: tolerations: # Tolerate master taint - key: node-role.kubernetes.io/master operator: Exists effect: NoSchedule # Container creates etcd backups. # Run container in host network mode on G8s masters # to be able to use 127.0.0.1 as etcd address. # For etcd v2 backups container should have access # to etcd data directory. To achive that, # mount /var/lib/etcd3 as a volume. nodeSelector: node-role.kubernetes.io/master: "" containers: - name: etcd-backup image: iyacontrol/etcd-backup:0.1 args: # backup guest clusters only on production instalations # testing installation can have many broken guest clusters - -prefix=k8s-prod-1 - -etcd-v2-datadir=/var/lib/etcd - -etcd-v3-endpoints=https://172.xx.xx.221:2379,https://172.xx.xx.83:2379,https://172.xx.xx.246:2379 - -etcd-v3-cacert=/certs/ca.crt - -etcd-v3-cert=/certs/server.crt - -etcd-v3-key=/certs/server.key - -aws-s3-bucket=mybucket - -aws-s3-region=us-east-1 volumeMounts: - mountPath: /var/lib/etcd name: etcd-datadir - mountPath: /certs name: etcd-certs env: - name: ETCDBACKUP_AWS_ACCESS_KEY valueFrom: secretKeyRef: name: etcd-backup key: ETCDBACKUP_AWS_ACCESS_KEY - name: ETCDBACKUP_AWS_SECRET_KEY valueFrom: secretKeyRef: name: etcd-backup key: ETCDBACKUP_AWS_SECRET_KEY - name: ETCDBACKUP_PASSPHRASE valueFrom: secretKeyRef: name: etcd-backup key: ETCDBACKUP_PASSPHRASE volumes: - name: etcd-datadir hostPath: path: /var/lib/etcd - name: etcd-certs hostPath: path: /etc/kubernetes/pki/etcd/ # Do not restart pod, job takes care on restarting failed pod. restartPolicy: Never hostNetwork: true
注意:容忍 和 nodeselector配合,讓pod調(diào)度到master節(jié)點(diǎn)上。
然后secret.yaml:
apiVersion: v1 kind: Secret metadata: name: etcd-backup namespace: kube-system type: Opaque data: ETCDBACKUP_AWS_ACCESS_KEY: QUtJTI0TktCT0xQRlEK ETCDBACKUP_AWS_SECRET_KEY: aXJ6eThjQnM2MVRaSkdGMGxDeHhoeFZNUDU4ZGRNbgo= ETCDBACKUP_PASSPHRASE: ""總結(jié)
之前我們嘗試過,etcd-operator來完成backup。實(shí)際使用過程中,發(fā)現(xiàn)并不好,概念很多,組件復(fù)雜,代碼很多寫法太死。
最后選擇etcd-backup。主要是因?yàn)楹唵?,less is more??丛创a,用golang編寫,擴(kuò)展自己的一些需求,也比較簡單。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/28057.html
摘要:可想而知,的重要性。因而做好數(shù)據(jù)備份工作至關(guān)重要。備份數(shù)據(jù)到能做的備份方案很多,但是大同小異,基本上都是利用了命令來完成。設(shè)置一下,就可以幫助我們定時(shí)刪除舊數(shù)據(jù),保留新的備份數(shù)據(jù)。部署方案選擇中的比較合適,我的備份策略是每三小時(shí)備份一次。 前言 整個(gè)k8s諸多組件幾乎都是無狀態(tài)的,所有的數(shù)據(jù)保存在etcd里,可以說etcd是整個(gè)k8s集群的數(shù)據(jù)庫。可想而知,etcd的重要性。因而做好e...
摘要:可想而知,的重要性。因而做好數(shù)據(jù)備份工作至關(guān)重要。備份數(shù)據(jù)到能做的備份方案很多,但是大同小異,基本上都是利用了命令來完成。設(shè)置一下,就可以幫助我們定時(shí)刪除舊數(shù)據(jù),保留新的備份數(shù)據(jù)。部署方案選擇中的比較合適,我的備份策略是每三小時(shí)備份一次。 前言 整個(gè)k8s諸多組件幾乎都是無狀態(tài)的,所有的數(shù)據(jù)保存在etcd里,可以說etcd是整個(gè)k8s集群的數(shù)據(jù)庫。可想而知,etcd的重要性。因而做好e...
摘要:此次發(fā)布的版本包含對和的支持,以及對的支持。版本中,的進(jìn)階版監(jiān)控功能以尊重多租戶環(huán)境邊界的方式部署了和。為應(yīng)用目錄程序提供了特定于集群和項(xiàng)目的配置。在全球擁有超過一億的下載量,超過家企業(yè)客戶。 Rancher 2.2 GA版本引入的創(chuàng)造性新功能,將進(jìn)一步實(shí)現(xiàn)Kubernetes-as-a-service,使企業(yè)用戶能夠?qū)W⒂诩铀賱?chuàng)新和推動(dòng)業(yè)務(wù)價(jià)值。 showImg(https://se...
摘要:廣告各版本離線安裝包證書配置生產(chǎn)環(huán)境中給配置證書相當(dāng)重要,如果沒有證書,那么集群很容易被黑客利用而去挖礦什么的。細(xì)節(jié)問題非常多,一個(gè)端口,一個(gè)都不要填錯(cuò),否則就會(huì)各種錯(cuò)誤包括新加節(jié)點(diǎn)要清數(shù)據(jù)這些小細(xì)節(jié)問題。 廣告 | kubernetes各版本離線安裝包 etcd 證書配置 生產(chǎn)環(huán)境中給etcd配置證書相當(dāng)重要,如果沒有證書,那么k8s集群很容易被黑客利用而去挖礦什么的。做法非常簡單...
閱讀 3979·2021-11-24 09:38
閱讀 1243·2021-10-19 11:42
閱讀 1840·2021-10-14 09:42
閱讀 2166·2019-08-30 15:44
閱讀 555·2019-08-30 14:04
閱讀 2901·2019-08-30 13:13
閱讀 1963·2019-08-30 12:51
閱讀 972·2019-08-30 11:22