k8s部署redis

k8s 1.26集群安装-CSDN博客

机器配置

1主2从,提前安装好k8s集群

192.168.10.106=n1

192.168.10.107=n2

192.168.10.108=m1

主节点安装nfs

yum install -y nfs-utils rpcbind

systemctl restart rpcbind
systemctl enable rpcbind
systemctl restart nfs
systemctl enable nfs

从节点安装nfs

yum -y install nfs-utils
systemctl enable nfs 

在主节点创建dev命名空间

kubectl create ns dev

查看命名空间

 kubectl get ns

创建nfs存储目录

下面的操作都是在主节点

创建nfs存储目录

mkdir -p /data/nfs/redis

 把目录暴露给内网访问,就是pod会访问这些目录

vi /etc/exports 

/data/nfs/redis  *(rw,sync,no_root_squash)

 

然后重启nfs-server

systemctl restart rpcbind
systemctl enable rpcbind
systemctl restart nfs
systemctl enable nfs

校验是否成功

showmount -e 192.168.10.108 

创建configmap

vi redis-cm.yaml

apiVersion: v1
data:
  redis.conf: |
    # 关闭保护模式
    protected-mode no

    # redis链接密码
    # requirepass redis

    # 日志级别
    loglevel warning

    # 日志存放目录
    logfile "/data/redis.log"

    # 数据文件目录
    dir /data
    dbfilename dump.rdb

    # 数据库数量
    databases 16

    # 保存数据库到数据文件
    save 900 1
    save 300 10
    save 60 10000
kind: ConfigMap
metadata:
  name: redis-cm
  namespace: dev

执行

kubectl apply -f redis-cm.yaml

查看configmap

kubectl get cm -n dev

创建pv和pvc 

vi redis-pv-pvc.yaml

apiVersion: v1
kind: PersistentVolume
metadata:
  name: redis-pv
spec:
  capacity:
    storage: 1Gi
  accessModes:
    - ReadWriteMany
  nfs:
    server: 192.168.10.108
    path: /data/nfs/redis
  storageClassName: "nfs"

---

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: redis-pvc
  namespace: dev
spec:
  accessModes:
    - ReadWriteMany
  storageClassName: "nfs"
  resources:
    requests:
      storage: 1Gi
  volumeName: redis-pv
 

执行

kubectl apply -f redis-pv-pvc.yaml

查看pv和pvc 

kubectl get pv

kubectl get pvc -n dev

创建service 

vi redis-svc.yaml

apiVersion: v1
kind: Service
metadata:
  name: redis-svc
  namespace: dev
  labels:
    app: redis
spec:
  ports:
    - port: 6379
      name: redis
      targetPort: 6379
      nodePort: 30379
   # 如果需要NodePort暴露则将这里注释
  #clusterIP: None
  selector:
    app: redis
  # 如果需要NodePort暴露则将这里改为NodePort
  # ClusterIP, NodePort, LoadBalancer
  type: NodePort
  # 如果需要NodePort暴露则将这里改为ClientIP
  # ClientIP, None
  sessionAffinity: ClientIP 

执行

kubectl apply -f redis-svc.yaml

查看

kubectl get svc -n dev 

创建有状态的pod 

serviceName和service绑定

claimName和pvc绑定

configMap的name和configmap绑定

vi redis-pod.yaml

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: redis
  namespace: dev
spec:
  selector:
    matchLabels:
      app: redis
  serviceName: redis-svc
  replicas: 1
  template:
    metadata:
      labels:
        app: redis
    spec:
      terminationGracePeriodSeconds: 10
      containers:
        - command:
            - "redis-server"
            - "/usr/local/etc/redis.conf"
          name: redis
          image: redis:latest
          ports:
            - containerPort: 6379
              name: redis
          volumeMounts:
            - name: redis-data
              mountPath: /data
            - name: redis-config
              mountPath: /usr/local/etc
              readOnly: true
      volumes:
        - name: redis-data
          persistentVolumeClaim:
            claimName: redis-pvc
        - name: redis-config
          configMap:
            name: redis-cm
            items:
              - key: redis.conf
                path: redis.conf

执行

 kubectl apply -f redis-pod.yaml

查看

 kubectl get pods -o wide -n dev

连接redis

通过service暴露出来的端口连接

springboot配置redis 

通过service暴露出来的端口连接

数据都会在nfs目录存储

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值