StatefulSet 部署 zookeeper 集群

参考 k8s官网zookeeper集群的部署,数据挂着方式改成通过本地方式创建的pv; https://kubernetes.io/docs/tutorials/stateful-application/zookeeper/

本次共享存储使用的是 NFS;

创建pv

  1. [root@node01 zk-cluster]# cat zk-pv.yaml
  2. apiVersion: v1
  3. kind: PersistentVolume
  4. metadata:
  5. name: zk-01
  6. labels:
  7. name: zk-cluster
  8. type: nfs
  9. spec:
  10. nfs:
  11. path: /data/zk-cluster/zk-01
  12. server: 192.168.1.91
  13. accessModes:
  14. - "ReadWriteOnce"
  15. capacity:
  16. storage: 5Gi
  17. persistentVolumeReclaimPolicy: Recycle
  18. ---
  19. apiVersion: v1
  20. kind: PersistentVolume
  21. metadata:
  22. name: zk-02
  23. labels:
  24. name: zk-cluster
  25. type: nfs
  26. spec:
  27. nfs:
  28. path: /data/zk-cluster/zk-02
  29. server: 192.168.1.91
  30. accessModes:
  31. - "ReadWriteOnce"
  32. capacity:
  33. storage: 5Gi
  34. persistentVolumeReclaimPolicy: Recycle
  35. ---
  36. apiVersion: v1
  37. kind: PersistentVolume
  38. metadata:
  39. name: zk-03
  40. labels:
  41. name: zk-cluster
  42. type: nfs
  43. spec:
  44. nfs:
  45. path: /data/zk-cluster/zk-03
  46. server: 192.168.1.91
  47. accessModes:
  48. - "ReadWriteOnce"
  49. capacity:
  50. storage: 5Gi
  51. persistentVolumeReclaimPolicy: Recycle

StatefulSet

  1. [root@node01 zk-cluster]# cat statefulset-zk.yaml
  2. apiVersion: v1
  3. kind: Service
  4. metadata:
  5. name: zk-hs
  6. labels:
  7. app: zk
  8. spec:
  9. ports:
  10. - port: 2888
  11. name: server
  12. - port: 3888
  13. name: leader-election
  14. clusterIP: None
  15. selector:
  16. app: zk
  17. ---
  18. apiVersion: v1
  19. kind: Service
  20. metadata:
  21. name: zk-cs
  22. labels:
  23. app: zk
  24. spec:
  25. ports:
  26. - port: 2181
  27. name: client
  28. selector:
  29. app: zk
  30. ---
  31. apiVersion: policy/v1beta1
  32. kind: PodDisruptionBudget
  33. metadata:
  34. name: zk-pdb
  35. spec:
  36. selector:
  37. matchLabels:
  38. app: zk
  39. maxUnavailable: 1
  40. ---
  41. apiVersion: apps/v1
  42. kind: StatefulSet
  43. metadata:
  44. name: zk
  45. spec:
  46. selector:
  47. matchLabels:
  48. app: zk
  49. serviceName: zk-hs
  50. replicas: 3
  51. updateStrategy:
  52. type: RollingUpdate
  53. podManagementPolicy: OrderedReady
  54. template:
  55. metadata:
  56. labels:
  57. app: zk
  58. spec:
  59. affinity:
  60. podAntiAffinity:
  61. requiredDuringSchedulingIgnoredDuringExecution:
  62. - labelSelector:
  63. matchExpressions:
  64. - key: "app"
  65. operator: In
  66. values:
  67. - zk
  68. topologyKey: "kubernetes.io/hostname"
  69. containers:
  70. - name: kubernetes-zookeeper
  71. #imagePullPolicy: Always
  72. imagePullPolicy: ifNotPresent
  73. image: "registry.k8s.com/test/zookeeper:1.0-3.4.10"
  74. resources:
  75. requests:
  76. memory: "1Gi"
  77. cpu: "0.5"
  78. ports:
  79. - containerPort: 2181
  80. name: client
  81. - containerPort: 2888
  82. name: server
  83. - containerPort: 3888
  84. name: leader-election
  85. command:
  86. - sh
  87. - -c
  88. - "start-zookeeper \
  89. --servers=3 \
  90. --data_dir=/var/lib/zookeeper/data \
  91. --data_log_dir=/var/lib/zookeeper/data/log \
  92. --conf_dir=/opt/zookeeper/conf \
  93. --client_port=2181 \
  94. --election_port=3888 \
  95. --server_port=2888 \
  96. --tick_time=2000 \
  97. --init_limit=10 \
  98. --sync_limit=5 \
  99. --heap=512M \
  100. --max_client_cnxns=60 \
  101. --snap_retain_count=3 \
  102. --purge_interval=12 \
  103. --max_session_timeout=40000 \
  104. --min_session_timeout=4000 \
  105. --log_level=INFO"
  106. readinessProbe:
  107. exec:
  108. command:
  109. - sh
  110. - -c
  111. - "zookeeper-ready 2181"
  112. initialDelaySeconds: 10
  113. timeoutSeconds: 5
  114. livenessProbe:
  115. exec:
  116. command:
  117. - sh
  118. - -c
  119. - "zookeeper-ready 2181"
  120. initialDelaySeconds: 10
  121. timeoutSeconds: 5
  122. volumeMounts:
  123. - name: datadir
  124. mountPath: /var/lib/zookeeper
  125. securityContext:
  126. # runAsUser: 1000
  127. fsGroup: 1000
  128. volumeClaimTemplates:
  129. - metadata:
  130. name: datadir
  131. spec:
  132. accessModes: [ "ReadWriteOnce" ]
  133. resources:
  134. requests:
  135. storage: 5Gi

测试

