0
点赞
收藏
分享

微信扫一扫

K8S创建ReplicaSet控制器示例

​​无意中发现了一个很好的软件测试网站,忍不住分享一下给大家。觉得很实用,所以分享给大家。点这里可以跳转到教程。​​

本文是以redis进行安装示例,这里只是启动单个redis服务示例。redis集群选择StatefulSet是最好的选择。对于该部分感兴趣可以私信我。本节只是讲解,文中代码可能没法使用,只做讲解用途。

在开始前需要创建一个自己安装部署一个redis镜像。

本文自己构建的镜像的tag为:redis/master:2.5.0,镜像中需要放入**/home/redis/startup.sh**脚本:

#!/bin/bash
source /root/.bash_profile
/usr/sbin/sshd
sed -i "s/127.0.0.1/${POD_IP}/g" /home/redis/redis/bin/redis_master
sed -i "s/127.0.0.1/${POD_IP}/g" /home/redis/redis/etc/redis-master.conf
su - redis -c "redis_master $1"

脚本中的${POD_IP}在后续ReplicaSet中会使用,用户替换配置的。

创建的redis-master的ReplicaSet的yaml文件redis-master-rs.yaml

apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: redis-master
namespace: wel
spec:
replicas: 3
selector:
matchLabels:
app: redis
role: master
template:
metadata:
labels:
app: redis
role: master
spec:
serviceAccountName: harbor
containers:
- name: redis-master
image: redis/master:2.5.0
command: ['/bin/sh']
args: ["-c","/home/redis/startup.sh start ; while true; do tailf /home/redis/redis/log/redis.log;sleep 10;done"]
ports:
- containerPort: 6001
env:
- name: POD_IP
valueFrom:
fieldRef:
fieldPath: status.podIP
restartPolicy: Always

中serviceAccountName: harbor引用之前“​​K8S中配置镜像拉取serviceAccount​​”

env模块中的POD_IP用户获取当前POD的IP地址,该地址用于替换redis中的配置POD_IP。

需要在args中调用启动startup.sh启动redis的master服务,其次创建一个死循环,保证pod始终为RUNNING状态。

然后在后台服务执行命令:

kubectl create -f redis-master-rs.yaml

命令执行成功无报错,可以执行命令查看pod是否创建成功。由于本rs指定了namespace,需要在命令中使用-n参数:

kubectl get rs -n wel


举报

相关推荐

0 条评论