• 前提

    • 已经安装了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三节点集群的更多相关文章

  1. zookeeper三节点集群安装记录

    以下是3个节点的zk安装记录. 下载 下载地址: http://mirrors.shu.edu.cn/apache/zookeeper/ cd /data/opt/zk wget http://mir ...

  2. 超快速使用docker在本地搭建hadoop分布式集群

    超快速使用docker在本地搭建hadoop分布式集群 超快速使用docker在本地搭建hadoop分布式集群 学习hadoop集群环境搭建是hadoop入门的必经之路.搭建分布式集群通常有两个办法: ...

  3. 搭建zookeeper+kafka集群

      搭建zookeeper+kafka集群 一.环境及准备 集群环境:   软件版本: 部署前操作: 关闭防火墙,关闭selinux(生产环境按需关闭或打开) 同步服务器时间,选择公网ntpd服务器或 ...

  4. PostgreSQL 三节点集群故障模拟及恢复

    PostgreSQL 三节点集群故障模拟及恢复 (postgreSQL9.5.1) 正常状态: 10.2.208.10:node1:master 10.2.208.11:node2:standby1同 ...

  5. 虚拟机搭建Zookeeper服务器集群完整笔记

    虚拟机搭建Zookeeper服务器集群完整笔记 本笔记主要记录自己搭建Zookeeper服务器的全过程,默认已经安装部署好Centos7. 一.虚拟机下Centos无法联网解决方案 1.首先调整虚拟机 ...

  6. CentOS6.3搭建ZooKeeper伪集群

    1. 将zookeeper安装包移动至/home, 解压后改名为zookeeper 相关命令 # 解压 .tar.gz # 重命名 zookeeper 2. 进入zookeeper/conf/目录下, ...

  7. Docker搭建Zookeeper&Kafka集群

    最近在学习Kafka,准备测试集群状态的时候感觉无论是开三台虚拟机或者在一台虚拟机开辟三个不同的端口号都太麻烦了(嗯..主要是懒). 环境准备 一台可以上网且有CentOS7虚拟机的电脑 为什么使用虚 ...

  8. win10环境下搭建zookeeper伪集群

    一.下载zookeeper https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/ 这里笔者下载的是zookeeper-3.3.6 二.配置zoo ...

  9. 单机简单搭建一个kafka集群(没有进行内核参数和JVM的调优)

    1.JDK安装 在我的部署单节点kafka的博客里有相关的方法.(https://www.cnblogs.com/ToBeExpert/p/9789486.html )zookeeper和kafka的 ...

  10. 简单搭建zookeeper集群分布式/伪分布式

    分布式搭建 一.下载zookeeper安装包 自行下载:我用的是 zookeeper-3.5.4-beta.tar.gz 二.环境准备 1. 我的虚拟机自带的java是1.7的,这个版本要求java1 ...

随机推荐

  1. 5V升压12.6V芯片电路图,三节锂电池充电

    三节3.7V的锂电池串联,11.1V和最大12.6V锂电池充电电路的解决方案.在应用中,一般使用低压5V,如USB口直接输入的给三串锂电池充电,还有是15V或者18V,20V输入降压给锂电池充电的两种 ...

  2. JAVA学到方法写了一个四则运算计算器,请教一下有什么需要改进的

    package method; /* * 四则运算计算器 * */ import java.util.Scanner; public class Demo07 { public static void ...

  3. 02.JavaScript学习笔记1

    1.强制类型转换 当使用加号进行运算时,会将数字强制转换为字符串,然后再进行运算. const year = '1991'; console.log(year + 18); console.log(t ...

  4. 一次TiDB GC阻塞引发的性能问题分析

    背景 前不久从项目一线同学得到某集群的告警信息,某个时间段 TiDB duration 突然异常升高,持续时间6小时左右,需要定位到具体原因. 分析过程 第一招,初步判断 由于项目条件苛刻,历经苦难才 ...

  5. ubuntu系统wireshark源码编译与安装

    官网:https://www.wireshark.org/ 官方文档:Wireshark · Documentation 一 介绍 wireshark[1]是一款抓包工具.wireshark的GUI( ...

  6. 基于 Traefik 的 ForwardAuth 配置

    前言 Traefik 是一个现代的 HTTP 反向代理和负载均衡器,使部署微服务变得容易. Traefik 可以与现有的多种基础设施组件(Docker.Swarm 模式.Kubernetes.Mara ...

  7. 【转载】EXCEL VBA UBound(arr,1),UBound(arr,2)解释

    Resize(UBound(arr, 1), UBound(arr, 2) 这句什么意思   resize()是一个扩展单元格地址区域的函数,有两个参数,第一个是行扩展数,第二个是列扩展数   UBo ...

  8. 发布了一个jar包到中央仓库,我的心好累…

    原创:微信公众号 码农参上,欢迎分享,转载请保留出处. 哈喽大家好啊,我是Hydra. 前几天我在网上冲浪的时候,看见有一个老铁在git上给我提了一个issue: 万万没想到,有一天我写的烂代码居然也 ...

  9. SQL29 计算用户的平均次日留存率

    SQL29 计算用户的平均次日留存率 困难 通过率:48.58% 时间限制:1秒 空间限制:256M 描述 题目:现在运营想要查看用户在某天刷题后第二天还会再来刷题的平均概率.请你取出相应数据. 示例 ...

  10. KMP 与 Z 函数

    \(\text{By DaiRuiChen007}\) 一.KMP 算法 I. 问题描述 在文本串 \(S\) 中找到模式串 \(T\) 的所有出现,其中 \(|S|=n,|T|=m\) II. 前置 ...