k8s(docker-desktop)简单搭建zookeeper三节点集群
- 前提
- 已经安装了docker-desktop,并且其中的kubernetes启动运行的。或者安装了k8s环境就行
- 可以正常下载dockerhub的镜像,这里采用了dockerhub官方制作的镜像
- 启动集群
- 执行命令
kubectl apply -f zk1.yaml,执行前先把/data的3个宿主机路径修改一下,把datadir的volumeMounts注释放开。不修改也可以启动集群
- 执行命令
zk1.yaml文件如下
apiVersion: v1
kind: Service
metadata:
name: zk1
labels:
zk: zk1
spec:
selector:
zk: zk1
ports:
- protocol: TCP
port: 2181
targetPort: 2181
name: port-1
- protocol: TCP
port: 2888
targetPort: 2888
name: port-2
- protocol: TCP
port: 3888
targetPort: 3888
name: port-3
type: NodePort
---
apiVersion: v1
kind: Service
metadata:
name: zk2
labels:
zk: zk2
spec:
selector:
zk: zk2
ports:
- protocol: TCP
port: 2181
targetPort: 2181
name: port-1
- protocol: TCP
port: 2888
targetPort: 2888
name: port-2
- protocol: TCP
port: 3888
targetPort: 3888
name: port-3
type: NodePort
---
apiVersion: v1
kind: Service
metadata:
name: zk3
labels:
zk: zk3
spec:
selector:
zk: zk3
ports:
- protocol: TCP
port: 2181
targetPort: 2181
name: port-1
- protocol: TCP
port: 2888
targetPort: 2888
name: port-2
- protocol: TCP
port: 3888
targetPort: 3888
name: port-3
type: NodePort
---
apiVersion: v1
kind: Pod
metadata:
name: zk1
namespace: default
labels:
zk: zk1
spec:
containers:
- image: zookeeper:3.6.3
imagePullPolicy: IfNotPresent
name: zk
env:
- name: ZOO_MY_ID
value: "1"
# 默认这个值,可以参考容器里面的entry.sh的内容
# 也可以去dockerhub的链接去查看这个镜像的dockerfile
# - name: ZOO_DATA_DIR
# value: "/data"
- name: ZOO_INIT_LIMIT
value: "5000"
- name: ZOO_SYNC_LIMIT
value: "2000"
- name: JVMFLAGS
value: "-Dzookeeper.electionPortBindRetry=50" # 连接集群重试50次,默认三次
- name: ZOO_SERVERS
value: "server.1=0.0.0.0:2888:3888;2181 server.2=zk2.default.svc.cluster.local:2888:3888;2181 server.3=zk3.default.svc.cluster.local:2888:3888;2181"
ports:
- containerPort: 2181
protocol: TCP
name: client
- containerPort: 2888
protocol: TCP
name: server
- containerPort: 3888
protocol: TCP
name: leader-election
volumeMounts:
# 这里用环境变量,zoo.cfg这个文件是不存在
# - mountPath: /apache-zookeeper-3.6.3-bin/conf
# name: conf
# 为什么一定是data 不是/tmp/zookeeper ZOO_DATA_DIR指定的
# 不配置数据持久的话,把这个配置注释掉 最好配置,不然pod删了数据就没了
#- mountPath: /data
# name: datadir
volumes:
#- name: conf
# hostPath:
# path: /XXXX/conf1XXXX
- name: datadir
hostPath:
# 第一次启动最好是个空文件夹 配置自己的数据的路径,3个pod三个路径
path: /XXXX/tmp1/zookeeper
# type: Directory
---
apiVersion: v1
kind: Pod
metadata:
name: zk2
namespace: default
labels:
zk: zk2
spec:
containers:
- image: zookeeper:3.6.3
imagePullPolicy: IfNotPresent
name: zk
env:
- name: ZOO_MY_ID
value: "2"
- name: ZOO_INIT_LIMIT
value: "5000"
- name: ZOO_SYNC_LIMIT
value: "2000"
- name: JVMFLAGS
value: "-Dzookeeper.electionPortBindRetry=50"
- name: ZOO_SERVERS
value: "server.1=zk1.default.svc.cluster.local:2888:3888;2181 server.2=0.0.0.0:2888:3888;2181 server.3=zk3.default.svc.cluster.local:2888:3888;2181"
# 如果不把本机的ip改成0.0.0.0,会报错"server.1=zk1.default.svc.cluster.local:2888:3888;2181 server.2=zk2.default.svc.cluster.local:2888:3888;2181 server.3=zk3.default.svc.cluster.local:2888:3888;2181"
ports:
- containerPort: 2181
protocol: TCP
name: client
- containerPort: 2888
protocol: TCP
name: server
- containerPort: 3888
protocol: TCP
name: leader-election
volumeMounts:
# - mountPath: /apache-zookeeper-3.6.3-bin/conf
# name: conf
#- mountPath: /data
# name: datadir
volumes:
# - name: conf
# hostPath:
# path: /XXXX/conf2
- name: datadir
hostPath:
path: /XXXX/tmp2/zookeeper
---
apiVersion: v1
kind: Pod
metadata:
name: zk3
namespace: default
labels:
zk: zk3
spec:
containers:
- image: zookeeper:3.6.3
imagePullPolicy: IfNotPresent
name: zk
env:
- name: ZOO_MY_ID
value: "3"
- name: ZOO_INIT_LIMIT
value: "5000"
- name: ZOO_SYNC_LIMIT
value: "2000"
- name: JVMFLAGS
value: "-Dzookeeper.electionPortBindRetry=50"
- name: ZOO_SERVERS
value: "server.1=zk1.default.svc.cluster.local:2888:3888;2181 server.2=zk2.default.svc.cluster.local:2888:3888;2181 server.3=0.0.0.0:2888:3888;2181"
ports:
- containerPort: 2181
protocol: TCP
name: client
- containerPort: 2888
protocol: TCP
name: server
- containerPort: 3888
protocol: TCP
name: leader-election
volumeMounts:
# - mountPath: /apache-zookeeper-3.6.3-bin/conf
# name: conf
#- mountPath: /data
# name: datadir
volumes:
#- name: conf
# hostPath:
# path: /XXXX/conf3
- name: datadir
hostPath:
path: /XXXX/tmp3/zookeeper
- 连接pod分别查看状态
kubectl exec -it zk1 -- shkubectl exec -it zk2 -- shkubectl exec -it zk3 -- sh
# ./bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower
k8s(docker-desktop)简单搭建zookeeper三节点集群的更多相关文章
- zookeeper三节点集群安装记录
以下是3个节点的zk安装记录. 下载 下载地址: http://mirrors.shu.edu.cn/apache/zookeeper/ cd /data/opt/zk wget http://mir ...
- 超快速使用docker在本地搭建hadoop分布式集群
超快速使用docker在本地搭建hadoop分布式集群 超快速使用docker在本地搭建hadoop分布式集群 学习hadoop集群环境搭建是hadoop入门的必经之路.搭建分布式集群通常有两个办法: ...
- 搭建zookeeper+kafka集群
搭建zookeeper+kafka集群 一.环境及准备 集群环境: 软件版本: 部署前操作: 关闭防火墙,关闭selinux(生产环境按需关闭或打开) 同步服务器时间,选择公网ntpd服务器或 ...
- PostgreSQL 三节点集群故障模拟及恢复
PostgreSQL 三节点集群故障模拟及恢复 (postgreSQL9.5.1) 正常状态: 10.2.208.10:node1:master 10.2.208.11:node2:standby1同 ...
- 虚拟机搭建Zookeeper服务器集群完整笔记
虚拟机搭建Zookeeper服务器集群完整笔记 本笔记主要记录自己搭建Zookeeper服务器的全过程,默认已经安装部署好Centos7. 一.虚拟机下Centos无法联网解决方案 1.首先调整虚拟机 ...
- CentOS6.3搭建ZooKeeper伪集群
1. 将zookeeper安装包移动至/home, 解压后改名为zookeeper 相关命令 # 解压 .tar.gz # 重命名 zookeeper 2. 进入zookeeper/conf/目录下, ...
- Docker搭建Zookeeper&Kafka集群
最近在学习Kafka,准备测试集群状态的时候感觉无论是开三台虚拟机或者在一台虚拟机开辟三个不同的端口号都太麻烦了(嗯..主要是懒). 环境准备 一台可以上网且有CentOS7虚拟机的电脑 为什么使用虚 ...
- win10环境下搭建zookeeper伪集群
一.下载zookeeper https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/ 这里笔者下载的是zookeeper-3.3.6 二.配置zoo ...
- 单机简单搭建一个kafka集群(没有进行内核参数和JVM的调优)
1.JDK安装 在我的部署单节点kafka的博客里有相关的方法.(https://www.cnblogs.com/ToBeExpert/p/9789486.html )zookeeper和kafka的 ...
- 简单搭建zookeeper集群分布式/伪分布式
分布式搭建 一.下载zookeeper安装包 自行下载:我用的是 zookeeper-3.5.4-beta.tar.gz 二.环境准备 1. 我的虚拟机自带的java是1.7的,这个版本要求java1 ...
随机推荐
- c++11 线程池--鸿蒙OS
一个你应该学习的线程池 说明 原理:线程+优先级队列.源码没有涉及STL,没有复杂高深的语法,安全性做得很好: queue的安全使用方式top和pop以及empty的判断都是使用了 std::lock ...
- Java-递归查询法
递归查询用户所在团队的老大的用户id(一个团队中,只有一个老大,也就是父级id="-1") 如下:是表结构 first_agent_id----用户的上级id user_id--- ...
- Zookeeper详解(03) - zookeeper的使用
Zookeeper详解(03) - zookeeper的使用 ZK客户端命令行操作 命令基本语法 help:显示所有操作命令 ls path:使用 ls 命令来查看当前znode的子节点 -w 监听子 ...
- cmd/批处理常用命令
启动新窗口执行命令 ::执行完毕以后,新开的窗口不会自动关闭 start cmd /k echo 123 ::执行完毕以后,新开的窗口会自动关闭 start cmd /C "echo 123 ...
- 【深入浅出 Yarn 架构与实现】4-4 RM 管理 Application
在 YARN 中,Application 是指应用程序,它可能启动多个运行实例,每个运行实例由 -个 ApplicationMaster 与一组该 ApplicationMaster 启动的任务组成, ...
- 02-逻辑仿真工具VCS使用
逻辑仿真工具VCS使用 1 Makefile执行VCS仿真 # Makefile for simulating the full_adder.v with the simulator VCS # -- ...
- 保姆级教程-分分钟掌握常用TS语法
十分钟就搞懂TS用法 先全局安装一些工具,有助于我们编写运行代码哦 1.VScode插件 code runner 2.安装依赖 npm install typescript ts-node -g 开始 ...
- Unity项目优化——Web版
Unity项目优化--Web版 大家好,这是小黑第一次写文章(哈哈哈哈哈,好激动),我好好的写,有不对的地方多多指出. 首先呢是版本介绍,不过好像版本对于优化没有影响: 不过还是要告诉大家我用的版本: ...
- 在Spring Boot中整合Katharsis,来快速开发JSON API的Web应用
1 简介 我们进行Web API开发的时候,经常会使用Json格式的消息体,而Json格式非常灵活,不同的人会有不同的设计风格和实现,而JSON API提供了一套标准.但它并不提供直接实现. Kath ...
- Python调用Openstack API
本文将介绍如何使用 python 调用 OpenStack API. 什么是RESTful API RESTful API 就是 RESTful 风格的 API.遵循 RESTful 风格开发的API ...