使用K8S部署zookeeper集群

k8s部署zookeeper集群(3节点,1个leader,2个follower) k8s部署zookeeper集群 阅读详情

1、目的:

本次的目的是通过使用k8s搭建一个三节点的zookeeper集群,因为zookeeper集群需要用到存储,所以我们需要准备三个持久卷(Persistent Volume) 简称就是PV。

2、创建pv:

分别对应三节点zk集群中的三个pod的持久化目录,创建好目录之后编写yaml创建zk-pv.yaml

apiVersion: v1
kind: PersistentVolume
metadata:
  name: k8s-pv-zk01
  namespace: tools
  labels:
    app: zk
  annotations:
    volume.beta.kubernetes.io/storage-class: "anything"
spec:
  capacity:
    storage: 5Gi
  accessModes:
  - ReadWriteOnce
  hostPath:
    path: /data/share/pv/zk01
  persistentVolumeReclaimPolicy: Recycle
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: k8s-pv-zk02
  namespace: tools
  labels:
    app: zk
  annotations:
    volume.beta.kubernetes.io/storage-class: "anything"
spec:
  capacity:
    storage: 5Gi
  accessModes:
  - ReadWriteOnce
  hostPath:
    path: /data/share/pv/zk02
  persistentVolumeReclaimPolicy: Recycle
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: k8s-pv-zk03
  namespace: tools
  labels:
    app: zk
  annotations:
    volume.beta.kubernetes.io/storage-class: "anything"
spec:
  capacity:
    storage: 5Gi
  accessModes:
  - ReadWriteOnce
  hostPath:
    path: /data/share/pv/zk03
  persistentVolumeReclaimPolicy: Recycle
---

使用如下命令创建zk-pv

核心命令:kubectl create -f zk-pv.yaml     /   kubectl apply -f zk-pv.yaml

示例:

[root@master ~]# mkdir chaitc-zookeeper
[root@master ~]# cd chaitc-zookeeper/
[root@master chaitc-zookeeper]# vim zk-pv.yaml
[root@master chaitc-zookeeper]# kubectl create -f zk-pv.yaml
persistentvolume/k8s-pv-zk01 created
persistentvolume/k8s-pv-zk02 created
persistentvolume/k8s-pv-zk03 created

 验证:

命令:kubectl get pv -n tools -o wide 

3、使用yaml文件创建zk集群

使用statefulset去部署zk集群的三节点,并且使用刚刚创建的pv作为存储设备。

zk.yaml

apiVersion: v1
kind: Service
metadata:
  name: zk-hs
  namespace: tools
  labels:
    app: zk
spec:
  selector:
    app: zk
  clusterIP: None
  ports:
  - name: server
    port: 2888
  - name: leader-election
    port: 3888
--- 
apiVersion: v1
kind: Service
metadata:
  name: zk-cs
  namespace: tools
  labels:
    app: zk
spec:
  selector:
    app: zk
  type: NodePort
  ports:
  - name: client
    port: 2181
    nodePort: 31811
---
apiVersion: policy/v1beta1
kind: PodDisruptionBudget
metadata:
  name: zk-pdb
  namespace: tools
spec:
  selector:
    matchLabels:
      app: zk
  maxUnavailable: 1
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: zk
  namespace: tools
