ZooKeeper--基于Kubernetes部署ZooKeeper

news2024/9/26 5:16:10

在这里插入图片描述

ZooKeeper 服务
服务类型: 无头服务(clusterIP: None),这是 StatefulSet(有状态集)必需的配置。
端口:
2181 (客户端): 用于客户端连接。
2888 (跟随者): 用于 ZooKeeper 服务器之间的连接。
3888 (领导者): 用于领导者选举。
选择器: 选择带有 app: zookeeper 标签的 Pod。
ZooKeeper 有状态集 (StatefulSet)
副本数: 3(用于 ZooKeeper 的法定人数,保证集群可用性)。
服务名称: zookeeper(关联到上面的无头服务)。
环境变量:
ZOO_MY_ID: 根据 Pod 名称动态分配,例如 zookeeper-0、zookeeper-1、zookeeper-2。
ZOO_SERVERS: 定义集群中的服务器,确保它们可以相互通信。
数据卷挂载:
将 data 卷挂载到 /data 目录,存储 ZooKeeper 的数据。
持久化存储
PersistentVolume: 虽然配置中没有显示,但通常会通过 PersistentVolume 或动态存储供应配置持久存储。
VolumeClaimTemplates: 每个 ZooKeeper Pod 都有自己的 10Gi 存储,确保在 Pod 重启时数据不会丢失。
额外注意事项:
高可用性: 这个配置设计用于生产环境,具备高可用性和数据持久性。
动态 DNS: StatefulSet 中的 Pod 会有稳定的 DNS 名称,例如 zookeeper-0.zookeeper、zookeeper-1.zookeeper、zookeeper-2.zookeeper。

拉取镜像

docker pull registry.cn-hangzhou.aliyuncs.com/qiluo-images/zookeeper:latest
vi zookeeper-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: zookeeper
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: zookeeper
  template:
    metadata:
      labels:
        app: zookeeper
    spec:
      containers:
      - name: zookeeper
        image: registry.cn-hangzhou.aliyuncs.com/qiluo-images/zookeeper:latest
        ports:
        - containerPort: 2181
        env:
        - name: ZOOKEEPER_SERVER_ID
          value: "1"
        - name: ZOOKEEPER_CLIENT_PORT
          value: "2181"
        - name: ZOOKEEPER_DATA_DIR
          value: "/data"
        volumeMounts:
        - name: zookeeper-data
          mountPath: /data
      volumes:
      - name: zookeeper-data
        emptyDir: {}
---
apiVersion: v1
kind: Service
metadata:
  name: zookeeper
  namespace: default
spec:
  ports:
  - port: 2181
    targetPort: 2181
  selector:
    app: zookeeper

创建 zookeeper-pv.yaml

vi zookeeper-pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: zookeeper-pv
spec:
  accessModes:
    - ReadWriteOnce
  capacity:
    storage: 10Gi
  hostPath:
    path: /mnt/data/zookeeper
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: zookeeper-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi

创建 zookeeper-statefulset.yaml

vi zookeeper-statefulset.yaml
apiVersion: v1
kind: Service
metadata:
  name: zookeeper
  labels:
    app: zookeeper
spec:
  ports:
    - port: 2181
      name: client
    - port: 2888
      name: follower
    - port: 3888
      name: leader
  clusterIP: None
  selector:
    app: zookeeper
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: zookeeper
spec:
  serviceName: zookeeper
  replicas: 3
  selector:
    matchLabels:
      app: zookeeper
  template:
    metadata:
      labels:
        app: zookeeper
    spec:
      containers:
      - name: zookeeper
        image: registry.cn-hangzhou.aliyuncs.com/qiluo-images/zookeeper:latest
        ports:
        - containerPort: 2181
          name: client
        - containerPort: 2888
          name: follower
        - containerPort: 3888
          name: leader
        env:
        - name: ZOO_MY_ID
          valueFrom:
            fieldRef:
              fieldPath: metadata.name
        - name: ZOO_SERVERS
          value: "server.1=zookeeper-0.zookeeper:2888:3888;2181 server.2=zookeeper-1.zookeeper:2888:3888;2181 server.3=zookeeper-2.zookeeper:2888:3888;2181"
        volumeMounts:
        - name: data
          mountPath: /data
  volumeClaimTemplates:
  - metadata:
      name: data
    spec:
      accessModes: [ "ReadWriteOnce" ]
      resources:
        requests:
          storage: 10Gi


第二种方法
PersistentVolume 和 PersistentVolumeClaim
首先,定义 PersistentVolume 和 PersistentVolumeClaim,这样 ZooKeeper 的数据可以持久化。