查看每台机器的myid

  1. [root@node01 zk-cluster]# for i in 0 1 2; do echo "myid zk-$i";kubectl exec zk-$i -- cat /var/lib/zookeeper/data/myid; done
  2. myid zk-0
  3. 1
  4. myid zk-1
  5. 2
  6. myid zk-2
  7. 3

要获取zkStatefulSet 中每个Pod的完全合格域名(FQDN),请使用以下命令

  1. [root@node01 zk-cluster]# for i in 0 1 2; do kubectl exec zk-$i -- hostname -f; done
  2. zk-0.zk-hs.default.svc.cluster.local
  3. zk-1.zk-hs.default.svc.cluster.local
  4. zk-2.zk-hs.default.svc.cluster.local

k8s 上使用 StatefulSet 部署 zookeeper 集群的更多相关文章

  1. Docker部署zookeeper集群和kafka集群,实现互联

    本文介绍在单机上通过docker部署zookeeper集群和kafka集群的可操作方案. 0.准备工作 创建zk目录,在该目录下创建生成zookeeper集群和kafka集群的yml文件,以及用于在该 ...

  2. 第十五章 部署zookeeper集群

    1.集群规划 主机名 角色 IP hdss7-11.host.com k8s代理节点1.zk1 10.4.7.11 hdss7-12.host.com k8s代理节点2.zk2 10.4.7.12 h ...

  3. Linux环境快速部署Zookeeper集群

    一.部署前准备: 1.下载ZooKeeper的安装包: http://zookeeper.apache.org/releases.html 我下载的版本是zookeeper-3.4.9. 2.将下载的 ...

  4. 在CentOS7部署zookeeper集群以及简单API使用

    一.部署zookeeper集群 zookeeper是一个针对大型分布式系统的协调系统,提供的功能有统一名称服务.分布式同步等. 1.上传zk安装包 2.解压     tar -xzvf zookeep ...

  5. ZooKeeper 01 - 什么是ZooKeeper + 部署ZooKeeper集群

    目录 1 什么是ZooKeeper 2 ZooKeeper的功能 2.1 配置管理 2.2 命名服务 2.3 分布式锁 2.4 集群管理 3 部署ZooKeeper集群 3.1 下载并解压安装包 3. ...

  6. Centos或Windows中部署Zookeeper集群及其简单用法

    一.简介 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.它是一个为分布式应用提供一致性服务的软件 ...

  7. 使用docker或者docker-compose部署Zookeeper集群

    之前有介绍过Zookeeper的安装部署(Zookeeper基础教程(二):Zookeeper安装),但是那里我是基于独立的虚拟机来实现部署的,这种部署方式适合线上集群部署.后来有几次想用一下Zook ...

  8. 安装部署zookeeper集群

    实验说明: 三台虚拟机做zookeeper集群,集群个数最好是奇数个,原理详见zookeeper 详解  安装zookeeper 请确保jdk 已安装好,否则无法启动  三台虚拟机IP分别为:192. ...

  9. 阿里云k8s部署zookeeper集群

    1. 阿里云k8s创建有状态应用 StatefulSet ,  选择使用模板创建 可以创建自定义模板 apiVersion: apps/v1 kind: StatefulSet metadata: c ...

随机推荐

  1. 前端技术之:JavaScript Test 断言库

    expect 声称可以写更好的断言. https://github.com/mjackson/expect   chai 可以写BDD样式的断言,也可以写TDD样式的断言,可用于Node.js与浏览器 ...

  2. Java 中文数字转换为阿拉伯数字

    贴出代码,方便学习交流,稍后放出镜像问题的代码 package com.thunisoft.cail.utils; import com.sun.istack.internal.NotNull; im ...

  3. CSPS模拟 52

    我貌似曾经说过我是个只会做水题的巨型辣鸡.. 这次证明我水题都不会做.. T1 平均数 区间数$n^2$ 枚举是不可能了 可是好像没有无用的计算量.. 刚想到这里,此时开考15min 看见天皇比手势说 ...

  4. Java多线程中join、yield、sleep方法详解

    在Java多线程编程中,Thread类是其中一个核心和关键的角色.因此,对该类中一些基础常用方法的理解和熟练使用是开发多线程代码的基础.本篇主要总结一下Thread中常用的一些静态方法的含义及代码中的 ...

  5. DOM增删改替换

    一.在创建元素的时候为什么要把创建元素到也页面写到后面?   要求:创建一个div,在div中创建10个span. var div = document.createElement("div ...

  6. 伪紫题p5194 天平(dfs剪枝)

    这题作为一个紫题实在是过分了吧...绿的了不起了.—————————————————————————— 看题第一眼,01背包无误.2min打好一交全屏紫色(所以这就是这题是紫色的原因233?) re原 ...

  7. tarjan求lca的神奇

    题目描述 如题,给定一棵有根多叉树,请求出指定两个点直接最近的公共祖先. 输入输出格式 输入格式: 第一行包含三个正整数N.M.S,分别表示树的结点个数.询问的个数和树根结点的序号. 接下来N-1行每 ...

  8. TensorFlow2.0(10):加载自定义图片数据集到Dataset

    .caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { border: 1px so ...

  9. Python 基础之 线程与进程

    Python 基础之 线程与进程 在前面已经接触过了,socket编程的基础知识,也通过socketserver 模块实现了并发,也就是多个客户端可以给服务器端发送消息,那接下来还有个问题,如何用多线 ...

  10. (C#)WPF:Margin属性和Padding属性的介绍

    1.在进行界面设计时,Margin 和Padding都是对边距进行限制的,其区别在于“一个主外,一个主内”. Margin (边缘)是约束控件与容器控件的边距,设置值分别代表左上右下,使用 Margi ...