国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

k8s外接etcd集群服務(wù)異常,使用snapshot恢復(fù)etcd集群

這篇具有很好參考價值的文章主要介紹了k8s外接etcd集群服務(wù)異常,使用snapshot恢復(fù)etcd集群。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

環(huán)境

master節(jié)點

主機 IP 版本
master01 192.168.66.50 k8s-1.23.17
master02 192.168.66.55 k8s-1.23.17
master03 192.168.66.56 k8s-1.23.17

etcd集群節(jié)點

主機 IP 版本
etcd01 192.168.66.58 3.5.6
etcd02 192.168.66.59 3.5.6
etcd03 192.168.66.57 3.5.6

生產(chǎn)環(huán)境中我們?yōu)榱吮苊獬霈F(xiàn)誤操作或者是服務(wù)器硬件出見異常導(dǎo)致宕機,我們的虛擬機或者k8s集群崩潰,所以我們都會創(chuàng)建多節(jié)點的高可用集群,包括k8s集群使用外接etcd集群,但有時也可能出現(xiàn)數(shù)據(jù)丟失,所以經(jīng)常要備份數(shù)據(jù)。

etcd備份

etcd集群的備份我們使用snapshot備份etcd集群數(shù)據(jù)

備份一般會使用腳本備份,三個etcd節(jié)點分別備份(雖然每份etcd節(jié)點的數(shù)據(jù)相同,但防止虛擬機宕機起不來,所以最好三個節(jié)點都備份,每小時備份一次,創(chuàng)建一個備份計劃任務(wù)):

#!/bin/bash
#
###etcd cluster backup

time_back=`date +%Y%m%d-%H%M%S`
path='/etc/etcd/snapshot/'
/usr/bin/etcdctl --cert=/etc/kubernetes/pki/etcd/peer.crt --key=/etc/kubernetes/pki/etcd/peer.key --cacert=/etc/kubernetes/pki/etcd/ca.crt --endpoints=https://192.168.66.58:2379 snapshot save ${path}etcd-snapshot-`date +%Y%m%d-%H%M%S`.db


###刪除7天之前的文件
/usr/bin/find /etc/etcd/snapshot -name "*.db" -mtime +7 | xargs rm -f

為了防止備份文件過多,占用磁盤空間,刪除磁盤中7天之前的備份,一般最早的數(shù)據(jù)來說,意義不是很大

etcd集群使用snapshot恢復(fù)集群

1:使用snapshot恢復(fù)etcd集群,我們需要先停掉master節(jié)點上的docker和kubelet服務(wù),停止etcd節(jié)點上的kubelet服務(wù),確保沒有服務(wù)調(diào)用etcd服務(wù)

[root@master01 ~]# systemctl stop kubelet
[root@master01 ~]# systemctl stop docker.socket && systemctl stop docker

[root@master01 ~]# docker ps

k8s外接etcd集群服務(wù)異常,使用snapshot恢復(fù)etcd集群,kubernetes,etcd,java

2:etcd的數(shù)據(jù)計劃存儲在/var/lib/etcd/目錄下,所以刪除etcd集群中每個節(jié)點/var/lib/etcd/目錄下的數(shù)據(jù),確保/var/lib/etcd/是空目錄,或者/var/lib/etcd/是新創(chuàng)建的目錄。如果存放其他目錄下也可以,需要修改etcd配置文件,需要修改--data-dir參數(shù)。

k8s外接etcd集群服務(wù)異常,使用snapshot恢復(fù)etcd集群,kubernetes,etcd,java

apiVersion: v1
kind: Pod
metadata:
  annotations:
    kubeadm.kubernetes.io/etcd.advertise-client-urls: https://192.168.66.58:2379
  creationTimestamp: null
  labels:
    component: etcd
    tier: control-plane
  name: etcd
  namespace: kube-system