vi  zookeeper-pv-pvc.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: zookeeper-pv
spec:
  accessModes:
    - ReadWriteOnce
  capacity:
    storage: 10Gi
  hostPath:
    path: /mnt/data/zookeeper
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: zookeeper-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi
vi zookeeper-deployment.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: zookeeper
  namespace: default
spec:
  serviceName: "zookeeper"
  replicas: 3
  selector:
    matchLabels:
      app: zookeeper
  template:
    metadata:
      labels:
        app: zookeeper
    spec:
      containers:
      - name: zookeeper
        image: registry.cn-hangzhou.aliyuncs.com/qiluo-images/zookeeper:latest
        ports:
        - containerPort: 2181
        - containerPort: 2888
        - containerPort: 3888
        env:
        - name: ZOO_MY_ID
          valueFrom:
            fieldRef:
              fieldPath: metadata.name
        - name: ZOO_SERVERS
          value: "zookeeper-0.zookeeper:2888:3888,zookeeper-1.zookeeper:2888:3888,zookeeper-2.zookeeper:2888:3888"
        volumeMounts:
        - name: zookeeper-data
          mountPath: /data
      volumeClaimTemplates:
      - metadata:
          name: zookeeper-data
        spec:
          accessModes: ["ReadWriteOnce"]
          resources:
            requests:
              storage: 10Gi
---
apiVersion: v1
kind: Service
metadata:
  name: zookeeper
  namespace: default
spec:
  ports:
  - port: 2181
    targetPort: 2181
  - port: 2888
    targetPort: 2888
  - port: 3888
    targetPort: 3888
  clusterIP: None
  selector:
    app: zookeeper

kubectl apply -f zookeeper-deployment.yaml

kubectl apply -f zookeeper-pv-pvc.yaml

这样命令简单了许多。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2077493.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

邮政快递批量查询解决方案:提升业务运营效率

邮政快递批量查询:固乔快递查询助手的高效体验 在电商行业日益繁荣的今天,快递物流成为了连接商家与消费者的关键纽带。而对于需要处理大量订单的电商企业或个人而言,如何高效、准确地查询和跟踪快递物流信息显得尤为重要。幸运的是&#xf…

linux 云主机下载压缩包安装配置 maven 实录(华为云 EulerOS)

本想通过 yum install maven 直接安装的, 方便省事, 但报错说没找到, 于是只能手动安装了, 把整个过程记录了一下, 包括下载, 解压, 配置及验证的全过程, 并对用到的命令及参数作了详细说明, 需要的同学可以参考. maven 官网找到下载链接 首先要去到 maven 的官网, https://m…

OpenCV+Python自动填涂机读卡

接上一篇OpenCVPython识别机读卡-CSDN博客,既然可以识别机读卡填涂答案了,将标准答案绘制到机读卡上也就简单了。 工作原理 1.答题区域为整张图片最大轮廓,先找出答题区域。 2.答题区域分为6行,每行4组,第6行只有1组…

【Java设计模式】抽象文档模式:以灵活性简化数据处理

文章目录 抽象文档设计模式的意图抽象文档模式的详细解释及实际示例Java中抽象文档模式的编程示例抽象文档模式类图Java中何时使用抽象文档模式抽象文档模式的优点和权衡源码下载参考和致谢 抽象文档设计模式的意图 Java中的抽象文档设计模式是一种关键的结构设计模式&#xf…

【mysql集群之组复制】

目录 一、 mysql高可用之组复制 (MGR)组复制单主和多主模式实现mysql的组复制 二、 mysql-router(mysql路由)实现负载均衡 一、 mysql高可用之组复制 (MGR) MySQL Group Replication(简称 MGR )是 MySQL 官方于 2016 年 12 月推出的一个全新的高可用与高…

OpenHarmony南向开发:SmartPerf-Device使用说明

简介 SmartPerf 端是一款基于 OpenHarmony 系统开发的性能功耗测试工具,操作简单易用,可提供包括性能、功耗的关键 KPI 指标,给出具体指标的测试值,包括采集设备的 FPS、CPU、GPU、Ftrace 等指标数据; 目前 SmartPer…

uniapp之app版本更新,整体更新和热更新

目录 需求: 版本更新有两种更新模式: 实现: 前提: 热更新: 打包wgt包:菜单->发行->原生App-制作移动App资源升级包 代码逻辑: 整体更新: 实际项目开发: 需求&#xf…

Linux网络编程——C/C++Web服务器(二):IO多路复用select/poll/epoll实现服务器监听多客户端事件

环境配置:windows电脑用户可以安装WSL配置Linux环境,并且安装vscode及wsl的插件通过vscode连接本机电脑的Linux。 前置内容: Linux网络编程——C/CWeb服务器(一):不断创建新线程处理多客户端连接和通信-C…

代码随想录算法训练营第二十七天(贪心 一)

