写一个K8S创建redis集群的例子
时间: 2024-04-23 14:05:31 浏览: 108
好的,下面是一个K8S创建redis集群的例子:
首先,我们需要创建一个namespace,用于存放redis相关的资源:
```
kubectl create namespace redis
```
然后,我们创建redis配置,保存为redis-config.yaml:
```
apiVersion: v1
kind: ConfigMap
metadata:
name: redis-config
namespace: redis
data:
redis.conf: |
bind 0.0.0.0
protected-mode no
port 6379
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
```
这个配置文件中,我们开启了redis的cluster模式,并指定了cluster配置文件的文件名。
接下来,我们创建一个redis服务,保存为redis-service.yaml:
```
apiVersion: v1
kind: Service
metadata:
name: redis
namespace: redis
spec:
ports:
- name: redis
port: 6379
targetPort: 6379
clusterIP: None
selector:
app: redis
```
这个服务不会将流量路由到任何后端pod,而是只作为一个虚拟IP地址存在。
接下来,我们创建redis的statefulset,保存为redis-statefulset.yaml:
```
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: redis
namespace: redis
spec:
selector:
matchLabels:
app: redis
serviceName: "redis"
replicas: 6
template:
metadata:
labels:
app: redis
spec:
containers:
- name: redis
image: redis:5.0.5-alpine
command: ["redis-server"]
args: ["--appendonly", "yes"]
ports:
- containerPort: 6379
volumeMounts:
- name: data
mountPath: /data
configMap:
name: redis-config
items:
- key: redis.conf
path: redis.conf
volumeClaimTemplates:
- metadata:
name: data
spec:
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 1Gi
```
在这个statefulset中,我们指定了replicas为6,这表示我们希望K8S创建6个redis实例。同时,我们指定了一个volumeClaimTemplate用于保存redis数据,每个实例都会具有一个独立的PVC。
最后,我们应用这些配置文件:
```
kubectl apply -f redis-config.yaml
kubectl apply -f redis-service.yaml
kubectl apply -f redis-statefulset.yaml
```
这样,K8S将会创建一个6个节点的redis集群。
阅读全文