spec:
  selector:
    matchLabels:
      app: zk # has to match .spec.template.metadata.labels
  serviceName: "zk-hs"
  replicas: 3 # by default is 1
  updateStrategy:
    type: RollingUpdate
  podManagementPolicy: Parallel
  template:
    metadata:
      labels:
        app: zk # has to match .spec.selector.matchLabels
    spec:
      containers:
      - name: zk
        imagePullPolicy: Always
        image: chaotingge/zookeeper:kubernetes-zookeeper1.0-3.4.10
        resources:
          requests:
            memory: "500Mi"
            cpu: "0.5"
        ports:
        - containerPort: 2181
          name: client
        - containerPort: 2888
          name: server
        - containerPort: 3888
          name: leader-election
        command:
        - sh
        - -c
        - "start-zookeeper \
        --servers=3 \
        --data_dir=/var/lib/zookeeper/data \
        --data_log_dir=/var/lib/zookeeper/data/log \
        --conf_dir=/opt/zookeeper/conf \
        --client_port=2181 \
        --election_port=3888 \
        --server_port=2888 \
        --tick_time=2000 \
        --init_limit=10 \
        --sync_limit=5 \
        --heap=512M \
        --max_client_cnxns=60 \
        --snap_retain_count=3 \
        --purge_interval=12 \
        --max_session_timeout=40000 \
        --min_session_timeout=4000 \
        --log_level=INFO"
        readinessProbe:
          exec:
            command:
            - sh
            - -c
            - "zookeeper-ready 2181"
          initialDelaySeconds: 10
          timeoutSeconds: 5
        livenessProbe:
          exec:
            command:
            - sh
            - -c
            - "zookeeper-ready 2181"
          initialDelaySeconds: 10
          timeoutSeconds: 5
        volumeMounts:
        - name: datadir
          mountPath: /var/lib/zookeeper
  volumeClaimTemplates:
  - metadata:
      name: datadir
      annotations:
        volume.beta.kubernetes.io/storage-class: "anything"
    spec:
      accessModes: [ "ReadWriteOnce" ]
      resources:
        requests:
          storage: 1Gi

使用kubectl apply -f zk.yaml部署

备注:如果报错如下内容,需要更改yaml文件

Warning: policy/v1beta1 PodDisruptionBudget is deprecated in v1.21+, unavailable in v1.25+; use policy/v1 PodDisruptionBudget

[root@master zk01]# kubectl version
Client Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.4", GitCommit:"b695d79d4f967c403a96986f1750a35eb75e75f1", GitTreeState:"clean", BuildDate:"2021-11-17T15:48:33Z", GoVersion:"go1.16.10", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.0", GitCommit:"c2b5237ccd9c0f1d600d3072634ca66cefdf272f", GitTreeState:"clean", BuildDate:"2021-08-04T17:57:25Z", GoVersion:"go1.16.6", Compiler:"gc", Platform:"linux/amd64"}
这种版本需要使用 policy/v1

示例:

[root@master chaitc-zookeeper]# vim zk.yaml
[root@master chaitc-zookeeper]# kubectl apply -f zk.yaml
service/zk-hs created
Warning: policy/v1beta1 PodDisruptionBudget is deprecated in v1.21+, unavailable in v1.25+; use policy/v1 PodDisruptionBudget
poddisruptionbudget.policy/zk-pdb created
statefulset.apps/zk created
The Service "zk-cs" is invalid: spec.ports[0].nodePort: Invalid value: 21811: provided port is not in the valid range. The range of valid ports is 30000-32767
[root@master chaitc-zookeeper]# vim zk.yaml
[root@master chaitc-zookeeper]# kubectl apply -f zk.yaml
service/zk-hs unchanged
service/zk-cs created
Warning: policy/v1beta1 PodDisruptionBudget is deprecated in v1.21+, unavailable in v1.25+; use policy/v1 PodDisruptionBudget
poddisruptionbudget.policy/zk-pdb configured
statefulset.apps/zk configured
[root@master chaitc-zookeeper]# kubectl get pods -n tools
NAME   READY   STATUS    RESTARTS   AGE
zk-0   0/1     Pending   0          82s
zk-1   0/1     Pending   0          82s
zk-2   0/1     Pending   0          82s
[root@master chaitc-zookeeper]# kubectl get pods -n tools
NAME   READY   STATUS    RESTARTS   AGE
zk-0   0/1     Pending   0          86s
zk-1   0/1     Pending   0          86s
zk-2   0/1     Pending   0          86s
[root@master chaitc-zookeeper]# kubectl describe pod zk-0 -n tools
Name:           zk-0
Namespace:      tools
Priority:       0
Node:           <none>
Labels:         app=zk
                controller-revision-hash=zk-78bbbb488c
                statefulset.kubernetes.io/pod-name=zk-0
