k8s搭建三台zookeeper集群
时间: 2023-07-05 22:35:45 浏览: 143
好的,这是一个比较具体的技术问题。首先,我们需要确认一下你的 k8s 集群已经搭建好了,并且你已经安装了 kubectl 命令行工具以及 Helm 软件包管理工具。
接下来,我们可以通过 Helm 安装 ZooKeeper 集群。可以使用以下命令安装:
```
helm install --name my-zk --set replicaCount=3 stable/zookeeper
```
这里我们设置了副本数为 3,也就是搭建了一个由三个 ZooKeeper 节点组成的集群。你可以根据需要修改这个值。
安装完成后,你可以使用以下命令查看 ZooKeeper 集群的状态:
```
kubectl exec -it my-zk-0 zkCli.sh
```
这个命令会连接到 ZooKeeper 集群中的一个节点,并打开一个交互式的命令行界面,可以通过这个命令行界面来查看 ZooKeeper 集群的状态。
注意,这个命令只会连接到其中一个节点,如果你想要查看整个集群的状态,需要依次连接到每一个节点并查看其状态。
相关问题
k8s搭建三台zookeeper集群的yaml
好的,下面是一个简单的 YAML 文件,可以用来在 Kubernetes 上部署一个由三个 ZooKeeper 节点组成的集群:
```yaml
apiVersion: v1
kind: Service
metadata:
name: zk-headless
labels:
app: zk
spec:
clusterIP: None
ports:
- name: client
port: 2181
protocol: TCP
targetPort: 2181
- name: follower
port: 2888
protocol: TCP
targetPort: 2888
- name: leader-election
port: 3888
protocol: TCP
targetPort: 3888
selector:
app: zk
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: zk
spec:
serviceName: zk-headless
replicas: 3
selector:
matchLabels:
app: zk
template:
metadata:
labels:
app: zk
spec:
containers:
- name: zk
image: zookeeper:3.6.3
env:
- name: ZOO_MY_ID
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: ZOO_SERVERS
value: "zk-0.zk-headless,zk-1.zk-headless,zk-2.zk-headless"
ports:
- name: client
containerPort: 2181
- name: follower
containerPort: 2888
- name: leader-election
containerPort: 3888
volumeMounts:
- name: data
mountPath: /data
volumes:
- name: data
emptyDir: {}
```
这个 YAML 文件定义了一个名为 `zk` 的 StatefulSet,使用了一个名为 `zk-headless` 的 Service 来提供服务发现。StatefulSet 中的每一个 Pod 都会启动一个 ZooKeeper 节点。
注意,这个 YAML 文件使用了 `emptyDir` 卷来存储 ZooKeeper 数据,这意味着当 Pod 被删除时,其中的数据也会被删除。如果你需要持久化存储,可以考虑使用 PersistentVolumeClaim(PVC)来存储数据。
在k8s中给zookeeper集群设置登录密码
在Kubernetes中给Zookeeper集群设置登录密码,可以通过配置Kubernetes中的ConfigMap实现。具体步骤如下:
1. 创建一个ConfigMap,将Zookeeper的配置文件放入ConfigMap中,如:
```
apiVersion: v1
kind: ConfigMap
metadata:
name: zookeeper-config
data:
zoo.cfg: |
tickTime=2000
dataDir=/data
clientPort=2181
authProvider.1=org.apache.zookeeper.server.auth.DigestAuthenticationProvider
requireClientAuthScheme=sasl
jaasLoginRenew=3600000
# 添加以下内容
authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
kerberos.removeHostFromPrincipal=true
kerberos.removeRealmFromPrincipal=true
```
2. 在Zookeeper的配置文件中添加以下内容:
```
authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
jaasLoginRenew=3600000
kerberos.removeHostFromPrincipal=true
kerberos.removeRealmFromPrincipal=true
```
3. 在Kubernetes的Secret中创建一个用户名和密码,如:
```
apiVersion: v1
kind: Secret
metadata:
name: zookeeper-auth
type: Opaque
data:
username: YWRtaW4=
password: MWYyZDFlMmU2N2Rm
```
4. 在Zookeeper的配置文件中设置ACL,如:
```
setAcl /zookeeper digest:username:password:rwca
```
其中,`username`和`password`是在步骤3中创建的用户名和密码。
5. 在Zookeeper的Pod的配置文件中设置环境变量,将用户名和密码传递给Zookeeper,如:
```
apiVersion: v1
kind: Pod
metadata:
name: zookeeper-0
spec:
containers:
- name: zookeeper
image: zookeeper:3.5.8
env:
- name: ZOO_MY_ID
value: "0"
- name: ZOO_SERVERS
value: "server.0=zookeeper-0.zookeeper:2888:3888;server.1=zookeeper-1.zookeeper:2888:3888;server.2=zookeeper-2.zookeeper:2888:3888"
- name: ZOO_ADMINSERVER_ENABLED
value: "false"
- name: ZOO_AUTH_PROVIDER_1
value: "org.apache.zookeeper.server.auth.SASLAuthenticationProvider"
- name: ZOO_JAAS_LOGIN_RENEW
value: "3600000"
- name: ZOO_KERBEROS_REMOVE_HOST_FROM_PRINCIPAL
value: "true"
- name: ZOO_KERBEROS_REMOVE_REALM_FROM_PRINCIPAL
value: "true"
- name: ZOO_SERVER_PRINCIPAL
value: "zookeeper/_HOST@EXAMPLE.COM"
- name: ZOO_CLIENT_PRINCIPAL
value: "zookeeper@EXAMPLE.COM"
- name: ZOO_CLIENT_KEYTAB
value: "/etc/security/keytabs/zookeeper.keytab"
- name: ZOO_AUTHORIZATION
value: "true"
- name: ZOO_REQUIRES_AUTH
value: "true"
- name: ZOO_USERNAME
valueFrom:
secretKeyRef:
name: zookeeper-auth
key: username
- name: ZOO_PASSWORD
valueFrom:
secretKeyRef:
name: zookeeper-auth
key: password
```
其中,`ZOO_AUTH_PROVIDER_1`、`ZOO_JAAS_LOGIN_RENEW`、`ZOO_KERBEROS_REMOVE_HOST_FROM_PRINCIPAL`、`ZOO_KERBEROS_REMOVE_REALM_FROM_PRINCIPAL`、`ZOO_SERVER_PRINCIPAL`、`ZOO_CLIENT_PRINCIPAL`、`ZOO_CLIENT_KEYTAB`、`ZOO_AUTHORIZATION`和`ZOO_REQUIRES_AUTH`是为了启用Kerberos认证,如果不需要可以不配置。
这样就可以在Kubernetes中给Zookeeper集群设置登录密码了。
阅读全文