自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Kubernetes 漫游:Etcd

存儲 數(shù)據(jù)管理
etcd 是一個基于 Raft 協(xié)議實現(xiàn)。開源的、分布式的鍵值存儲系統(tǒng)。主要用于在分布式系統(tǒng)中提供強一致性和高可用性的數(shù)據(jù)存儲。

概述

etcd 是一個基于 Raft 協(xié)議實現(xiàn)。開源的、分布式的鍵值存儲系統(tǒng)。主要用于在分布式系統(tǒng)中提供強一致性和高可用性的數(shù)據(jù)存儲。

etcd 在 Kubernetes 中的作用如下:

  1. 集群狀態(tài)數(shù)據(jù)存儲:集群配置,集群狀態(tài)信息等
  2. 保證集群一致性和高可用:多實例的數(shù)據(jù)同步
  3. 服務發(fā)現(xiàn)和配置共享
  4. 集群數(shù)據(jù)備份和恢復

作為 Kubernetes 的核心組件,etcd 為集群的穩(wěn)定性、可靠性和一致性提供了支撐。

安裝

命令行啟動

安裝參考官方文檔 etcd install 指引即可,安裝后驗證:

$ etcd --version

輸出:

etcd Version: 3.5.10
Git SHA: 0223ca52b
Go Version: go1.21.3
Go OS/Arch: darwin/arm64
phoenix@xiaobindeMacBook-Pro ~ % etcd

在終端啟動 etcd:

$ etcd

輸出:

{"level":"warn","ts":"2023-11-23T06:59:49.265098+0800","caller":"embed/config.go:676","msg":"Running http and grpc server on single port. This is not recommended for production."}
{"level":"info","ts":"2023-11-23T06:59:49.265318+0800","caller":"etcdmain/etcd.go:73","msg":"Running: ","args":["etcd"]}
{"level":"info","ts":"2023-11-23T06:59:49.265352+0800","caller":"etcdmain/etcd.go:100","msg":"failed to detect default host","error":"default host not supported on darwin_arm64"}
{"level":"warn","ts":"2023-11-23T06:59:49.265361+0800","caller":"etcdmain/etcd.go:105","msg":"'data-dir' was empty; using default","data-dir":"default.etcd"}
#.....

容器啟動

在容器中啟動 etcd 實例:

$ docker run -d registry.aliyuncs.com/google_containers/etcd:3.5.0-0 /usr/local/bin/etcd

進入 etcd 容器:

docker ps|grep etcd
docker exec –it <containerid> sh

使用

etcd 的使用較為簡單,主要通過 etcdctl 來執(zhí)行日常操作

查看集群

查看 etcd 集群中的所有成員:

$ etcdctl member list --write-out=table

輸出:

+------------------+---------+---------+-----------------------+-----------------------+------------+
|        ID        | STATUS  |  NAME   |      PEER ADDRS       |     CLIENT ADDRS      | IS LEARNER |
+------------------+---------+---------+-----------------------+-----------------------+------------+
| 8e9e05c52164694d | started | default | http://localhost:2380 | http://localhost:2379 |      false |
+------------------+---------+---------+-----------------------+-----------------------+------------+

存儲鍵值對

通過 put 命令用于將指定的值存儲在指定的鍵下。使用方法如下:

$ etcdctl put [key] [value]

例如,要存儲鍵為 mykey 和值為 myvalue 的鍵值對,你可以運行:

$ etcdctl put mykey myvalue

輸出:

OK

這會在 etcd 中創(chuàng)建或更新鍵 mykey 的值為 myvalue。

獲取鍵值對

get 命令用于檢索存儲在指定鍵下的值。使用方法如下:

$ etcdctl get [key]

繼續(xù)上面的例子,要獲取 mykey 的值,你可以運行:

$ etcdctl get mykey

輸出:

mykey
myvalue

觀察鍵值變化

通過 watch 命令可以觀察鍵的變化。當指定的鍵發(fā)生變化(例如更新或刪除)時,會輸出通知。使用方法如下:

$ etcdctl watch [key]

例如,要觀察 mykey 的變化,你可以運行:

$ etcdctl watch mykey

然后,在另一個終端更新 mykey 操作:

$ etcdctl put mykey newValue
$ etcdctl put mykey newValue2
$ etcdctl put mykey newValue3

然后執(zhí)行 watch 命令的終端輸出:

PUT
mykey
newValue
PUT
mykey
newValue2
PUT
mykey
newValue3

租約機制

