如何在 Kubernetes 上部署 Redis 集群
Redis 是一個功能強(qiáng)大、用途廣泛的開源平臺,可以支持廣泛的用例,包括作為主數(shù)據(jù)庫運(yùn)行、充當(dāng)消息代理或緩存網(wǎng)站內(nèi)容。
當(dāng)您在 Kubernetes (K8) 上運(yùn)行 Redis 時,該平臺會變得更加強(qiáng)大。在 Kubernetes 上安裝 Redis 可以簡化部署,提高可靠性和性能。
在 Kubernetes 上部署 Redis 的先決條件
在開始 在 Kubernetes 上部署 Redis 的過程之前,您需要滿足以下條件:
- Kubernetes 集群。但任何現(xiàn)代 Kubernetes 發(fā)行版都應(yīng)支持 Redis。
- Helm。使用 Kubernetes 的包管理器 Helm 安裝 Redis。如果您的系統(tǒng)上尚未安裝 Helm,請參閱 Helm 文檔以獲取安裝選項(xiàng)。
- 基本熟悉 Kubernetes。您無需成為 K8s 專家即可在 Kubernetes 上安裝 Redis。但是你應(yīng)該對 kubectl 和 Helm 一定的了解。
在 Kubernetes 上部署 Redis
此示例使用 Redis Helm。
步驟 1
安裝 Redis Helm 。
helm install my-release oci://registry-1.docker.io/bitnamicharts/redis-cluster
步驟 2
驗(yàn)證 Redis Pod 是否正在運(yùn)行。Redis Pod 將在完成 Helm chart 安裝后自動啟動。要驗(yàn)證 Pod 是否已成功啟動,請運(yùn)行以下命令。
kubectl get pods --all-namespaces
輸出應(yīng)包含 Redis Pod 列表,如下所示。
NAMESPACE NAME READY STATUS RESTARTS AGE
default my-release-redis-cluster-2 0/1 ContainerCreating 0 34s
default my-release-redis-cluster-5 0/1 ContainerCreating 0 34s
default my-release-redis-cluster-1 0/1 ContainerCreating 0 34s
default my-release-redis-cluster-0 0/1 ContainerCreating 0 34s
default my-release-redis-cluster-4 0/1 ContainerCreating 0 34s
default my-release-redis-cluster-3 0/1 ContainerCreating 0 34s
在輸出中,Pod 仍處于 ContainerCreating 狀態(tài)。如果您等待一兩分鐘并再次獲取 Pod 列表,您應(yīng)該會看到它們已轉(zhuǎn)換為正在運(yùn)行。
NAMESPACE NAME READY STATUS RESTARTS AGE
default my-release-redis-cluster-5 1/1 Running 0 3m16s
default my-release-redis-cluster-1 1/1 Running 0 3m16s
default my-release-redis-cluster-4 1/1 Running 0 3m16s
default my-release-redis-cluster-0 1/1 Running 0 3m16s
default my-release-redis-cluster-2 1/1 Running 0 3m16s
default my-release-redis-cluster-3 1/1 Running 0 3m16s
Pod 需要處于 Running 狀態(tài),然后才能繼續(xù)連接到 Redis 集群。
步驟 3
將集群密碼導(dǎo)出為環(huán)境變量以連接到新安裝的 Redis 集群
export REDIS_PASSWORD=$(kubectl get secret --namespace "default" my-release-redis-cluster -o jsonpath="{.data.redis-password}" | base64 -d)
步驟 4
運(yùn)行此命令以啟動新容器以托管 Redis 客戶端。這將啟動容器并自動打開其中的 Bash shell。
kubectl run --namespace default my-release-redis-cluster-client --rm --tty -i --restart='Never' \
--env REDIS_PASSWORD=$REDIS_PASSWORD \
--image docker.io/bitnami/redis-cluster:7.2.4-debian-12-r11 -- bash
步驟 5
從該位置輸入以下命令以完成與群集的連接。
redis-cli -c -h my-release-redis-cluster -a $REDIS_PASSWORD
現(xiàn)在,您處于命令提示符處,您可以在其中與 Redis 集群進(jìn)行交互。例如,如果運(yùn)行命令 ,則應(yīng)看到如下所示的輸出。CLUSTER INFO
my-release-redis-cluster:6379> CLUSTER INFO
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
cluster_current_epoch:6
cluster_my_epoch:1
cluster_stats_messages_ping_sent:473
cluster_stats_messages_pong_sent:475