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 -- sh
kubectl exec -it zk2 -- sh
kubectl 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 ...
随机推荐
- 【企业流行新数仓】Day03:SuperSet图表,Ranger权限、脱敏、行级别过滤,Atlas元数据、查询和查看全表/字段血缘依赖,Zabbix告警
一.SuperSet-图表展示 1.概念 (1)概念 通过dashboard(仪表盘)对图表中的数据进行展示 BI工具:根据配置的要求,进行数据源的配置即可 是准商业级别的BI web应用 (2)原理 ...
- Vue快速上门(3)-组件与复用
VUE家族系列: Vue快速上门(1)-基础知识 Vue快速上门(2)-模板语法 Vue快速上门(3)-组件与复用 01.component组件 1.1.component基础知识 组件是可以复用的V ...
- 【机器学习】李宏毅——Transformer
Transformer具体就是属于Sequence-to-Sequence的模型,而且输出的向量的长度并不能够确定,应用场景如语音辨识.机器翻译,甚至是语音翻译等等,在文字上的话例如聊天机器人.文章摘 ...
- 解决scapy库下找不到IP,TCP模板的问题
scapy版本: 问题描述: 我看到书中导入TCP,IP模块是通过from scapy.all import TCP,IP 上机实验发现找不到这个模块,通过大量查找发现此模块在最新版本中转移到其他包里 ...
- 学会了selenium 模拟鼠标操作,你就可以偷懒点点点了
前言 我们在做 Web 自动化的时候,有时候页面的元素不需要我们点击,值需要把鼠标移动上去就能展示各种信息. 这个时候我们可以通过操作鼠标来实现,接下来我们来讲一下使用 selenium 做 Web ...
- 【博学谷学习记录】超强总结,用心分享|前端CSS总结(一)
CSS总结(一) shift+alt,选中多行 外链式 <link rel="stylesheet" href="./my.css"> 1 选择器 ...
- 我的RHCA认证之旅
云方向的RHCA架构师认证 想更深入研究Linux.对Linux有一定兴趣,我在2022.12.27这一天通过了RHCA认证 课程介绍 以下是我在众多RHCA的专家课程中,选择的五门 cl210 (R ...
- [R语言] ggplot2入门笔记1—ggplot2简要教程
文章目录 1 ggplot2入门笔记1-ggplot2简要教程 1. 设置 The Setup 2. 图层 The Layers 3. 标签 The Labels 4. 主题 The Theme 5. ...
- 《STL源码剖析》Sort排序分析
整体而言: sort算法在数据量大时采用Quick Sort(快速排序),一旦分段后的数据量小于某个门槛,为避免Quick Sort的递归调用带来过大的额外负担,就改用Insertion Sort(插 ...
- 通过Terraform创建GCP Pubsub
1 简介 Terraform是管理许多平台的基础设施的工具,如AWS.GCP和Azure.这篇文章将讲解如何通过Terraform来管理GCP Pub/Sub. 创建GCP项目请参考:初始化一个GCP ...