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/ # 

主从环境是否正常初始化

©著作权归作者所有:来自51CTO博客作者BigQ2020的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. python自动创建每周周报模板
  2. gitlab迁移及迁移后500问题
  3. 如何使用iMovie模板创建新预告片?
  4. k8s实战之理解helm
  5. Linux运维入门教程05-02 (利用vi编辑器创建和编辑正文文件)
  6. 苹果macOS Big Sur可启动安装程序驱动器如何创建?
  7. 磁盘存储管理和文件系统管理 RAID
  8. Linux权限管理chmod 755(chmod xxx)教程
  9. MySQL数据库入门——常用基础命令

随机推荐

  1. 运用Python语言编写获取Linux基本系统信
  2. 从0开始的Python学习019更多的Python内容
  3. gsutil - 正则表达式与替代不工作
  4. 第五十九节,模拟浏览器请求Python结合html
  5. LBP特征学习(附python实现)
  6. Python处理字符串
  7. 在管理页面中编辑M2M的两面
  8. 5月28日 python学习总结 CSS学习(二)
  9. 用python阐释工作量证明(proof of work)
  10. 008 Python基本语法元素小结