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(外部訪問)
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)鍵配置說明
持久化存儲(chǔ)
- 使用NFS動(dòng)態(tài)供給(需提前部署StorageClass)
volumeClaimTemplates自動(dòng)創(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é)點(diǎn)IP:31000訪問
- 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發(fā)布和訂閱_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要為大家詳細(xì)介紹了redis發(fā)布和訂閱的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08
Redis和數(shù)據(jù)庫 數(shù)據(jù)同步問題的解決
這篇文章主要介紹了Redis和數(shù)據(jù)庫 數(shù)據(jù)同步問題的解決操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-01-01
gem install redis報(bào)錯(cuò)的解決方案
今天小編就為大家分享一篇關(guān)于gem install redis報(bào)錯(cuò)的解決方案,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-01-01
Redis 2.8-4.0過期鍵優(yōu)化過程全紀(jì)錄
這篇文章主要給大家介紹了關(guān)于Redis 2.8-4.0過期鍵優(yōu)化的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Redis具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04