Annotations:    <none>
Status:         Pending
IP:
IPs:            <none>
Controlled By:  StatefulSet/zk
Containers:
  zk:
    Image:       leolee32/kubernetes-library:kubernetes-zookeeper1.0-3.4.10
    Ports:       2181/TCP, 2888/TCP, 3888/TCP
    Host Ports:  0/TCP, 0/TCP, 0/TCP
    Command:
      sh
      -c
      start-zookeeper --servers=3 --data_dir=/var/lib/zookeeper/data --data_log_dir=/var/lib/zookeeper/data/log --conf_dir=/opt/zookeeper/conf --client_port=2181 --election_port=3888 --server_port=2888 --tick_time=2000 --init_limit=10 --sync_limit=5 --heap=512M --max_client_cnxns=60 --snap_retain_count=3 --purge_interval=12 --max_session_timeout=40000 --min_session_timeout=4000 --log_level=INFO
    Requests:
      cpu:        500m
      memory:     500Mi
    Liveness:     exec [sh -c zookeeper-ready 2181] delay=10s timeout=5s period=10s #success=1 #failure=3
    Readiness:    exec [sh -c zookeeper-ready 2181] delay=10s timeout=5s period=10s #success=1 #failure=3
    Environment:  <none>
    Mounts:
      /var/lib/zookeeper from datadir (rw)
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-tzp6v (ro)
Conditions:
  Type           Status
  PodScheduled   False
Volumes:
  datadir:
    Type:       PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
    ClaimName:  datadir-zk-0
    ReadOnly:   false
  kube-api-access-tzp6v:
    Type:                    Projected (a volume that contains injected data from multiple sources)
    TokenExpirationSeconds:  3607
    ConfigMapName:           kube-root-ca.crt
    ConfigMapOptional:       <nil>
    DownwardAPI:             true
QoS Class:                   Burstable
Node-Selectors:              <none>
Tolerations:                 node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                             node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
  Type     Reason            Age   From               Message
  ----     ------            ----  ----               -------
  Warning  FailedScheduling  108s  default-scheduler  0/1 nodes are available: 1 pod has unbound immediate PersistentVolumeClaims.
  Warning  FailedScheduling  107s  default-scheduler  0/1 nodes are available: 1 node(s) had taint {node-role.kubernetes.io/master: }, that the pod didn't tolerate.
  Warning  FailedScheduling  30s   default-scheduler  0/1 nodes are available: 1 node(s) had taint {node-role.kubernetes.io/master: }, that the pod didn't tolerate.

由于笔者是单节点部署的,master上有打的污点标记,如下:

[root@master chaitc-zookeeper]# kubectl get no -o yaml | grep taint -A 5
    taints:
    - effect: NoSchedule
      key: node-role.kubernetes.io/master
  status:
    addresses:
    - address: 172.24.40.43
[root@master chaitc-zookeeper]# kubectl get nodes
NAME                STATUS   ROLES                  AGE    VERSION
master.chaitc.xyz   Ready    control-plane,master   132d   v1.22.4

使用命令:kubectl describe node <具体node>

里面有一行:

Taints:             node-role.kubernetes.io/master:NoSchedule

[root@master chaitc-zookeeper]# kubectl taint node master.chaitc.xyz node-role.kubernetes.io/master-
node/master.chaitc.xyz untainted

[root@master chaitc-zookeeper]# kubectl describe node master.chaitc.xyz
里面有一行:
Taints:             <none>

查看pod就可以看到:

[root@master chaitc-zookeeper]# kubectl get po -n tools
NAME   READY   STATUS    RESTARTS   AGE
zk-0   1/1     Running   0          15m
zk-1   1/1     Running   0          15m
zk-2   0/1     Pending   0          15m

查看pending的详情:

[root@master chaitc-zookeeper]# kubectl describe po zk-2 -n tools
Name:           zk-2
Namespace:      tools
Priority:       0
Node:           <none>
Labels:         app=zk
                controller-revision-hash=zk-78bbbb488c
                statefulset.kubernetes.io/pod-name=zk-2
