Kubernetes 部署Redis主从服务(StatefulSet)
16lz
2021-03-29
StatefulSet介绍
暂时略...
实战案例
1. 准备启动redis-server 运行脚本
$ cat launch.sh #!/bin/bashPASSWORD=$(cat /etc/redis-passwd/passwd)#StatefulSet会给每个POD分配一个固定的主机网络标识符号,所以这里可以通过主机名去判断主节点if [ "${HOSTNAME}" == "redis-0" ]then redis-server --requirepass ${PASSWORD}else redis-server --slaveof redis-0.redis 6379 --masterauth ${PASSWORD} --requirepass ${PASSWORD}fi
2. 创建ConfigMap和密码配置Secret
#secret对象存放密码$ kubectl create secret generic redis-passwd --from-literal=passwd="password"#configmap对象存放运行脚本$ kubectl delete configmap redis-config$ kubectl create configmap redis-config --from-file=launch.sh=launch.sh $ kubectl get configmap $ kubectl get configmap redis-config -o yaml
3. 创建Headless Service
$ cat headless-service.yamlapiVersion: v1kind: Servicemetadata: name: "redis" labels: app: redisspec: ports: - port: 6379 name: redis clusterIP: None selector: app: redis
4. 创建Statefulset
$ cat statefulset.yamlapiVersion: apps/v1kind: StatefulSetmetadata: name: redis namespace: defaultspec: serviceName: "redis" replicas: 3 selector: matchLabels: app: redis template: metadata: labels: app: redis spec: containers: - name: redis image: redis:5-alpine ports: - containerPort: 6379 name: redis volumeMounts: - name: data mountPath: /data - name: script mountPath: /script/launch.sh subPath: launch.sh - name: passwd-volume mountPath: /etc/redis-passwd command: - sh - -c - sleep 10 && sh /script/launch.sh #这里解释下,我在本地测试环境如果不加sleep,启动redis之后会提示找不到/script/launch.sh,我不知道是不是延迟挂载之类,暂时先管,跑起来再说 volumes: - name: script configMap: name: redis-config defaultMode: 0777 - name: passwd-volume secret: secretName: redis-passwd volumeClaimTemplates: - metadata: name: data spec: accessModes: ["ReadWriteOnce"] resources: requests: storage: 1Gi
5. 检查
#每个POD是否被正确分配网络标识$ kubectl run -i --tty --image busybox:1.28 dns-test --restart=Never --rmkubIf you don't see a command prompt, try pressing enter./ # nslookup redis-0.redisServer: 10.96.0.10Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.localName: redis-0.redisAddress 1: 10.244.1.112 redis-0.redis.default.svc.cluster.local/ #
主从环境是否正常初始化
更多相关文章
- python自动创建每周周报模板
- gitlab迁移及迁移后500问题
- 如何使用iMovie模板创建新预告片?
- k8s实战之理解helm
- Linux运维入门教程05-02 (利用vi编辑器创建和编辑正文文件)
- 苹果macOS Big Sur可启动安装程序驱动器如何创建?
- 磁盘存储管理和文件系统管理 RAID
- Linux权限管理chmod 755(chmod xxx)教程
- MySQL数据库入门——常用基础命令