ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Kubernetes StatefulSet with zookeeper

2021-08-26 20:35:42  阅读:197  来源: 互联网

标签:pre StatefulSet name Kubernetes zk -- app zookeeper


介绍

官方文档https://kubernetes.io/zh/docs/tutorials/stateful-application/zookeeper/

在部署之前,你需要熟悉以下Kubernetes概念

根据官方要求,zookeeper部署在Kubernetes集群需要具备如下要求

    • node节点资源至少四个节点的集群,每个节点至少 2 CPUs 和 4 GiB 内存

如果在云平台部署zookeeper集群,需要学习相关云厂商的持久化存储,如何与Kubernetes集群融合

配置过程


 

整个部署分为以下几个步骤(为了细化官方文档部署过程,以下具体的分段),官方文档给出的example.yaml有缺少遗漏的部分,在下文一一指出,如下

  1. 创建StorageClass
  2. 创建PersistentVolumeClaim
  3. 创建Headless Service
  4. 创建PodDisruptionBudget
  5. 创建StatefulSets
    # zookeeper.yaml
    apiVersion: v1
    kind: Service
    metadata:
      name: pre-zk-hs
      namespace: pre
      labels:
        app: pre-zk
    spec:
      ports:
      - port: 2888
        name: server
      - port: 3888
        name: leader-election
      clusterIP: None
      selector:
        app: pre-zk
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: pre-zk-cs
      namespace: pre
      labels:
        app: pre-zk
    spec:
      ports:
      - port: 2181
        name: client
      selector:
        app: pre-zk
    ---
    apiVersion: policy/v1beta1
    kind: PodDisruptionBudget
    metadata:
      name: pre-zk-pdb
      namespace: pre
    spec:
      selector:
        matchLabels:
          app: pre-zk
      maxUnavailable: 1
    ---
    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: pre-zk
      namespace: pre
    spec:
      selector:
        matchLabels:
          app: pre-zk
      serviceName: pre-zk-hs
      replicas: 3
      updateStrategy:
        type: RollingUpdate
      podManagementPolicy: OrderedReady
      template:
        metadata:
          labels:
            app: pre-zk
        spec:
          affinity:
            nodeAffinity:
              requiredDuringSchedulingIgnoredDuringExecution:
                nodeSelectorTerms:
                - matchExpressions:
                  - key: kubernetes.io/resource
                    operator: In
                    values:
                    - pre-base
            podAntiAffinity:
              requiredDuringSchedulingIgnoredDuringExecution:
                - labelSelector:
                    matchExpressions:
                      - key: "app"
                        operator: In
                        values:
                        - pre-zk
                  topologyKey: "kubernetes.io/hostname"
          containers:
          - name: pre-zk
            imagePullPolicy: Always
            image: "k8s.gcr.io/kubernetes-zookeeper:1.0-3.4.10"
            resources:
              requests:
                memory: "1Gi"
                cpu: "0.5"
              limits:
                cpu: "1"
                memory: "1Gi"
            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
          # 如果是简单的测试sattefulSet安装zookeeper集群,使用临时存储即可
          # StatefulSet 控制器为 StatefulSet 中的每个 Pod 生成一个 PersistentVolumeClaim
          #volumes:
          #- name: datadir
          #  emptyDir: {}
          securityContext:
            runAsUser: 1000
            fsGroup: 1000
      # 正式环境,需要部署持久化存储
      volumeClaimTemplates:
      - metadata:
          name: datadir
          annotations:
            volume.alpha.kubernetes.io/storage-class: anything
        spec:
          accessModes: [ "ReadWriteOnce" ]
          resources:
            requests:
              storage: 20Gi
          storageClassName: alicloud-disk-essd

     

标签:pre,StatefulSet,name,Kubernetes,zk,--,app,zookeeper
来源: https://www.cnblogs.com/apink/p/15191368.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有