配置文件
假设把配置文件放在目录 ./redis
下
namespace.yaml
apiVersion: v1
kind: Namespace
metadata:
name: redis
labels:
app.kubernetes.io/name: redis
app.kubernetes.io/instance: redis
config.yaml
kind: ConfigMap
apiVersion: v1
metadata:
name: redis-config
namespace: redis
labels:
app: redis
data:
redis.conf: |-
dir /data
port 6379
bind 0.0.0.0
appendonly yes
protected-mode no
requirepass Hello1234!!!!
pidfile /data/redis-6379.pid
pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: redis-pvc
namespace: redis
labels:
app: redis
annotations:
volume.beta.kubernetes.io/storage-class: "nfs-storage"
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 2Gi
deployment.yaml
---
apiVersion: v1
kind: Service
metadata:
name: redis-svc
namespace: redis
labels:
app: redis
spec:
type: ClusterIP
ports:
- name: redis
port: 6379
selector:
app: redis
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: redis-dep
namespace: redis
labels:
app: redis
spec:
replicas: 1
selector:
matchLabels:
app: redis
template:
metadata:
labels:
app: redis
spec:
# 进行初始化操作,修改系统配置,解决 Redis 启动时提示的警告信息
initContainers:
- name: system-init
image: busybox:1.32
imagePullPolicy: IfNotPresent
command:
- "sh"
- "-c"
- "echo 2048 > /proc/sys/net/core/somaxconn && echo never > /sys/kernel/mm/transparent_hugepage/enabled"
securityContext:
privileged: true
runAsUser: 0
volumeMounts:
- name: sys
mountPath: /sys
containers:
- name: redis
image: redis:5.0.8
command:
- "sh"
- "-c"
- "redis-server /usr/local/etc/redis/redis.conf"
ports:
- containerPort: 6379
resources:
limits:
cpu: 1000m
memory: 1024Mi
requests:
cpu: 1000m
memory: 1024Mi
livenessProbe:
tcpSocket:
port: 6379
initialDelaySeconds: 300
timeoutSeconds: 1
periodSeconds: 10
successThreshold: 1
failureThreshold: 3
readinessProbe:
tcpSocket:
port: 6379
initialDelaySeconds: 5
timeoutSeconds: 1
periodSeconds: 10
successThreshold: 1
failureThreshold: 3
volumeMounts:
- name: data
mountPath: /data
- name: config
mountPath: /usr/local/etc/redis/redis.conf
subPath: redis.conf
volumes:
- name: data
persistentVolumeClaim:
claimName: redis-pvc
- name: config
configMap:
name: redis-config
- name: sys
hostPath:
path: /sys
kustomization.yaml
secretGenerator:
- name: mysql-creds
literals:
- ROOT_PASSWORD=root
resources:
- namespace.yaml
- config.yaml
- pvc.yaml
- deployment.yaml
创建资源
命令如下
kubectl apply -k ./redis
结果:
[user@vm-centos-7 ~]$ kubectl get all -n redis
NAME READY STATUS RESTARTS AGE
pod/redis-dep-77f876647c-g42vd 1/1 Running 1 23d
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/redis-svc ClusterIP 10.97.105.16 <none> 6379/TCP 23d
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/redis-dep 1/1 1 1 23d
NAME DESIRED CURRENT READY AGE
replicaset.apps/redis-dep-77f876647c 1 1 1 23d
测试
使用如下步骤测试 redis
是否正常运行
[user@vm-centos-7 ~]$ kubectl -n redis exec -ti redis-dep-77f876647c-g42vd -- sh
# redis-cli
127.0.0.1:6379> auth Hello1234!!!!
OK
127.0.0.1:6379> config get requirepass
1) "requirepass"
2) "Hello1234!!!!"
127.0.0.1:6379>
使用
在同一个 Kubernetes 集群里面的应用, 可以通过 service
连接 redis
- service name: redis-svc.redis
- port: 6379
网友评论