K8S redis 部署的項目實踐
更新時間:2025年05月16日 09:18:17 作者:文靜小土豆
本文主要介紹了K8S redis 部署的項目實踐,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
在Kubernetes 1.26.14中部署Redis單實例/集群的步驟如下(結合NFS持久化存儲與認證配置):
一、部署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. 初始化集群
# 進入任意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
三、關鍵配置說明
持久化存儲
- 使用NFS動態(tài)供給(需提前部署StorageClass)
volumeClaimTemplates自動創(chuàng)建PVC,數(shù)據(jù)目錄/data持久化
安全認證
- 通過Secret管理密碼,避免明文暴露
requirepass配置強制認證訪問
服務暴露
- Headless Service提供內(nèi)部DNS解析(
redis-0.redis-headless) - NodePort Service允許外部通過節(jié)點IP:31000訪問
- Headless Service提供內(nèi)部DNS解析(
集群模式擴展
- 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
到此這篇關于K8S redis 部署的項目實踐的文章就介紹到這了,更多相關K8S redis 部署內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
redis發(fā)布和訂閱_動力節(jié)點Java學院整理
這篇文章主要為大家詳細介紹了redis發(fā)布和訂閱的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-08-08
Redis和數(shù)據(jù)庫 數(shù)據(jù)同步問題的解決
這篇文章主要介紹了Redis和數(shù)據(jù)庫 數(shù)據(jù)同步問題的解決操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01