spec:
  containers:
  - command:
    - etcd
    - --advertise-client-urls=https://192.168.66.58:2379
    - --cert-file=/etc/kubernetes/pki/etcd/server.crt
    - --client-cert-auth=true
    - --data-dir=/var/lib/etcd
    - --experimental-initial-corrupt-check=true
    - --initial-advertise-peer-urls=https://192.168.66.58:2380
    - --initial-cluster=infra2=https://192.168.66.59:2380,infra1=https://192.168.66.58:2380,infra0=https://192.168.66.57:2380
    - --initial-cluster-state=new
    - --key-file=/etc/kubernetes/pki/etcd/server.key
    - --listen-client-urls=https://192.168.66.58:2379,https://127.0.0.1:2379
    - --listen-metrics-urls=http://127.0.0.1:2381
    - --listen-peer-urls=https://192.168.66.58:2380
    - --name=infra1
    - --peer-cert-file=/etc/kubernetes/pki/etcd/peer.crt
    - --peer-client-cert-auth=true
    - --peer-key-file=/etc/kubernetes/pki/etcd/peer.key
    - --peer-trusted-ca-file=/etc/kubernetes/pki/etcd/ca.crt
    - --snapshot-count=10000
    - --trusted-ca-file=/etc/kubernetes/pki/etcd/ca.crt
    image: registry.k8s.io/etcd:3.5.6-0
    imagePullPolicy: IfNotPresent
    livenessProbe:
      failureThreshold: 8
      httpGet:
        host: 127.0.0.1
        path: /health
        port: 2381
        scheme: HTTP
      initialDelaySeconds: 10
      periodSeconds: 10
      timeoutSeconds: 15
    name: etcd
    resources:
      requests:
        cpu: 100m
        memory: 100Mi
    startupProbe:
      failureThreshold: 24
      httpGet:
        host: 128.0.0.1
        path: /health
        port: 2381
        scheme: HTTP
      initialDelaySeconds: 10
      periodSeconds: 10
      timeoutSeconds: 15
    volumeMounts:
    - mountPath: /var/lib/etcd
      name: etcd-data
    - mountPath: /etc/kubernetes/pki/etcd
      name: etcd-certs
  hostNetwork: true
  priorityClassName: system-node-critical
  securityContext:
    seccompProfile:
      type: RuntimeDefault
  volumes:
  - hostPath:
      path: /etc/kubernetes/pki/etcd
      type: DirectoryOrCreate
    name: etcd-data
status: {}

?停止相關(guān)服務(wù)后,使用快照恢復(fù)數(shù)據(jù),三個節(jié)點一次恢復(fù),先恢復(fù)etcd01

etcd01恢復(fù)命令:

etcdctl snapshot restore  etcd-snapshot-20231213-121501.db\
    --data-dir=/var/lib/etcd/ --initial-cluster-token="etcd-cluster" \
    --name=infra1 --initial-advertise-peer-urls=https://192.168.66.58:2380 \
    --initial-cluster="infra0=https://192.168.66.57:2380,infra1=https://192.168.66.58:2380,infra2=https://192.168.66.59:2380"

k8s外接etcd集群服務(wù)異常,使用snapshot恢復(fù)etcd集群,kubernetes,etcd,java

etcd02和etcd03節(jié)點恢復(fù):

etcdctl snapshot restore  etcd-snapshot-20231213-121501.db\
    --data-dir=/var/lib/etcd/ --initial-cluster-token="etcd-cluster" \
    --name=infra2 --initial-advertise-peer-urls=https://192.168.66.59:2380 \
    --initial-cluster="infra0=https://192.168.66.57:2380,infra1=https://192.168.66.58:2380,infra2=https://192.168.66.59:2380"
etcdctl snapshot restore  etcd-snapshot-20231213-121501.db\
    --data-dir=/var/lib/etcd/ --initial-cluster-token="etcd-cluster" \
    --name=infra0 --initial-advertise-peer-urls=https://192.168.66.57:2380 \
    --initial-cluster="infra0=https://192.168.66.57:2380,infra1=https://192.168.66.58:2380,infra2=https://192.168.66.59:2380"

注意使用最新的快照文件,和快照文件路徑。

k8s外接etcd集群服務(wù)異常,使用snapshot恢復(fù)etcd集群,kubernetes,etcd,java

k8s外接etcd集群服務(wù)異常,使用snapshot恢復(fù)etcd集群,kubernetes,etcd,java

3:數(shù)據(jù)恢復(fù)后,啟動docker和kubelet服務(wù) ,需要近最快時間啟動。

[root@etcd01 snapshot]# systemctl start docker && systemctl start kubelet

[root@etcd02 snapshot]# systemctl start docker && systemctl start kubelet

[root@etcd03 snapshot]# systemctl start docker && systemctl start kubelet

4:查看服務(wù)狀態(tài),以及etcd服務(wù)是否啟動,集群是否正常

[root@etcd01 snapshot]# systemctl status docker && systemctl status kubelet

[root@etcd02 snapshot]# systemctl status docker && systemctl status kubelet

[root@etcd03 snapshot]# systemctl status docker && systemctl status kubelet

k8s外接etcd集群服務(wù)異常,使用snapshot恢復(fù)etcd集群,kubernetes,etcd,java

需要在三個節(jié)點上分別查看,docker ps,etcd容器是否起來

[root@etcd01 snapshot]# docker ps

k8s外接etcd集群服務(wù)異常,使用snapshot恢復(fù)etcd集群,kubernetes,etcd,java

[root@etcd02 snapshot]# docker ps

