{"id":139,"date":"2024-03-20T18:47:00","date_gmt":"2024-03-20T10:47:00","guid":{"rendered":"https:\/\/www.xueyaa.top\/?p=139"},"modified":"2026-03-12T18:51:22","modified_gmt":"2026-03-12T10:51:22","slug":"%e5%9f%ba%e4%ba%8ests%e9%83%a8%e7%bd%b2zookeeper%e9%9b%86%e7%be%a4","status":"publish","type":"post","link":"https:\/\/www.xueyaa.top\/?p=139","title":{"rendered":"\u57fa\u4e8ests\u90e8\u7f72zookeeper\u96c6\u7fa4"},"content":{"rendered":"\n<p id=\"OXdoG\">       1 k8s\u6240\u6709\u8282\u70b9\u5bfc\u5165\u955c\u50cf<br>[root@master231 ~]# wget http:\/\/192.168.21.253\/Resources\/Kubernetes\/Case-Demo\/zookeeper\/oldboyedu-kubernetes-zookeeper-v1.0-3.4.10.tar.gz<br><br>[root@master231 ~]# scp oldboyedu-kubernetes-zookeeper-v1.0-3.4.10.tar.gz 10.0.0.232:~<br><br>[root@master231 ~]# scp oldboyedu-kubernetes-zookeeper-v1.0-3.4.10.tar.gz 10.0.0.233:~<br><br><br>\u5176\u4ed6\u6240\u6709\u8282\u70b9\u8981\u5bfc\u5165\u955c\u50cf:<br>[root@master231 ~]# docker load  -i oldboyedu-kubernetes-zookeeper-v1.0-3.4.10.tar.gz <br><br>[root@worker232 ~]# docker load  -i oldboyedu-kubernetes-zookeeper-v1.0-3.4.10.tar.gz <br><br>[root@worker233 ~]# docker load  -i oldboyedu-kubernetes-zookeeper-v1.0-3.4.10.tar.gz <br><br><br>\t2 \u7f16\u5199\u8d44\u6e90\u6e05\u5355<br>[root@master231 statefulsets]# cat > 05-sts-zookeeper-cluster.yaml &lt;&lt; &#8216;EOF&#8217;<br>apiVersion: v1<br>kind: Service<br>metadata:<br>  name: zk-hs<br>  labels:<br>    app: zk<br>spec:<br>  ports:<br>  &#8211; port: 2888<br>    name: server<br>  &#8211; port: 3888<br>    name: leader-election<br>  clusterIP: None<br>  selector:<br>    app: zk<br>&#8212;<br>apiVersion: v1<br>kind: Service<br>metadata:<br>  name: zk-cs<br>  labels:<br>    app: zk<br>spec:<br>  ports:<br>  &#8211; port: 2181<br>    name: client<br>  selector:<br>    app: zk<br>&#8212;<br>apiVersion: policy\/v1<br># \u6b64\u7c7b\u578b\u7528\u4e8e\u5b9a\u4e49\u53ef\u4ee5\u5bf9\u4e00\u7ec4Pod\u9020\u6210\u7684\u6700\u5927\u4e2d\u65ad\uff0c\u8bf4\u767d\u4e86\u5c31\u662f\u6700\u5927\u4e0d\u53ef\u7528\u7684Pod\u6570\u91cf\u3002<br># \u4e00\u822c\u60c5\u51b5\u4e0b\uff0c\u5bf9\u4e8e\u5206\u5e03\u5f0f\u96c6\u7fa4\u800c\u8a00\uff0c\u5047\u8bbe\u96c6\u7fa4\u6545\u969c\u5bb9\u5fcd\u5ea6\u4e3aN\uff0c\u5219\u96c6\u7fa4\u6700\u5c11\u9700\u89812N+1\u4e2aPod\u3002<br>kind: PodDisruptionBudget<br>metadata:<br>  name: zk-pdb<br>spec:<br>  # \u5339\u914dPod<br>  selector:<br>    matchLabels:<br>      app: zk<br>  # \u6700\u5927\u4e0d\u53ef\u7528\u7684Pod\u6570\u91cf\u3002\u8fd9\u610f\u5473\u7740\u5c06\u6765zookeeper\u96c6\u7fa4\uff0c\u6700\u5c11\u89812*1 +1 = 3\u4e2aPod\u6570\u91cf\u3002<br>  maxUnavailable: 1<br>&#8212;<br>apiVersion: apps\/v1<br>kind: StatefulSet<br>metadata:<br>  name: zk<br>spec:<br>  selector:<br>    matchLabels:<br>      app: zk<br>  serviceName: zk-hs<br>  replicas: 3<br>  updateStrategy:<br>    type: RollingUpdate<br>  podManagementPolicy: OrderedReady<br>  template:<br>    metadata:<br>      labels:<br>        app: zk<br>    spec:<br>      tolerations:<br>      &#8211; key: node-role.kubernetes.io\/master<br>        operator: Exists<br>        effect: NoSchedule<br>      affinity:<br>        podAntiAffinity:<br>          requiredDuringSchedulingIgnoredDuringExecution:<br>            &#8211; labelSelector:<br>                matchExpressions:<br>                  &#8211; key: &#8220;app&#8221;<br>                    operator: In<br>                    values:<br>                    &#8211; zk<br>              topologyKey: &#8220;kubernetes.io\/hostname&#8221;<br>      containers:<br>      &#8211; name: kubernetes-zookeeper<br>        imagePullPolicy: IfNotPresent<br>        image: &#8220;registry.k8s.io\/kubernetes-zookeeper:1.0-3.4.10&#8221;<br>        resources:<br>          requests:<br>            memory: &#8220;1Gi&#8221;<br>            cpu: &#8220;0.5&#8221;<br>        ports:<br>        &#8211; containerPort: 2181<br>          name: client<br>        &#8211; containerPort: 2888<br>          name: server<br>        &#8211; containerPort: 3888<br>          name: leader-election<br>        command:<br>        &#8211; sh<br>        &#8211; -c<br>        &#8211; &#8220;start-zookeeper \\<br>          &#8211;servers=3 \\<br>          &#8211;data_dir=\/var\/lib\/zookeeper\/data \\<br>          &#8211;data_log_dir=\/var\/lib\/zookeeper\/data\/log \\<br>          &#8211;conf_dir=\/opt\/zookeeper\/conf \\<br>          &#8211;client_port=2181 \\<br>          &#8211;election_port=3888 \\<br>          &#8211;server_port=2888 \\<br>          &#8211;tick_time=2000 \\<br>          &#8211;init_limit=10 \\<br>          &#8211;sync_limit=5 \\<br>          &#8211;heap=512M \\<br>          &#8211;max_client_cnxns=60 \\<br>          &#8211;snap_retain_count=3 \\<br>          &#8211;purge_interval=12 \\<br>          &#8211;max_session_timeout=40000 \\<br>          &#8211;min_session_timeout=4000 \\<br>          &#8211;log_level=INFO&#8221;<br>        readinessProbe:<br>          exec:<br>            command:<br>            &#8211; sh<br>            &#8211; -c<br>            &#8211; &#8220;zookeeper-ready 2181&#8221;<br>          initialDelaySeconds: 10<br>          timeoutSeconds: 5<br>        livenessProbe:<br>          exec:<br>            command:<br>            &#8211; sh<br>            &#8211; -c<br>            &#8211; &#8220;zookeeper-ready 2181&#8221;<br>          initialDelaySeconds: 10<br>          timeoutSeconds: 5<br>        volumeMounts:<br>        &#8211; name: datadir<br>          mountPath: \/var\/lib\/zookeeper<br>      securityContext:<br>        runAsUser: 1000<br>        fsGroup: 1000<br>  volumeClaimTemplates:<br>  &#8211; metadata:<br>      name: datadir<br>    spec:<br>      accessModes: [ &#8220;ReadWriteOnce&#8221; ]<br>      resources:<br>        requests:<br>          storage: 10Gi<br>EOF<br><br><br>\t3 \u5b9e\u65f6\u89c2\u5bdfPod\u72b6\u6001<br>[root@master231 statefulsets]# kubectl apply -f 05-sts-zookeeper-cluster.yaml <br>service\/zk-hs created<br>service\/zk-cs created<br>poddisruptionbudget.policy\/zk-pdb created<br>statefulset.apps\/zk created<br>[root@master231 statefulsets]# <br>[root@master231 statefulsets]# kubectl get pods -o wide -w -l app=zk<br><br>NAME   READY   STATUS    RESTARTS   AGE   IP       NODE     NOMINATED NODE   READINESS GATES<br>zk-0   0\/1     Pending   0          0s    &lt;none>   &lt;none>   &lt;none>           &lt;none><br>zk-0   0\/1     Pending   0          1s    &lt;none>   worker233   &lt;none>           &lt;none><br>zk-0   0\/1     ContainerCreating   0          1s    &lt;none>   worker233   &lt;none>           &lt;none><br>zk-0   0\/1     ContainerCreating   0          3s    &lt;none>   worker233   &lt;none>           &lt;none><br>zk-0   0\/1     Running             0          7s    10.100.140.125   worker233   &lt;none>           &lt;none><br>zk-0   1\/1     Running             0          22s   10.100.140.125   worker233   &lt;none>           &lt;none><br>zk-1   0\/1     Pending             0          0s    &lt;none>           &lt;none>      &lt;none>           &lt;none><br>zk-1   0\/1     Pending             0          0s    &lt;none>           master231   &lt;none>           &lt;none><br>zk-1   0\/1     ContainerCreating   0          0s    &lt;none>           master231   &lt;none>           &lt;none><br>zk-1   0\/1     ContainerCreating   0          1s    &lt;none>           master231   &lt;none>           &lt;none><br>zk-1   0\/1     Running             0          5s    10.100.160.189   master231   &lt;none>           &lt;none><br>zk-1   1\/1     Running             0          21s   10.100.160.189   master231   &lt;none>           &lt;none><br>zk-2   0\/1     Pending             0          0s    &lt;none>           &lt;none>      &lt;none>           &lt;none><br>zk-2   0\/1     Pending             0          0s    &lt;none>           worker232   &lt;none>           &lt;none><br>zk-2   0\/1     ContainerCreating   0          0s    &lt;none>           worker232   &lt;none>           &lt;none><br>zk-2   0\/1     ContainerCreating   0          1s    &lt;none>           worker232   &lt;none>           &lt;none><br>zk-2   0\/1     Running             0          5s    10.100.203.188   worker232   &lt;none>           &lt;none><br>zk-2   1\/1     Running             0          21s   10.100.203.188   worker232   &lt;none>           &lt;none><br>&#8230;<br><br> <br>\t4 \u68c0\u67e5\u540e\u7aef\u7684\u5b58\u50a8<br>[root@master231 statefulsets]# kubectl get po,pvc -l app=zk<br>NAME       READY   STATUS    RESTARTS   AGE<br>pod\/zk-0   1\/1     Running   0          72s<br>pod\/zk-1   1\/1     Running   0          61s<br>pod\/zk-2   1\/1     Running   0          50s<br><br>NAME                                 STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS        AGE<br>persistentvolumeclaim\/datadir-zk-0   Bound    pvc-8fa25151-0d0f-4493-97f6-62ff64bd6f09   10Gi       RWO            oldboyedu-sc-haha   3m32s<br>persistentvolumeclaim\/datadir-zk-1   Bound    pvc-630f592d-caf0-47e9-bfaa-9a9397c8344c   10Gi       RWO            oldboyedu-sc-haha   3m20s<br>persistentvolumeclaim\/datadir-zk-2   Bound    pvc-11cfccc3-7509-445b-ba7b-9072b20227b1   10Gi       RWO            oldboyedu-sc-haha   3m8s<br>[root@master231 statefulsets]# <br><br>\t5.\u9a8c\u8bc1\u96c6\u7fa4\u662f\u5426\u6b63\u5e38<br>[root@master231 statefulsets]# for i in 0 1 2; do kubectl exec zk-$i &#8212; hostname; done<br>zk-0<br>zk-1<br>zk-2<br>[root@master231 statefulsets]# <br>[root@master231 statefulsets]# for i in 0 1 2; do echo &#8220;myid zk-$i&#8221;;kubectl exec zk-$i &#8212; cat \/var\/lib\/zookeeper\/data\/myid; done<br>myid zk-0<br>1<br>myid zk-1<br>2<br>myid zk-2<br>3<br>[root@master231 statefulsets]# <br>[root@master231 statefulsets]# for i in 0 1 2; do kubectl exec zk-$i &#8212; hostname -f; done<br>zk-0.zk-hs.default.svc.oldboyedu.com<br>zk-1.zk-hs.default.svc.oldboyedu.com<br>zk-2.zk-hs.default.svc.oldboyedu.com<br>[root@master231 statefulsets]# <br>[root@master231 statefulsets]# kubectl exec zk-0 &#8212; cat \/opt\/zookeeper\/conf\/zoo.cfg<br>#This file was autogenerated DO NOT EDIT<br>clientPort=2181<br>dataDir=\/var\/lib\/zookeeper\/data<br>dataLogDir=\/var\/lib\/zookeeper\/data\/log<br>tickTime=2000<br>initLimit=10<br>syncLimit=5<br>maxClientCnxns=60<br>minSessionTimeout=4000<br>maxSessionTimeout=40000<br>autopurge.snapRetainCount=3<br>autopurge.purgeInteval=12<br>server.1=zk-0.zk-hs.default.svc.oldboyedu.com:2888:3888<br>server.2=zk-1.zk-hs.default.svc.oldboyedu.com:2888:3888<br>server.3=zk-2.zk-hs.default.svc.oldboyedu.com:2888:3888<br>[root@master231 statefulsets]# <br>[root@master231 statefulsets]# kubectl exec zk-1 &#8212; cat \/opt\/zookeeper\/conf\/zoo.cfg<br>#This file was autogenerated DO NOT EDIT<br>clientPort=2181<br>dataDir=\/var\/lib\/zookeeper\/data<br>dataLogDir=\/var\/lib\/zookeeper\/data\/log<br>tickTime=2000<br>initLimit=10<br>syncLimit=5<br>maxClientCnxns=60<br>minSessionTimeout=4000<br>maxSessionTimeout=40000<br>autopurge.snapRetainCount=3<br>autopurge.purgeInteval=12<br>server.1=zk-0.zk-hs.default.svc.oldboyedu.com:2888:3888<br>server.2=zk-1.zk-hs.default.svc.oldboyedu.com:2888:3888<br>server.3=zk-2.zk-hs.default.svc.oldboyedu.com:2888:3888<br>[root@master231 statefulsets]# <br>[root@master231 statefulsets]# kubectl exec zk-2 &#8212; cat \/opt\/zookeeper\/conf\/zoo.cfg<br>#This file was autogenerated DO NOT EDIT<br>clientPort=2181<br>dataDir=\/var\/lib\/zookeeper\/data<br>dataLogDir=\/var\/lib\/zookeeper\/data\/log<br>tickTime=2000<br>initLimit=10<br>syncLimit=5<br>maxClientCnxns=60<br>minSessionTimeout=4000<br>maxSessionTimeout=40000<br>autopurge.snapRetainCount=3<br>autopurge.purgeInteval=12<br>server.1=zk-0.zk-hs.default.svc.oldboyedu.com:2888:3888<br>server.2=zk-1.zk-hs.default.svc.oldboyedu.com:2888:3888<br>server.3=zk-2.zk-hs.default.svc.oldboyedu.com:2888:3888<br>[root@master231 statefulsets]# <br><br><br>\t6 \u521b\u5efa\u6570\u636e\u6d4b\u8bd5<br>\t\t6.1 \u5728\u4e00\u4e2aPod\u5199\u5165\u6570\u636e<br>[root@master231 statefulsets]# kubectl exec -it zk-1 &#8212; zkCli.sh<br>&#8230;<br>[zk: localhost:2181(CONNECTED) 0] ls \/<\/p>\n\n\n<p>[zookeeper]<\/p>\n\n\n\n<p>[zk: localhost:2181(CONNECTED) 1] [zk: localhost:2181(CONNECTED) 1] create \/school oldboyedu Created \/school<\/p>\n\n\n<p>[zk: localhost:2181(CONNECTED) 2]<\/p>\n\n\n\n<p>[zk: localhost:2181(CONNECTED) 2] create \/school\/linux97 XIXI Created \/school\/linux97<\/p>\n\n\n<p>[zk: localhost:2181(CONNECTED) 3]<\/p>\n\n\n\n<p>[zk: localhost:2181(CONNECTED) 3] ls \/<\/p>\n\n\n<p>[zookeeper, school]<\/p>\n\n\n\n<p>[zk: localhost:2181(CONNECTED) 4] [zk: localhost:2181(CONNECTED) 4] ls \/school<\/p>\n\n\n<p>[linux97]<\/p>\n\n\n\n<p>[zk: localhost:2181(CONNECTED) 5] 6.2 \u5728\u53e6\u4e00\u4e2aPod\u67e5\u770b\u4e0b\u6570\u636e [root@master231 statefulsets]# kubectl exec -it zk-2 &#8212; zkCli.sh &#8230; [zk: localhost:2181(CONNECTED) 0] ls \/<\/p>\n\n\n<p>[zookeeper, school]<\/p>\n\n\n\n<p>[zk: localhost:2181(CONNECTED) 1] get \/school\/linux97 XIXI cZxid = 0x100000003 ctime = Mon Jun 09 03:10:51 UTC 2025 mZxid = 0x100000003 mtime = Mon Jun 09 03:10:51 UTC 2025 pZxid = 0x100000003 cversion = 0 dataVersion = 0 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 4 numChildren = 0<\/p>\n\n\n<p>[zk: localhost:2181(CONNECTED) 2]<\/p>\n\n\n\n<p>         7 \u67e5\u770bstart-zookeeper \u811a\u672c\u903b\u8f91 [root@master231 statefulsets]# kubectl exec -it zk-0 &#8212; bash zookeeper@zk-0:\/$ zookeeper@zk-0:\/$ which start-zookeeper \/usr\/bin\/start-zookeeper zookeeper@zk-0:\/$ zookeeper@zk-0:\/$ wc -l \/usr\/bin\/start-zookeeper 320 \/usr\/bin\/start-zookeeper zookeeper@zk-0:\/$ zookeeper@zk-0:\/$ cat \/usr\/bin\/start-zookeeper ;echo &#8230;. 8.\u5220\u9664\u8d44\u6e90 [root@master231 statefulsets]# kubectl delete -f 05-sts-zookeeper.yaml service &#8220;zk-hs&#8221; deleted service &#8220;zk-cs&#8221; deleted poddisruptionbudget.policy &#8220;zk-pdb&#8221; deleted statefulset.apps &#8220;zk&#8221; deleted [root@master231 statefulsets]#<\/p>\n","protected":false},"excerpt":{"rendered":"<p>1 k8s\u6240\u6709\u8282\u70b9\u5bfc\u5165\u955c\u50cf[root@master231 ~]# wget http:\/\/192.168.21 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":140,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-139","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-linux"],"_links":{"self":[{"href":"https:\/\/www.xueyaa.top\/index.php?rest_route=\/wp\/v2\/posts\/139","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.xueyaa.top\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.xueyaa.top\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.xueyaa.top\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.xueyaa.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=139"}],"version-history":[{"count":1,"href":"https:\/\/www.xueyaa.top\/index.php?rest_route=\/wp\/v2\/posts\/139\/revisions"}],"predecessor-version":[{"id":141,"href":"https:\/\/www.xueyaa.top\/index.php?rest_route=\/wp\/v2\/posts\/139\/revisions\/141"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.xueyaa.top\/index.php?rest_route=\/wp\/v2\/media\/140"}],"wp:attachment":[{"href":"https:\/\/www.xueyaa.top\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=139"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.xueyaa.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=139"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.xueyaa.top\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=139"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}