K8S部署单节点zookeeper服务
这将启动一个新的 Pod,其中运行一个Zookeeper客户端,该客户端将连接到我们刚部署的 Zookeeper 服务。在客户端中,可以使用。Service 为Zookeeper Pod创建一个网络服务。Deployment 部署 Zookeeper Pod。现在已经成功地在Kubernetes中部署了一个单节点Zookeeper服务。的服务正在运行,并将其 IP 地址分配给了一个名为。的Depl
要使用Kubernetes (K8s) 部署单节点Zookeeper服务,需要执行以下步骤:
0、创建Zookeeper镜像
该镜像包含Zookeeper二进制文件和配置文件,使用Dockerfile创建自定义镜像。这个Dockerfile可能看起来像这样:
FROM openjdk:8-jre-alpine
RUN apk add --no-cache bash
ENV ZOOKEEPER_VERSION=3.7.0
RUN wget -q -O - https://downloads.apache.org/zookeeper/zookeeper-$ZOOKEEPER_VERSION/apache-zookeeper-$ZOOKEEPER_VERSION-bin.tar.gz \
| tar -xzf - -C /opt \
&& mv /opt/apache-zookeeper-$ZOOKEEPER_VERSION-bin /opt/zookeeper \
&& rm -rf /var/cache/apk/* \
&& mkdir /opt/zookeeper/data \
&& mkdir /opt/zookeeper/logs
WORKDIR /opt/zookeeper
EXPOSE 2181 2888 3888
COPY zoo.cfg conf/
COPY zookeeper-entrypoint.sh /
ENTRYPOINT ["/zookeeper-entrypoint.sh"]
CMD ["zkServer.sh", "start-foreground"]
这个Dockerfile基于Alpine Linux基础映像构建,它包含OpenJDK 8 JRE和Bash。它会下载指定版本的Zookeeper,将其解压到/opt/zookeeper目录中,并创建data和logs目录。它还将zoo.cfg配置文件和一个自定义的入口点脚本复制到镜像中。入口点脚本将在容器启动时运行,并启动Zookeeper。
构建Docker镜像并将其推送到Docker Registry,以便Kubernetes可以从其中拉取镜像。
docker build -t your-docker-repo/zookeeper:latest .
docker push your-docker-repo/zookeeper:latest
1. 编写Zookeeper的K8s配置文件
在本地计算机上创建一个名为zookeeper.yaml
的文件,并将以下内容复制到该文件中:
---
apiVersion: v1
kind: Service
metadata:
name: zookeeper
labels:
app: zookeeper
spec:
ports:
- name: client
port: 2181
protocol: TCP
targetPort: 2181
selector:
app: zookeeper
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: zookeeper
labels:
app: zookeeper
spec:
selector:
matchLabels:
app: zookeeper
replicas: 1
template:
metadata:
labels:
app: zookeeper
spec:
containers:
- name: zookeeper
image: zookeeper:3.6.2
ports:
- name: client
containerPort: 2181
该文件包含两个部分:Service
和 Deployment
。
Service 为Zookeeper Pod创建一个网络服务。Deployment 部署 Zookeeper Pod。
2. 使用kubectl部署Zookeeper
使用以下命令将该文件部署到Kubernetes:
$ kubectl apply -f zookeeper.yaml
这将创建一个名为zookeeper
的Deployment和一个名为zookeeper
的Service。
3. 验证Zookeeper部署是否成功
使用以下命令查看 Zookeeper Pod 的状态:
$ kubectl get pods
您应该看到一个名为zookeeper-{随机字符串}
的Pod正在运行。
接下来,使用以下命令查看 Zookeeper Service 的状态:
$ kubectl get svc
您应该看到一个名为zookeeper
的服务正在运行,并将其 IP 地址分配给了一个名为ClusterIP
的字段。
4. 连接到Zookeeper
现在,您可以使用Zookeeper客户端连接到服务,使用以下命令启动Zookeeper客户端:
$ kubectl run -i --tty zk-client --image=zookeeper:3.6.2 --restart=Never --rm=true -- /bin/bash
这将启动一个新的 Pod,其中运行一个Zookeeper客户端,该客户端将连接到我们刚部署的 Zookeeper 服务。在客户端中,可以使用zkCli.sh
命令测试Zookeeper是否正常工作:
$ zkCli.sh -server zookeeper:2181
如果成功连接到Zookeeper,则可以输入以下命令来创建一个新的节点:
[zk: localhost:2181(CONNECTED) 0] create /test mydata
现在已经成功地在Kubernetes中部署了一个单节点Zookeeper服务。
更多推荐
所有评论(0)