K8S redis 部署的項(xiàng)目實(shí)踐
在Kubernetes 1.26.14中部署Redis單實(shí)例/集群的步驟如下(結(jié)合NFS持久化存儲(chǔ)與認(rèn)證配置):
一、部署Redis單實(shí)例(StatefulSet模式)
1. 創(chuàng)建配置文件 redis-statefulset.yaml
# ConfigMap存儲(chǔ)Redis配置 apiVersion: v1 kind: ConfigMap metadata: name: redis-config data: redis.conf: | bind 0.0.0.0 port 6379 requirepass your_secure_password # 替換為實(shí)際密碼 appendonly yes dir /data --- # 密碼Secret apiVersion: v1 kind: Secret metadata: name: redis-secret type: Opaque data: password: eW91cl9zZWN1cmVfcGFzc3dvcmQ= # base64編碼密碼 --- # StatefulSet定義 apiVersion: apps/v1 kind: StatefulSet metadata: name: redis spec: serviceName: redis-headless replicas: 1 # 單實(shí)例 selector: matchLabels: app: redis template: metadata: labels: app: redis spec: containers: - name: redis image: redis:7.0.12 command: ["redis-server", "/etc/redis/redis.conf"] ports: - containerPort: 6379 volumeMounts: - name: config mountPath: /etc/redis - name: data mountPath: /data env: - name: REDIS_PASSWORD # 從Secret注入密碼 valueFrom: secretKeyRef: name: redis-secret key: password volumes: - name: config configMap: name: redis-config volumeClaimTemplates: # 動(dòng)態(tài)PVC - metadata: name: data spec: accessModes: [ "ReadWriteOnce" ] storageClassName: "nfs-redis" # 需提前創(chuàng)建NFS StorageClass resources: requests: storage: 5Gi --- # Headless Service(內(nèi)部DNS) apiVersion: v1 kind: Service metadata: name: redis-headless spec: clusterIP: None selector: app: redis ports: - port: 6379 name: redis --- # NodePort Service(外部訪問(wèn)) apiVersion: v1 kind: Service metadata: name: redis-external spec: type: NodePort selector: app: redis ports: - port: 6379 targetPort: 6379 nodePort: 31000 # 自定義端口范圍30000-32767
2. 部署資源
kubectl apply -f redis-statefulset.yaml
二、部署Redis集群(6節(jié)點(diǎn)3主3從)
1. 調(diào)整StatefulSet配置
# 修改StatefulSet部分 spec: replicas: 6 # 6節(jié)點(diǎn) template: spec: containers: - env: - name: REDIS_CLUSTER_ENABLED # 啟用集群模式 value: "yes" # 其他部分與單實(shí)例相同
2. 初始化集群
# 進(jìn)入任意Redis Pod執(zhí)行集群初始化 kubectl exec -it redis-0 -- redis-cli -a your_password \ --cluster create \ $(kubectl get pods -l app=redis -o jsonpath='{range.items[*]}{.status.podIP}:6379 ') \ --cluster-replicas 1
三、關(guān)鍵配置說(shuō)明
持久化存儲(chǔ)
- 使用NFS動(dòng)態(tài)供給(需提前部署StorageClass)
volumeClaimTemplates
自動(dòng)創(chuàng)建PVC,數(shù)據(jù)目錄/data
持久化
安全認(rèn)證
- 通過(guò)Secret管理密碼,避免明文暴露
requirepass
配置強(qiáng)制認(rèn)證訪問(wèn)
服務(wù)暴露
- Headless Service提供內(nèi)部DNS解析(
redis-0.redis-headless
) - NodePort Service允許外部通過(guò)節(jié)點(diǎn)IP:31000訪問(wèn)
- Headless Service提供內(nèi)部DNS解析(
集群模式擴(kuò)展
- 6節(jié)點(diǎn)部署時(shí)需手動(dòng)初始化集群(
redis-cli --cluster create
) - 生產(chǎn)環(huán)境建議使用哨兵模式(Sentinel)實(shí)現(xiàn)高可用
- 6節(jié)點(diǎn)部署時(shí)需手動(dòng)初始化集群(
四、驗(yàn)證部署
# 檢查資源狀態(tài) kubectl get statefulset,pvc,svc -l app=redis # 測(cè)試單實(shí)例連接 kubectl exec -it redis-0 -- redis-cli -a your_password ping # 查看集群狀態(tài)(集群模式) kubectl exec -it redis-0 -- redis-cli -a your_password cluster nodes
到此這篇關(guān)于K8S redis 部署的項(xiàng)目實(shí)踐的文章就介紹到這了,更多相關(guān)K8S redis 部署內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Redis和springboot 整合redisUtil類的示例代碼
這篇文章主要介紹了Redis和springboot 整合redisUtil類的示例代碼,本文通過(guò)實(shí)例圖文相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12在CenOS系統(tǒng)下安裝和配置Redis數(shù)據(jù)庫(kù)的教程
這篇文章主要介紹了在CenOS系統(tǒng)下安裝和配置Redis數(shù)據(jù)庫(kù)的教程,Redis是一個(gè)可基于內(nèi)存的高性能NoSQL數(shù)據(jù)庫(kù),需要的朋友可以參考下2015-11-11使用Redis實(shí)現(xiàn)延時(shí)任務(wù)的解決方案
這篇文章主要介紹了使用Redis實(shí)現(xiàn)延時(shí)任務(wù)的解決方案,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-08-08如何利用Redis分布式鎖實(shí)現(xiàn)控制并發(fā)操作
這篇文章主要介紹了如何利用Redis分布式鎖實(shí)現(xiàn)控制并發(fā)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-09-09redis中redisson實(shí)現(xiàn)鎖自動(dòng)延時(shí)
redisson作為分布式鎖能夠解決分布式的加鎖解鎖問(wèn)題,還能夠?qū)崿F(xiàn)鎖的設(shè)置存活時(shí)間以及自動(dòng)續(xù)期,本文主要介紹了redis中redisson實(shí)現(xiàn)鎖自動(dòng)延時(shí),感興趣的可以了解一下2024-02-02Redis報(bào)錯(cuò)NOAUTH?Authentication?required簡(jiǎn)單解決辦法
這篇文章主要給大家介紹了關(guān)于Redis報(bào)錯(cuò)NOAUTH?Authentication?required的簡(jiǎn)單解決辦法,Redis無(wú)密碼報(bào)錯(cuò)NOAUTH Authentication required的原因是客戶端訪問(wèn)Redis時(shí)需要提供密碼,但是沒(méi)有提供或提供的密碼不正確,需要的朋友可以參考下2024-05-05Redis實(shí)現(xiàn)登錄注冊(cè)的示例代碼
本文主要介紹了Redis實(shí)現(xiàn)登錄注冊(cè)的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06?Redis?實(shí)現(xiàn)計(jì)數(shù)器和限速器的示例代碼
本文主要介紹了?Redis?實(shí)現(xiàn)計(jì)數(shù)器和限速器的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-02-02