K8S创建ReplicaSet控制器示例
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
更多推荐
已为社区贡献2条内容
所有评论(0)