Annotations:    <none>
Status:         Pending
IP:
IPs:            <none>
Controlled By:  StatefulSet/zk
Containers:
  zk:
    Image:       leolee32/kubernetes-library:kubernetes-zookeeper1.0-3.4.10
    Ports:       2181/TCP, 2888/TCP, 3888/TCP
    Host Ports:  0/TCP, 0/TCP, 0/TCP
    Command:
      sh
      -c
      start-zookeeper --servers=3 --data_dir=/var/lib/zookeeper/data --data_log_dir=/var/lib/zookeeper/data/log --conf_dir=/opt/zookeeper/conf --client_port=2181 --election_port=3888 --server_port=2888 --tick_time=2000 --init_limit=10 --sync_limit=5 --heap=512M --max_client_cnxns=60 --snap_retain_count=3 --purge_interval=12 --max_session_timeout=40000 --min_session_timeout=4000 --log_level=INFO
    Requests:
      cpu:        500m
      memory:     500Mi
    Liveness:     exec [sh -c zookeeper-ready 2181] delay=10s timeout=5s period=10s #success=1 #failure=3
    Readiness:    exec [sh -c zookeeper-ready 2181] delay=10s timeout=5s period=10s #success=1 #failure=3
    Environment:  <none>
    Mounts:
      /var/lib/zookeeper from datadir (rw)
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-l9bbx (ro)
Conditions:
  Type           Status
  PodScheduled   False
Volumes:
  datadir:
    Type:       PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
    ClaimName:  datadir-zk-2
    ReadOnly:   false
  kube-api-access-l9bbx:
    Type:                    Projected (a volume that contains injected data from multiple sources)
    TokenExpirationSeconds:  3607
    ConfigMapName:           kube-root-ca.crt
    ConfigMapOptional:       <nil>
    DownwardAPI:             true
QoS Class:                   Burstable
Node-Selectors:              <none>
Tolerations:                 node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                             node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
  Type     Reason            Age   From               Message
  ----     ------            ----  ----               -------
  Warning  FailedScheduling  16m   default-scheduler  0/1 nodes are available: 1 pod has unbound immediate PersistentVolumeClaims.
  Warning  FailedScheduling  16m   default-scheduler  0/1 nodes are available: 1 node(s) had taint {node-role.kubernetes.io/master: }, that the pod didn't tolerate.
  Warning  FailedScheduling  15m   default-scheduler  0/1 nodes are available: 1 node(s) had taint {node-role.kubernetes.io/master: }, that the pod didn't tolerate.
  Warning  FailedScheduling  38s   default-scheduler  0/1 nodes are available: 1 Insufficient cpu.

原因:节点性能不足:

1 Insufficient cpu, 1 node(s) had taints that the pod didn't tolerate.

节点性能不足了,增加节点试试

 验证:

