K8S redis 部署的項目實踐
在Kubernetes 1.26.14中部署Redis單實例/集群的步驟如下(結(jié)合NFS持久化存儲與認(rèn)證配置):
一、部署Redis單實例(StatefulSet模式)
1. 創(chuàng)建配置文件 redis-statefulset.yaml
# ConfigMap存儲Redis配置 apiVersion: v1 kind: ConfigMap metadata: name: redis-config data: redis.conf: | bind 0.0.0.0 port 6379 requirepass your_secure_password # 替換為實際密碼 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 # 單實例 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: # 動態(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(外部訪問) 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é)點3主3從)
1. 調(diào)整StatefulSet配置
# 修改StatefulSet部分 spec: replicas: 6 # 6節(jié)點 template: spec: containers: - env: - name: REDIS_CLUSTER_ENABLED # 啟用集群模式 value: "yes" # 其他部分與單實例相同
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)鍵配置說明
持久化存儲
- 使用NFS動態(tài)供給(需提前部署StorageClass)
volumeClaimTemplates
自動創(chuàng)建PVC,數(shù)據(jù)目錄/data
持久化
安全認(rèn)證
- 通過Secret管理密碼,避免明文暴露
requirepass
配置強(qiáng)制認(rèn)證訪問
服務(wù)暴露
- Headless Service提供內(nèi)部DNS解析(
redis-0.redis-headless
) - NodePort Service允許外部通過節(jié)點IP:31000訪問
- Headless Service提供內(nèi)部DNS解析(
集群模式擴(kuò)展
- 6節(jié)點部署時需手動初始化集群(
redis-cli --cluster create
) - 生產(chǎn)環(huán)境建議使用哨兵模式(Sentinel)實現(xiàn)高可用
- 6節(jié)點部署時需手動初始化集群(
四、驗證部署
# 檢查資源狀態(tài) kubectl get statefulset,pvc,svc -l app=redis # 測試單實例連接 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 部署的項目實踐的文章就介紹到這了,更多相關(guān)K8S redis 部署內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Redis和springboot 整合redisUtil類的示例代碼
這篇文章主要介紹了Redis和springboot 整合redisUtil類的示例代碼,本文通過實例圖文相結(jié)合給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-12-12在CenOS系統(tǒng)下安裝和配置Redis數(shù)據(jù)庫的教程
這篇文章主要介紹了在CenOS系統(tǒng)下安裝和配置Redis數(shù)據(jù)庫的教程,Redis是一個可基于內(nèi)存的高性能NoSQL數(shù)據(jù)庫,需要的朋友可以參考下2015-11-11如何利用Redis分布式鎖實現(xiàn)控制并發(fā)操作
這篇文章主要介紹了如何利用Redis分布式鎖實現(xiàn)控制并發(fā)操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09Redis報錯NOAUTH?Authentication?required簡單解決辦法
這篇文章主要給大家介紹了關(guān)于Redis報錯NOAUTH?Authentication?required的簡單解決辦法,Redis無密碼報錯NOAUTH Authentication required的原因是客戶端訪問Redis時需要提供密碼,但是沒有提供或提供的密碼不正確,需要的朋友可以參考下2024-05-05?Redis?實現(xiàn)計數(shù)器和限速器的示例代碼
本文主要介紹了?Redis?實現(xiàn)計數(shù)器和限速器的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-02-02