租約(Lease)是一種允許將鍵值對與一個有時間限制的租約關(guān)聯(lián)的機制。租約到期后,與其關(guān)聯(lián)的鍵值對會自動刪除。

這個特性主要用于:保存臨時配置,實現(xiàn)分布式鎖,心跳機制,集群成員管理等場景。

創(chuàng)建租約

使用 lease grant 命令可以創(chuàng)建一個租約:

$ etcdctl lease grant 60

輸出:

lease 694d8c03cd2f520c granted with TTL(60s)

這個命令會創(chuàng)建一個持續(xù) 60 秒的租約,并且返回一個租約 ID,用于后續(xù)的操作。

列出所有租約

使用 lease list 可以查看所有活躍的租約:

$ etcdctl lease list

輸出:

found 1 leases
694d8c03cd2f520c

這里列出當前所有活躍的租約

將鍵綁定到租約

使用 --lease=<LEASE_ID> 選項參數(shù)可以把鍵綁定在租約上:

$ etcdctl put mykey myvalue --lease=694d8c03cd2f520c

輸出:

OK

這個鍵將在租約到期時自動刪除。

保持活躍

使用 lease keep-alive 可以對租約進行續(xù)租:

$ etcdctl lease keep-alive 694d8c03cd2f520c

輸出:

lease 694d8c03cd2f5214 keepalived with TTL(60)
lease 694d8c03cd2f5214 keepalived with TTL(60)
lease 694d8c03cd2f5214 keepalived with TTL(60)
# ....

這條命令將保持租約活躍,防止其到期。

撤銷租約

使用 lease revoke 可以提前結(jié)束租約:

$ etcdctl lease revoke 694d8c03cd2f520c

輸出:

lease 694d8c03cd2f520c revoked

這將撤銷租約并刪除所有與之相關(guān)聯(lián)的鍵。

備份和恢復

在 etcd 中,snapshot 功能是一種重要的數(shù)據(jù)保護和恢復機制。它允許你保存 etcd 數(shù)據(jù)庫的當前狀態(tài),并在需要時從這些快照中恢復數(shù)據(jù)。

創(chuàng)建快照

使用 etcdctl snapshot save 命令可以創(chuàng)建當前的數(shù)據(jù)快照:

$ etcdctl snapshot save snapshot.db

輸出:

{"level":"info","ts":"2023-11-25T11:05:38.646873+0800","caller":"snapshot/v3_snapshot.go:65","msg":"created temporary db file","path":"snapshot.db.part"}
{"level":"info","ts":"2023-11-25T11:05:38.652861+0800","logger":"client","caller":"v3@v3.5.10/maintenance.go:212","msg":"opened snapshot stream; downloading"}
{"level":"info","ts":"2023-11-25T11:05:38.653092+0800","caller":"snapshot/v3_snapshot.go:73","msg":"fetching snapshot","endpoint":"127.0.0.1:2379"}
{"level":"info","ts":"2023-11-25T11:05:38.657127+0800","logger":"client","caller":"v3@v3.5.10/maintenance.go:220","msg":"completed snapshot read; closing"}
{"level":"info","ts":"2023-11-25T11:05:38.660291+0800","caller":"snapshot/v3_snapshot.go:88","msg":"fetched snapshot","endpoint":"127.0.0.1:2379","size":"98 kB","took":"now"}
{"level":"info","ts":"2023-11-25T11:05:38.660394+0800","caller":"snapshot/v3_snapshot.go:97","msg":"saved","path":"snapshot.db"}

這會將當前 etcd 數(shù)據(jù)庫的狀態(tài)保存到名為 snapshot.db 的文件中。

恢復數(shù)據(jù)

使用 etcdctl snapshot restore 命令可以從快照文件中恢復數(shù)據(jù):

$ etcdctl snapshot restore snapshot.db

輸出:

2023-11-25T11:06:10+08:00 info snapshot/v3_snapshot.go:260 restoring snapshot {"path": "snapshot.db", "wal-dir": "default.etcd/member/wal", "data-dir": "default.etcd", "snap-dir": "default.etcd/member/snap"}
2023-11-25T11:06:10+08:00 info membership/store.go:141 Trimming membership information from the backend...
2023-11-25T11:06:10+08:00 info membership/cluster.go:421 added member {"cluster-id": "cdf818194e3a8c32", "local-member-id": "0", "added-peer-id": "8e9e05c52164694d", "added-peer-peer-urls": ["http://localhost:2380"]}
2023-11-25T11:06:10+08:00 info snapshot/v3_snapshot.go:287 restored snapshot {"path": "snapshot.db", "wal-dir": "default.etcd/member/wal", "data-dir": "default.etcd", "snap-dir": "default.etcd/member/snap"}