[root@master chaitc-zookeeper]# kubect get svc -n tool
-bash: kubect: command not found
[root@master chaitc-zookeeper]# kubectl get svc -n tools
NAME    TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)             AGE
zk-cs   NodePort    10.108.177.133   <none>        2181:31811/TCP      18m
zk-hs   ClusterIP   None             <none>        2888/TCP,3888/TCP   18m
[root@master chaitc-zookeeper]# ss -tan | grep 31811
LISTEN     0      128          *:31811                    *:*
[root@master chaitc-zookeeper]# kubectl get svc -n tools
NAME    TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)             AGE
zk-cs   NodePort    10.108.177.133   <none>        2181:31811/TCP      18m
zk-hs   ClusterIP   None             <none>        2888/TCP,3888/TCP   19m
[root@master chaitc-zookeeper]# kubectl exec -it zk-1 -n tools -- /bin/sh
# ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 14:50 ?        00:00:00 sh -c start-zookeeper --servers=3 --data_dir=/var/lib/zookeeper/data --data_log_dir=/var/lib/zookeeper/data/l
root         6     1  0 14:50 ?        00:00:00 /usr/lib/jvm/java-8-openjdk-amd64/bin/java -Dzookeeper.log.dir=/var/log/zookeeper -Dzookeeper.root.logger=INF
root       572     0  0 14:54 pts/0    00:00:00 /bin/sh
root       597   572  0 14:54 pts/0    00:00:00 ps -ef
# env
ZK_CS_PORT_2181_TCP_PORT=2181
ZK_CS_SERVICE_HOST=10.108.177.133
KUBERNETES_SERVICE_PORT=443
KUBERNETES_PORT=tcp://10.96.0.1:443
ZK_CS_PORT_2181_TCP_PROTO=tcp
HOSTNAME=zk-1
ZK_CS_SERVICE_PORT_CLIENT=2181
HOME=/root
ZK_CS_SERVICE_PORT=2181
ZK_CS_PORT=tcp://10.108.177.133:2181
ZK_DATA_LOG_DIR=/var/lib/zookeeper/log
ZK_CS_PORT_2181_TCP=tcp://10.108.177.133:2181
TERM=xterm
KUBERNETES_PORT_443_TCP_ADDR=10.96.0.1
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
ZK_LOG_DIR=/var/log/zookeeper
KUBERNETES_PORT_443_TCP_PORT=443
KUBERNETES_PORT_443_TCP_PROTO=tcp
ZK_USER=zookeeper
KUBERNETES_SERVICE_PORT_HTTPS=443
KUBERNETES_PORT_443_TCP=tcp://10.96.0.1:443
KUBERNETES_SERVICE_HOST=10.96.0.1
JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
PWD=/
ZK_CS_PORT_2181_TCP_ADDR=10.108.177.133
ZK_DATA_DIR=/var/lib/zookeeper/data
# cd /usr/bin

查看zk状态:

# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/bin/../etc/zookeeper/zoo.cfg
Mode: leader
# exit
[root@master chaitc-zookeeper]#

查看3台zk状态:

# 查看所有zk节点的状态 
for i in 0 1 2; do kubectl exec zk-$i -n tools /usr/bin/zkServer.sh status; done

 

 4、知识点补充:

PodDisruptionBudget
k8s可以为每个应用程序创建 PodDisruptionBudget 对象(PDB)。PDB 将限制在同一时间因自愿干扰导致的复制应用程序中宕机的 pod 数量。

可以通过两个参数来配置PodDisruptionBudget:(需要注意的是,MinAvailable参数和MaxUnavailable参数只能同时配置一个。)

MinAvailable:表示最小可用POD数,表示应用POD集群处于运行状态的最小POD数量,或者是运行状态的POD数同总POD数的最小百分比

MaxUnavailable:表示最大不可用PO数,表示应用POD集群处于不可用状态的最大POD数,或者是不可用状态的POD数同总POD数的最大百分比

5、卸载zk: 

卸载zk:
kubectl delete StatefulSet zk -n tools
kubectl delete PodDisruptionBudget zk-pdb -n tools
kubectl delete svc zk-cs -n tools
kubectl delete svc zk-hs -n tools
kubectl delete pvc datadir-zk-0 -n tools
kubectl delete pvc datadir-zk-1 -n tools
kubectl delete pvc datadir-zk-2 -n tools
kubectl delete pv k8s-pv-zk01
kubectl delete pv k8s-pv-zk02
kubectl delete pv k8s-pv-zk03

卸载kafka:
kubectl delete StatefulSet kafka -n tools
kubectl delete PodDisruptionBudget kafka-pdb -n tools
kubectl delete Service kafka-cs -n tools
kubectl delete Service kafka-hs -n tools

kubectl delete pvc datadir-kafka-0 -n tools
kubectl delete pv k8s-pv-kafka01
kubectl delete pv k8s-pv-kafka02
kubectl delete pv k8s-pv-kafka03