k8s外接etcd集群服務(wù)異常,使用snapshot恢復(fù)etcd集群,kubernetes,etcd,java[root@etcd03 snapshot]# docker ps

k8s外接etcd集群服務(wù)異常,使用snapshot恢復(fù)etcd集群,kubernetes,etcd,java

使用member list查看集群節(jié)點狀態(tài),或使用腳本查看集群狀態(tài):

#!/bin/bash
#
###etcd cluster status check

####檢查集群節(jié)點的健康狀態(tài)
echo "etcd集群節(jié)點的健康狀態(tài)檢查"
/usr/bin/etcdctl --cert=/etc/kubernetes/pki/etcd/peer.crt --key=/etc/kubernetes/pki/etcd/peer.key --cacert=/etc/kubernetes/pki/etcd/ca.crt --endpoints=https://192.168.66.58:2379,https://192.168.66.59:2379,https://192.168.66.57:2379 endpoint health -w table

####檢查集群的狀態(tài)
echo "etcd=`hostname`:集群的節(jié)點詳細狀態(tài)包括leader or flower"
/usr/bin/etcdctl   --cert=/etc/kubernetes/pki/etcd/peer.crt --key=/etc/kubernetes/pki/etcd/peer.key --cacert=/etc/kubernetes/pki/etcd/ca.crt --endpoints=https://192.168.66.58:2379,https://192.168.66.59:2379,https://192.168.66.57:2379 endpoint status  --write-out=table

?k8s外接etcd集群服務(wù)異常,使用snapshot恢復(fù)etcd集群,kubernetes,etcd,java

在第二章表格中的IS LEADER字段中,可以看到etcd01是true,etcd02和etcd03是false,所以集群沒有出現(xiàn)腦裂,集群狀態(tài)正常

恢復(fù)master節(jié)點服務(wù),查看k8s集群狀態(tài)

[root@master01 ~]# systemctl start docker && systemctl start kubelet

[root@master02 ~]# systemctl start docker && systemctl start kubelet

[root@master03 ~]# systemctl start docker && systemctl start kubelet

查看服務(wù)狀態(tài)

[root@master01 ~]# systemctl status docker && systemctl status kubelet

[root@master02 ~]# systemctl status docker && systemctl status kubelet

[root@master03 ~]# systemctl status docker && systemctl status kubelet

查看k8s集群是否恢復(fù)

[root@master01 ~]# kubectl get nodes

k8s外接etcd集群服務(wù)異常,使用snapshot恢復(fù)etcd集群,kubernetes,etcd,java

k8s外接etcd集群服務(wù)異常,使用snapshot恢復(fù)etcd集群,kubernetes,etcd,java

可以看到我們的k8s集群已經(jīng)恢復(fù),之前創(chuàng)建的pods也都存在,其中謝謝pods狀態(tài)不正常,再繼續(xù)排查。文章來源地址http://www.zghlxwxcb.cn/news/detail-798352.html