這會從 snapshot.db 中恢復數(shù)據(jù),并且配置新的 etcd 實例。

在 K8S 中創(chuàng)建 etcd

安裝 Helm

首先,安裝 Helm 包管理工具,它主要用于簡化 Kubernetes 應用程序的部署和管理。

添加 bitnami 倉庫

然后將 Bitnami 倉庫添加到你的 Helm 包中:

$ helm repo add bitnami https://charts.bitnami.com/bitnami

Bitnami 提供了許多預打包的 K8S 應用和服務,添加它你可以方便的搜索、配置和安裝各種安全可靠的應用。

下載 chart

從 Bitnami 倉庫下載解壓編輯 etcd 的 Helm chart:

$ helm pull bitnami/etcd
$ tar -xvf etcd-6.8.4.tgz
$ vi etcd/values.yaml

在本地環(huán)境為了避免產(chǎn)生不必要的數(shù)據(jù)文件,將數(shù)據(jù)持久化設置為 false:

persistence:
  ## @param persistence.enabled If true, use a Persistent Volume Claim. If false, use emptyDir.
  enabled: false

這意味著 etcd 數(shù)據(jù)不會被持久化存儲,當 Pod 重啟時數(shù)據(jù)會丟失。

安裝 chart

將 chart 部署到 Kubernetes 集群中:

$ helm install my-release ./etcd

執(zhí)行這個命令,Helm 會根據(jù)位于 /etcd 目錄中的 values.yaml 文件和其他 chart 文件,創(chuàng)建一組 Kubernetes 資源來部署 etcd 應用。

啟動 etcd 客戶端

啟動 etcd 客戶端:

$ kubectl run my-release-etcd-client --restart='Never' --image docker.io/bitnami/etcd:3.5.0-debian-10-r94 --env ROOT_PASSWORD=$(kubectl get secret --namespace default my-release-etcd -o jsonpath="{.data.etcd-root-password}" | base64 --decode) --env ETCDCTL_ENDPOINTS="my-release-etcd.default.svc.cluster.local:2379" --namespace default --command -- sleep infinity

此命令創(chuàng)建一個 etcd 客戶端 Pod,用于和 etcd 服務進行交互。

驗證

首先查看 Pod:

$ kubectl get pod

輸出:

NAME                     READY   STATUS    RESTARTS   AGE
my-release-etcd-0        1/1     Running   0          7m28s
my-release-etcd-client   1/1     Running   0          74s

進入容器:

$ kubectl exec --namespace default -it my-release-etcd-client -- bash

存儲鍵:

$ etcdctl --user root:$ROOT_PASSWORD put /message Hello

獲取鍵:

$ etcdctl --user root:$ROOT_PASSWORD get /message

輸出:

/message
Hello

到這里在 K8S 中創(chuàng)建 etcd,從設置環(huán)境、安裝 etcd,到通過客戶端驗證的基本使用到這里就完成了。

責任編輯:武曉燕 來源: 小二十七
相關(guān)推薦

2023-11-29 09:29:48

Kuberneteskube

2021-04-13 05:38:35

Kubernetes存儲數(shù)據(jù)庫

2022-08-05 08:48:33

KubernetesEtcd數(shù)據(jù)

2024-05-23 13:49:00

Kuberneteetcd集群

2023-08-18 09:00:00

Kubernetes數(shù)據(jù)庫SQL

2018-07-02 06:33:25

物聯(lián)網(wǎng)手機漫游網(wǎng)絡

2021-03-31 21:20:15

WiFi網(wǎng)絡漫游

2021-04-02 14:23:12

WiFi網(wǎng)絡技術(shù)

2011-08-09 09:48:20

JavaScript

2017-12-28 16:57:42

智慧中心

2013-09-25 09:52:16

wifi 2.0無線網(wǎng)絡

2018-01-03 22:20:23

移動

2017-02-24 17:24:16

Etcd架構(gòu)分布式系統(tǒng)

2022-02-09 16:02:27

惡意軟件網(wǎng)絡攻擊黑客

2022-11-06 19:28:02

分布式鎖etcd云原生

2014-08-04 13:56:42

安卓概念

2018-07-02 14:01:32

運營商提速降費漫游

2011-04-22 09:55:26

AOFAX金恒科技漫游

2023-07-13 10:19:05

5G物聯(lián)網(wǎng)

2023-07-04 11:06:24

Commvault
點贊
收藏

51CTO技術(shù)棧公眾號