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-09
Redis報錯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