到了這里,關(guān)于k8s外接etcd集群服務(wù)異常,使用snapshot恢復(fù)etcd集群的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • k8s集群中etcd的備份與恢復(fù)

    創(chuàng)建備份目錄mkdir /var/lib/etcd_backup 從etcd中的一個正常節(jié)點上備份etcd數(shù)據(jù) 停止所節(jié)點的kube-apiserver和etcd 備份原始etcd的路徑中的文件 所有節(jié)點恢復(fù)etcd數(shù)據(jù)庫 master01執(zhí)行{etcd01節(jié)點} work01執(zhí)行{etcd02節(jié)點} work02執(zhí)行{etcd03節(jié)點} 為目錄賦予權(quán)限 每個節(jié)點啟動etcd 查看狀態(tài) 啟動kubeapi

    2024年02月11日
    瀏覽(26)
  • k8s-1.22.3集群etcd備份與恢復(fù)

    kubeadm-1.22.3-0.x86_64 kubelet-1.22.3-0.x86_64 kubectl-1.22.3-0.x86_64 kubernetes-cni-0.8.7-0.x86_64 主機名 IP VIP k8s-master01 192.168.10.61 192.168.10.70 k8s-master02 192.168.10.62 k8s-master03 192.168.10.63 k8s-node01 192.168.10.64 k8s-node02 192.168.10.65 注:etcd最新的API版本是v3,與v2相比,v3更高效更清晰。k8s默認使用的etcd

    2024年02月13日
    瀏覽(29)
  • 二進制搭建k8s集群 master和etcd

    etcd作為服務(wù)發(fā)現(xiàn)系統(tǒng),有以下的特點: 簡單:安裝配置簡單,而且提供了HTTP API進行交互,使用也很簡單。 安全:支持SSL證書驗證。 快速:單實例支持每秒2k+讀操作。 可靠:采用raft算法,實現(xiàn)分布式系統(tǒng)數(shù)據(jù)的可用性和一致性。 etcd目前默認使用2379端口提供HTTP API服務(wù),

    2024年02月12日
    瀏覽(21)
  • K8S集群etcd 某個節(jié)點數(shù)據(jù)不一致如何修復(fù) —— 筑夢之路

    ? 二進制方式安裝的k8s集群,etcd集群有3個節(jié)點,某天有一臺機器hang住了,無法遠程ssh登陸,于是被管理員直接重啟了,重啟后發(fā)現(xiàn)k8s集群刪除一個deployment應(yīng)用,多次刷新一會有,一會沒有,于是在3個節(jié)點上執(zhí)行etcd命令去查詢該數(shù)據(jù),發(fā)現(xiàn)被重啟的節(jié)點上仍存在刪除的該應(yīng)

    2024年02月05日
    瀏覽(31)
  • k8s mysql集群 & 分布式鎖 & apiserver & etcd 的關(guān)系

    在 Kubernetes (k8s) 中,MySQL 集群可以使用分布式鎖來確保在多個實例之間對共享資源的互斥訪問。這是通過結(jié)合 Kubernetes API Server 和 etcd 來實現(xiàn)的。 Kubernetes API Server 是 k8s 集群中的核心組件之一,它充當(dāng)了集群的控制平面,提供了對集群資源的管理和操作接口。API Server 是一個

    2024年02月07日
    瀏覽(50)
  • k8s集群異?;謴?fù)

    k8s集群異?;謴?fù)

    前提、我自己的k8s采用的是單master節(jié)點+兩個從節(jié)點部署,我針對單master情況進行恢復(fù)說明 場景一:正常開關(guān)虛擬機,可直接重啟kubelet進行恢復(fù) 1、1、一般重啟后三個節(jié)點都需要檢查,輸入命令檢查kubelet: 2、狀態(tài)不正常,輸入命令啟動kubelet: 3、正常情況下,啟動kubelet后,

    2024年01月23日
    瀏覽(34)
  • etcd在高磁盤IO的情況下會導(dǎo)致K8S集群不可用的解決思路

    etcd是Kubernetes中用于存儲集群狀態(tài)信息的關(guān)鍵組件。高磁盤IO可能導(dǎo)致etcd性能下降,從而影響整個Kubernetes集群的穩(wěn)定性。解決這個問題可以從多個方面入手: 優(yōu)化etcd配置 :檢查etcd的配置參數(shù),確保其與您的硬件配置和集群規(guī)模相適應(yīng)??梢哉{(diào)整etcd的并發(fā)限制、緩存大小等

    2024年02月15日
    瀏覽(35)
  • k8s集群使用ingress轉(zhuǎn)發(fā)grafana服務(wù)

    k8s集群使用ingress轉(zhuǎn)發(fā)grafana服務(wù)

    在k8s集群中,使用ingress服務(wù)轉(zhuǎn)發(fā)grafana的頁面。 ingress方面增加路由規(guī)則和跨命名空間的service即可 grafana增加configmap掛載grafana.ini文件,增加匿名登陸配置和root_url配置 grafana.ini文件的yaml文件 grafana啟動服務(wù)的yaml文件 我這里使用的pvc的存儲類型是rook-ceph,使用其他存儲類型的修

    2024年02月09日
    瀏覽(18)
  • k8s無法正常啟動使用,排查:etcd損壞

    k8s無法正常啟動使用,排查:etcd損壞

    問題: 在跑項目的時候,機器意外斷電了,重啟后發(fā)現(xiàn)kubectl無法使用,報錯如下: 排查: 1、 Unable to register node with API server\\\" err=“Post “https://192.168.18.101:6443/api/v1/nodes”: dial tcp 192.168.18.101:6443: connect: connection refused” node=\\\"k8s-master01 發(fā)現(xiàn)連接不到apiserver 2、然后我到docker容器

    2024年02月07日
    瀏覽(22)
  • 搭建NFS服務(wù)器,部署k8s集群,并在k8s中使用NFS作為持久化儲存

    搭建NFS服務(wù)器,部署k8s集群,并在k8s中使用NFS作為持久化儲存

    ??明明跟你說過:個人主頁 ??個人專欄:《Kubernetes航線圖:從船長到K8s掌舵者》??? ??行路有良友,便是天堂?? 目錄 一、前言 1、k8s概述 2、NFS簡介 二、NFS服務(wù)器搭建 1、準備NFS 服務(wù)器 2、搭建NFS服務(wù) 三、安裝k8s集群 1、環(huán)境準備 2、禁用防火墻和SELinux 3、設(shè)置時間同步

    2024年04月13日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包