K8S报错整理 记录: 安装k8s1.23.4版本 安装master报错 1、配置了k8s 阿里云yum源安装kubeadm、kubectl等服务报错 报错截图: 原因:由于官网未开放同步方式, 可能会有索引gpg检查失败的情况 解决:加上--nogpgcheck参数安装服务 yum install -y --nogpgcheck kubelet kubeadm kubect 2、配置了docker镜像仓库仍然无法下载镜像:repository docker.io/kube-apiserver . 阅读详情

相关推荐

Kubernetes PersistentVolumes PersistentVolumeClaims and Examples

Figure: PersistentVolumes, like cluster Nodes, do not belong to any namespace, unlike Pods and PersistentVolumeClaims pv aep-pv-volume.yaml kind: PersistentVolume apiVersion: v1 metadata: name: aep...

zhixingheyi_tian的博客 1568

Kubernetes学习之PV、PVC

一、认识PV、PVC   PersistentVolume(PV)是指集群管理员配置提供的某存储系统上的一段存储空间,它是对底层共享存储的抽象,将共享存储作为一种可由用户申请使用的资源,实现了"存储消费"机制。通过存储插件,PV支持使用多种网络存储或云端存储等多种后端存储系统,例如,前面使用到的NFS、还有其他的如RBD、Cinder等。PV是集群级别的资源,不属于任何的名称空间,用户对PV资源的使用需要通过PersistentVolumeClaim(PVC)提出的使用申请(或称为声明)来完成绑定,PVC是

Micky_Yang的博客 1336

COMSOL金属氢化物-放氢过程

"层流"的出口设置压降函数,解决“找不到一致的初始值”问题,主要是一开始设置出口为1atm的话,压力场过渡太剧烈,不好找到初始解,要么就先算个稳态流场,这种也能求解。注:P0是根据实测PCT的插值曲线(函数名称为:p_iso)得到的,根据初始质量储氢量wtw0,和初始温度条件T0,然后根据函数p_iso(wtw0)*exp(-deltHd/R_const*(1/T0-1/303.15[K]))求解获得。若"初始步长"选择框不勾上,前面0~5s内的求解容易发散,然后求解失败。2、设置"达西定律"的。

qq_24800941的博客 1929

踩坑:部署 k8s 网络到集群

部署 k8s 网络到集群     flannel 介绍 kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml     注意:这里出现了警告: Warning: policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+     节点状态为NotReady

weixin_44559544的博客 3318

PostgreSQL 超详细安装与使用教程:从入门到实战

本文将详细介绍PostgreSQL数据库的安装配置与基础使用。首先从Windows系统安装入手,分步骤讲解17.5版本的安装流程、环境变量配置及服务启动验证。接着重点介绍了pgAdmin4图形化管理工具的安装与使用,包括界面语言设置、数据库连接、创建与管理数据库等操作,同时对比了可视化操作与SQL命令两种方式。最后梳理了PgSQL基础语法,涵盖表的创建、增删改查操作、约束管理等内容,为初学者提供了完整的PostgreSQL入门指南。文章兼顾理论知识与实际操作,既适合数据库新手学习,也可作为开发人员的快速参考

gtf212的博客 1万+

伺服电机的位置控制模式:PP模式与CSP模式的比较

在轮廓位置模式下,上位机给定目标绝对位置(或相对位置)、速度、加速度等参数,伺服内部的轨迹发生器根据这些参数生成目标位置曲线指令,通过伺服驱动器内部实现三环控制(位置环、速度环、力矩环)。如果还不理解,不妨看看下面的类比:轮廓位置模式中,上位控制器对伺服电机说,我给你个位置,怎么去哪,走那条路,那是你自己的事,这个时候伺服电机是有自己的思想的。同期同步位置模式红,上位机控制器对伺服电机的管理就和 严格,除了告诉你目标位置,走那条路都是控制器说的算,伺服电机就是个没有灵魂的工具。重点关注,轮廓位置模式。

m0_49968063的博客 5806

k8s 以statefulset方式部署zookeeper集群

k8s 以statefulset方式部署zookeeper集群 参考 k8s官网zookeeper集群的部署,数据挂着方式改成通过本地方式创建的pv; https://kubernetes.io/docs/tutorials/stateful-application/zookeeper/ 1、zookeeper镜像 镜像使用 k8s.gcr.io/kubernetes-zookeeper:1....

