k8s一键安装redis单机版

1.前置条件

已经搭建好kubernetes1.25.4集群

Kubernetes 1.25.4版本安装_V胡桃夹子的博客-CSDN博客

kubeasz安装kubernetes1.25.5_V胡桃夹子的博客-CSDN博客

kubernetes1.25.4机器安装好了nfs服务

CentOS8搭建nfs服务_V胡桃夹子的博客-CSDN博客

本文介绍的mysql8单节点部署,自定义k8s namespacee,创建configmap来部署的

2.创建redis.yaml

复制下面脚本执行生成mysql.yaml部署文件

cat > redis.yaml<<EOF
---
# namespace
apiVersion: v1    # 版本要符合kubectl apiVersion规定,v1是稳定版本
kind: Namespace   # k8s资源类型,Namespace资源
metadata:         # 资源的元数据语句块,是针对kind对应资源的全局属性
  name: develop   # 声明工作空间名称
  labels:         # 自定义标签列表
    name: develop # 设置namespace的label标签
---
apiVersion: v1       # 必选,版本号,例如v1
kind: ConfigMap      # 必选,资源类型,例如 ConfigMap
metadata:            # 必选,元数据
  namespace: develop # Pod所属的命名空间,不指定则默认为"default"
  name: redis-config # 必选,Pod名称
  labels:            # 自定义标签列表
    app: redis       # 自定义标签
data:
  # redis.conf代表着redis的配置文件名称
  redis.conf: |-
    # 修改连接为所有ip
    bind 0.0.0.0
    # 允许外网访问
    protected-mode no
    # port 6379
    # 客户端空闲n秒后断开连接;默认是 0 表示不断开
    timeout 0
    # RDB存储配置
    # save <seconds> <changes>指定多长时间刷新快照至磁盘,有两属性值,只有当两属性值均满足时才触发;可设置多种级别
    # 只要下面三个save条件任意满足一个,服务器就会自动执行BGSAVE命令
    # 表示在 900 秒内,至少更新了 1 条数据,Redis 自动触发 BGSAVE 命令,将数据保存到硬盘
    save 900 1
    # 表示在 300 秒内,至少更新了 10 条数据,Redis 自动触 BGSAVE 命令,将数据保存到硬盘。
    save 300 10
    #表示 60 秒内,至少更新了 10000 条数据,Redis 自动触发 BGSAVE 命令,将数据保存到硬盘。
    save 60 10000
    # 默认值yes,当dump数据库时使用LZF压缩字符串对象,如果CPU资源比较紧张,可以设置为no,选择不压缩;
    rdbcompression yes
    # 持久化文件名称
    dbfilename dump.rdb
    # #持久化数据存放位置
    dir /data
    # 开启aof配置
    appendonly yes
    # 调用fsync()方式让操作系统写数据到磁盘上,数据同步方式,配置everysec为每秒同步,这也是默认方式;
    appendfsync everysec
    appendfilename "appendonly.aof"
    # 设置密码
    # requirepass 123456
---
apiVersion: apps/v1                 # 版本要符合kubectl apiVersion规定,v1是稳定版本
kind: Deployment                    # 表明是Kubernetes Deployment
metadata:                           # 资源的元数据语句块,是针对kind对应资源的全局属性
  namespace: develop                # 指定工作空间
  name: redis                       # Deployment的名称,Deployment下全局唯一
  labels:                           # 自定义标签列表
    app: redis                      # 标识Pod,在Service中的selector指定匹配label为app:myName
