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: |-# 修改连接为所有ipbind 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 everysecappendfilename "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副本拥有的标签,对应Selectorspec:# 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总量为2000mcpu: 1000m # 等同于1memory: 1024Mi # 内存限制总和不能超过1 GiBrequests: # 资源需求# CPU计量单位叫毫核(m)。1节点CPU核数乘以1000,得到是节点总的CPU总数。如1个节点有2个核,那该节点CPU总量为2000mcpu: 1000m # 等同于1memory: 1024Mi # 内存限制总和不能超过1 GiBlivenessProbe: # 判断容器是否正常运行,如果失败则杀掉容器(不是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.confsubPath: 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 8080selector:app: redis # 这里选择器一定要选择容器的标签
EOF
3.部署
一键部署命令:
kubectl apply -f redis.yaml
一键回收命令:
kubectl delete -f redis.yaml
4. k8s相关学习
Kubernetes 1.25.4版本安装_V胡桃夹子的CSDN博客
kubeasz安装kubernetes1.25.5_V胡桃夹子的CSDN博客
CentOS8搭建nfs服务_V胡桃夹子的CSDN博客
k8s一键安装mysql8单机版_V胡桃夹子的CSDN博客
Docker制作springboot运行应用镜像_V胡桃夹子的CSDN博客
k8s部署springboot应用_V胡桃夹子的CSDN博客