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 ...
随机推荐
- 使用sanic框架实现分布式爬虫
bee_server.py from sanic import Sanic from sanic import response from urlpool import UrlPool #初始化url ...
- 三步快速搭建Typora图床(SM.MS+PicGo)
三步快速搭建Typora图床(基于SM.MS+PicGo) 前言 在有些同学使用Typora的过程中,会发现Typora不像Word一样,在文档脱离本机后依然正常显示图片,自己的tyopora文件在发 ...
- 更改jenkins插件地址为国内源地址
1.在插件管理里替换源地址 在这个界面往下拉,可看到URL地址,将其替换为:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-ce ...
- 高可用系列文章之三 - NGINX 高可用实施方案
前文链接 高可用系列文章之一 - 概述 - 东风微鸣技术博客 (ewhisper.cn) 高可用系列文章之二 - 传统分层架构技术方案 - 东风微鸣技术博客 (ewhisper.cn) 四 NGINX ...
- Linux下“减速”查看日志的方法
Linux下"减速"查看日志的方法 需求场景 今天查看日志,有个需求,需要按照指定"速率"输出日志信息到终端屏幕上,方便查看. 这个需求日常应该也经常会碰到,比 ...
- kali开启ssh并开机自启
安装和启用SSH Kali默认是没有安装ssh和启用ssh的 我们需要先安装:apt install ssh 然后vim /etc/ssh/sshd_config (如果不需要启用Root登陆可以跳过 ...
- HBase详解(03) - HBase架构和数据读写流程
RegionServer 架构 每个RegionServer可以服务于多个Region 每个RegionServer中有多个Store, 1个WAL和1个BlockCache 每个Store对应一个列 ...
- python之路26 面向对象魔法方法、元类、元类定制类、对象的产生行为 __new__方法
面向对象的魔法方法 魔法方法:类中定义的双下方法都称为魔法方法 不需要人为调用 在特定的条件下会自动触发运行 eg:__init__创建空对象之后自动触发给对象添加独有的数据 1.__init__ 对 ...
- python之路25 面向对象 封装(隐藏、伪装)、多态、反射
派生方法实战演练 import json import datetime d = { 't1': datetime.date.today(), 't2': datetime.datetime.toda ...
- uniapp如何打包wgt格式
打包 build 首次打包,需要配置AppId 登录dcloud开发者中心 点击直达 创建应用 将生成的AppId配置到项目manifest.json中 开始打包 打包成功