spec:                               # 必选,Pod中容器的详细定义
  replicas: 1                       # Pod 副本的期待数量
  selector:
    matchLabels:
      app: redis                    # 符合目标的Pod拥有此标签
  template:                         # 根据此模版创建Pod的副本
    metadata:
      labels:
        app: redis                  # Pod副本拥有的标签,对应Selector
    spec:
      # nodeName: k8s-node            # 表示将该Pod调度到指定到名称的node节点上
      containers:                   # 必选,Pod中容器列表
      - name: redis                 # Pod中包含的容器
        # 容器对应的Docker Image,即镜像名
        image: docker.io/library/redis:7.0.7
        # 容器的启动命令列表,如不指定,使用打包时使用的启动命令
        command:  ["sh","-c","redis-server /usr/local/redis/redis.conf"]
        ports:
        - containerPort: 6379       # 容器应用监听的端口号
        resources:                  # 代表容器启动请求的资源限制,分配的资源必须要达到此要求
          limits:                   # 代表最多可以请求多少资源
            # CPU计量单位叫毫核(m)。1节点CPU核数乘以1000,得到是节点总的CPU总数。如1个节点有2个核,那该节点CPU总量为2000m
            cpu: 1000m              # 等同于1
            memory: 1024Mi          # 内存限制总和不能超过1 GiB
          requests:                 # 资源需求
            # CPU计量单位叫毫核(m)。1节点CPU核数乘以1000,得到是节点总的CPU总数。如1个节点有2个核,那该节点CPU总量为2000m
            cpu: 1000m              # 等同于1
            memory: 1024Mi          # 内存限制总和不能超过1 GiB
        livenessProbe:              # 判断容器是否正常运行,如果失败则杀掉容器(不是pod),再根据重启策略是否重启容器
          tcpSocket:                # 指定探针探测方式
            port: 6379              # 对容器内的端口或socket进行TCP检查,如果端口成功打开,证明容器正常运行
          initialDelaySeconds: 300  # 初始化延迟时间
          timeoutSeconds: 1         # 单次探测超时时间
          periodSeconds: 10         # 探测周期间隔时间
          successThreshold: 1       # 探测失败到成功的重试次数
          failureThreshold: 3       # 探测成功到失败的重试次数
          # 判断容器是否能进入ready状态,探针失败则进入noready状态,并从service的endpoints中剔除此容器
        readinessProbe:
          tcpSocket:                # 指定探针探测方式
            port: 6379              # 对容器内的端口或socket进行TCP检查,如果端口成功打开,证明容器正常运行
          initialDelaySeconds: 5    # 初始化延迟时间
          timeoutSeconds: 1         # 单次探测超时时间
          periodSeconds: 10         # 探测周期间隔时间
          successThreshold: 1       # 探测失败到成功的重试次数
          failureThreshold: 3       # 探测成功到失败的重试次数
        volumeMounts:
          # 自定义名字,名字须与volumes.name一致
        - name: config
          # 容器内地址
          mountPath:  /usr/local/redis/redis.conf
          subPath: redis.conf       # redis.conf配置文件
      volumes:
      - name: config                # 自定义名字,名字须与volumeMounts.name一致
        configMap:
          name: redis-config        # 引用的ConfigMap名称
---
apiVersion: v1         # 版本要符合kubectl apiVersion规定,v1是稳定版本
kind: Service          # 表明是Kubernetes Service
metadata:              # 资源的元数据语句块,是针对kind对应资源的全局属性
  name: redis          # Deployment的名称,Deployment下全局唯一
  namespace: develop   # 指定工作空间
  labels:              # 自定义标签列表
    app: redis         # 标识Pod,在Service中的selector指定匹配label为app:myName
spec:                  # 必选,Pod中容器的详细定义
  type: NodePort       # 配置为NodePort,外部可以访问,不指定则默认为ClusterIP,只能集群内部访问
  ports:
    - port: 6379       # 即容器间服务调用的端口,这里的端口和clusterIP对应
      protocol: TCP       
      nodePort: 6379   # 容器所在宿机端口,默认30000-32767之间,除非有改nodepord端口范围,外网IP映射就是将端口映射出去
      targetPort: 6379 # 容器暴露的端口,即当前容器内应用的服务端口,例如Tomcat 8080
  selector:
    app: redis         # 这里选择器一定要选择容器的标签
EOF

3.部署

一键部署命令:

kubectl apply -f redis.yaml

一键回收命令:

kubectl delete -f redis.yaml

4.引用Reference

CentOS8搭建nfs服务
Kubernetes 1.25.4版本安装
kubeasz安装kubernetes1.25.5
k8s一键安装redis单机版
k8s一键安装mysql8单机版
k8s部署springboot应用
Docker安装及学习
Docker制作springboot运行应用镜像
Docker制作Java8环境镜像
Docker安装Mysql5.7.31
Docker安装Mysql8.1.0
Elasticsearch单机版本安装
Elasticsearch集群安装
ELK安装
Docker安装ELK
zookeeper集群安装
Nginx日志切割
RabbitMQ集群安装
springboot集成prometheus+grafana
windows11安装android应用

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