硬拖拖到现在才写完。。。 关于贪心: 文章链接: 代码随想录 文章摘要: 贪心的本质是选择每一阶段的局部最优,从而达到全局最优。 贪心算法并没有固定的套路。 和其他算法不同,贪心没有能看出局部最优是否能推出整体最优的通法。 用来验证可不可以…

软件渗透测试必要性简析,第三方软件测试机构如何进行渗透测试?

在信息技术迅速发展的今天,软件渗透测试逐渐成为了确保信息安全的重要环节。软件渗透测试指的是对系统或应用程序进行模拟攻击,以发现其潜在的安全风险与脆弱性。不同于传统的安全审计,渗透测试更注重实际攻击过程和攻击者的视角,…

IO进程线程8月26ri

1&#xff0c;思维导图 2&#xff0c;用两个进程分别复制文件的上下两部分到另一个文件 #include<myhead.h> int main(int argc, const char *argv[]) {int fpopen("./1.txt",O_RDONLY);if(fp-1){perror("open");return -1;}int countlseek(fp,0,SE…

如何在 mind+ 中编写 python 程序

打开Mind&#xff0c;点击窗口右上角的【Python模式】按钮&#xff0c;由实时模式切换到Python模式。 将默认的循环执行模块拖动到左边的模块区删除。 点击【变量】&#xff0c;将【打印【Hello World】】模块拼接到【Python主程序开始】下方。 将【获取输入&#xff0c;提示语…

redis(未授权访问漏洞)

环境准备 下载并安装Redis 首先&#xff0c;下载Redis的源代码包并解压&#xff1a; wget http://download.redis.io/releases/redis-2.8.17.tar.gz tar xzf redis-2.8.17.tar.gz cd redis-2.8.17接着&#xff0c;编译安装Redis&#xff1a; 编译完成后&#xff0c;进入src目录…

自动化任务工具 | zTasker v1.97.1 绿色版

在自动化任务管理领域&#xff0c;一款名为zTasker的软件以其卓越的性能和易用性脱颖而出。今天&#xff0c;电脑天空将为大家详细介绍这款软件的亮点和使用场景。 功能特点 1. 轻量级设计&#xff0c;快速启动 zTasker以其小巧的体积和快速的启动速度&#xff0c;为用户提供…

模型 7S分析法(麦肯锡)

系列文章 分享 模型&#xff0c;了解更多&#x1f449; 模型_思维模型目录。组织全面诊断&#xff0c;战略协同优化。 1 7S分析法(麦肯锡)的应用 1.1 邮储银行的转型&#xff1a;基于麦肯锡7S模型的竞争力提升 中国邮储银行面临着激烈的金融行业竞争&#xff0c;为了迅速提升…

考研数学 高等数学----导数应用

核心框架 前置知识 正式内容 知识点1: 知识点2: 知识点: 知识点: 知识点: 知识点: 知识点: 知识点: 知识点: 知识点: 知识点: 知识点: 知识点: 知识点: 知识点: 知识点: 知识点: 知识点: 知识点: 知识点: 知识点: 知识点: 知识点: 知识点: 知识点: 知…

嵌入式系统课后习题(带答案)

资料截图&#xff08;部分&#xff09;&#xff1a; &#x1f680; 获取更多详细资料可点击链接进群领取&#xff0c;谢谢支持&#x1f447; 点击免费领取更多资料

Ant Design Vue中Modal.confirm无法自动关闭

温馨tips:着急看解决方法可跳过碎碎念~ 前两天经理扔给我一个问题&#xff1a;“这个弹窗怎么关不上了&#xff1f;” 我怀着无所谓的心态&#xff1a;小意思啦&#xff0c;5分钟之内解决完~ …当然flag是不能随便乱立的 拉下来项目&#xff08;原神启动&#xff08;不是&…

@ohos.systemParameterEnhance系统参数接口调用:获取系统属性

在去年的文章&#xff0c;笔者介绍了如何使用修改修改OpenHarmony 设备厂家名称 、硬件版本号 等系统属性&#xff0c;本文介绍一下在应用层怎么获取系统属性。 开发环境 DAYU200 rk3568开发板OpenHarmony 4.1r API 10 (full sdk)DevEco Studio 4.1 Release 开发步骤 1.首先…

浅谈【数据结构】树与二叉树之哈夫曼树

目录 1、哈夫曼树 1.1哈夫曼编码 1.2哈夫曼树 1.3构建一棵哈夫曼树 谢谢帅气美丽且优秀的你看完我的文章还要点赞、收藏加关注 没错&#xff0c;说的就是你&#xff0c;不用再怀疑&#xff01;&#xff01;&#xff01; 希望我的文章内容能对你有帮助&#xff0c;一起努力吧…