jacklife的博客 9993

自适应粒子群优化(Adaptive Particle Swarm Optimization,APSO

下面是一个关于自适应粒子群优化(Adaptive Particle Swarm Optimization,APSO)的博客,希望可以帮助您。提示:以下是本篇文章正文内容,下面案例可供参考在上面的代码中,表示粒子的数量,表示解空间的维度,表示迭代次数,表示优化的目标函数。在__init__方法中,我们初始化了粒子群的位置和速度,并将每个粒子的位置作为其最优解,将其适应度值初始化为正无穷。我们还初始化了学习因子和惯性权重的参数。在run方法中,我们迭代了次,计算每个粒子的适应度值和最优解。

weixin_52026057的博客 9916

zookeeper和k8s_Kubernetes集群中部署ZooKeeper集群

Kubernetes集群中部署ZooKeeper集群有两种方式,一是基于kubernetes的镜像kubernetes-zookeeper,另外一种是基于原生的镜像zookeeper,基于kubernetes-zookeeper的部署可以参考kubernetes官网文档 https://kubernetes.io/docs/tutorials/stateful-application/zookee...

weixin_39768762的博客 649

Zephyr RTOS 嵌入式 C 编程 (使用嵌入式 RTOS POSIX API)8. Zephyr RTOS 与以太网、Wi-Fi 及 TCP/IP

支持的 BSD 函数包括:socket()、close()、recv()、recvfrom()、send()、sendto()、connect()、bind()、listen()、accept()、fcntl()(用于设置非阻塞模式)、getsockopt()、setsockopt()、poll()、select()、getaddrinfo()和 getnameinfo()。向开发板烧录代码也可能存在问题。可以通过调用 net_if_up() 开启网络接口 ,调用 net_if_down() 关闭接口。

1342

智能体在车联网中的应用:第9天 核心工具链与仿真世界:SUMO交通仿真入门——从安装到构建你的第一个虚拟十字路口

摘要 SUMO是一款开源微观交通仿真工具,为车联网和自动驾驶算法开发提供高效安全的测试环境。文章详细介绍了SUMO的核心概念、安装方法及实战应用。在Ubuntu或Windows系统安装SUMO后,可通过netedit工具构建十字路口路网,包括创建节点、连接边、设置交通信号灯等步骤。随后通过编写.rou.xml文件定义车辆类型、路线和车流,实现动态交通场景模拟。SUMO支持与外部程序交互,能复现真实场景、进行极端测试和算法验证,是车联网研究的理想数字沙盘。

IT深耕十余载,大道之简 1451

kubernetes集群 应用实践 zookeeper部署

zookeeper属于有状态应用,需要为zookeeper部署后端存储服务。

qq_57747969的博客 656

快速生成2D卡通人物的AI工具:开启Live2D角色创作的新时代

随着这一创新工具的推出,我们正见证着Live2D角色创作进入了一个全新的阶段。它不仅极大地简化了角色设计的过程,也为广大创作者提供了一种全新的表达方式。对于那些渴望将脑海中的构思迅速转化为现实的人来说,这无疑是一大福音。现在就访问项目主页,开始探索无限可能吧!t=O83A项目主页https://human3daigc.github.io/Textoon_webpage/

这里汇聚了前沿的技术分享与实用的开发技巧,带你探索从创意到企业的技术创业之路。 4835

k8s部署zookeeper集群

k8s以StatefulSet方式部署zookeeper集群: zookeeper-headless.yaml apiVersion: v1 kind: Service metadata: name: zk-hs labels: app: zk spec: selector: app: zk ports: - port: 2888 name: server - port: 3888 name: leader-election clusterIP:

变成习惯 1万+

城市仿真软件:AnyLogic_(8).行人与人群动态仿真

定义行人个体的行为和属性,如行走速度、目标位置等。// 创建一个行人// 设置行走速度为1.5 m/s// 设置目标位置为入口// 创建另一个行人// 设置行走速度为1.2 m/s// 设置目标位置为出口// 创建行人// 创建乘客行人与人群动态仿真在城市规划、交通管理和紧急疏散等领域具有广泛的应用。通过AnyLogic提供的行人模型模块,可以有效地模拟行人的个体行为、群体动态和与环境的交互。

kkchenjj的博客 1250

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

k8s部署zookeeper集群 将ZooKeeper迁移到Kubernetes上

拥抱并取代:将ZooKeeper迁移到Kubernetes上 本文介绍了HubSpot公司如何将主机上的ZooKeeper集群迁移到Kubernetes上。HubSpot是一家B2B的SaaS公司,成立于2006年。在8年的时间里,它从零起步,成长为一家收入超过1亿美金的大公司,并且于2014年成功上市。在数字营销领域,HubSpot的网站在全世界的流量排名是第五位,在 SMB(中小企业)SaaS 市场上,它确实做到了主宰一方。 最近我们在完全没有downtime的情况下,将数百个ZooKeeper实例从单

肥叔菌的博客 3194

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

zookeeper和k8s_kubernetes部署有状态应用之zookeeper集群

部署集群过程中遇到的坑:1 node(s) had taints that the pod didn't tolerate.集群中有个节点被污染了,查看节点信息,发现其中一个节点没有起来,导致只能启动2个pod2 PV和PVC上的坑一个zk.yaml中需要创建3个zookeeper,根据zookeeper集群的特性,三个zookeeper需要三个不同的数据目录(如果再添加日志目录也是一样),集群...

weixin_39622562的博客 326

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

k8s利用statefulset部署kafka集群(依赖zookeeper)

这里写自定义目录标题kafka需要依赖zookeeper部署zookeeper的yaml部署kafka 最近在工作上调研k8s部署kafka集群的方案,以下配置和部署方案都是亲测可用,有问题可以评论或私我解决。 kafka需要依赖zookeeper kafka的生产者与消费者需要在zookeeper中注册,不然消费者怎么知道生产者是否存活之类的哈哈。废话不多说,直接上干货! 本文用的是statefulset和动态存储部署zookeeper和kafka集群。 部署zookeeper的yaml apiVersi

weixin_45669656的博客 1546

k8s集群安装部署kafka、zookeeper集群

k8s集群安装部署kafka、zookeeper集群 注: 有状态、可持续换集成 redis集群有两种部署方式 StatefulSet Service&Deployment 一、创建NFS存储 找一个k8s节点安装(我是在master节点安装) 创建NFS存储 创建NFS存储主要是为了给kafka、zookeeper提供稳定的后端存储,当kafka、zookeeper的Pod发生故障重启或迁移后,依然能获得原先的数据。 这里,我们先要创建NFS,然后通过使用PV为kafka、zookeeper挂载

weixin_40668374的博客 3193

【传统方式部署zookeeper集群与迁移至k8s】

【代码】【传统方式部署zookeeper集群与迁移至k8s】(待写)

Nightwish5的博客 796

k8s集群部署zookeeper集群。

本次部署的服务分别为一个无头服务、 一个 Service、 一个 PodDisruptionBudget 和一个 StatefulSet。cat zookeeper-service.yaml apiVersion: v1 kind: Service metadata: name: zk-hs namespace:...

凌晨 579

K8S 部署Zookeeper集群

1.创建PV pv.yaml文件内容如下: --- apiVersion: v1 kind: PersistentVolume metadata: name: zkpv01 spec: accessModes: - ReadWriteMany storageClassName: nfs capacity: storage: 5Gi persistentVolumeReclaimPolicy: Retain nfs: path: /data/nfsDir/zook

weixin_44602192的博客 2402

K8s 部署 Zookeeper 和 Kafka 集群

K8s 部署 Zookeeper 和 Kafka 集群

小毕超博客 1566
上一篇: tcpdump
下一篇: etcd的部署和简单使用
潮听哥
博客等级 码龄9年 6093粉丝 80原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值