티스토리 뷰

728x90

간단한 테스트들을 위해 NodePort로 설정하여 Kafka를 설치해보았다.

참고: https://github.com/bitnami/charts/tree/master/bitnami/kafka

 

1. helm repo 추가

$ helm repo add bitnami https://charts.bitnami.com/bitnami

2. volume 셋팅

  a) 디렉터리 생성

$ mkdir zoo && chmod 747 zoo
$ mkdir data && chmod 747 data

  b) volume yaml파일 작성

apiVersion: v1
kind: PersistentVolume
metadata:
  name: kafka-data
  labels:
    app: kafka-data
spec:
  storageClassName: kafka-data
  accessModes:
  - ReadWriteOnce
  hostPath:
    path: "/home/sunju/kafka/data"
  capacity:
    storage: 1Gi
 
 
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: kafka-zoo
  labels:
    app: kafka-zoo
spec:
  storageClassName: kafka-zoo
  accessModes:
  - ReadWriteOnce
  hostPath:
    path: "/home/sunju/kafka/zoo"
  capacity:
    storage: 2Gi
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: kafka-data-pvc
spec:
  storageClassName: kafka-data
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
 
 
---
 
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: kafka-zoo-pvc
spec:
  storageClassName: kafka-zoo
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 2Gi

3. helm values.yaml 파일 작성

persistence:
  enabled: true
  existingClaim: "kafka-data-pvc"
 
zookeeper:
  persistence:
    existingClaim: "kafka-zoo-pvc"
    
    
externalAccess:
  enabled: true
  service:
    type: NodePort
    nodePorts:
      - 30001
    useHostIPs: true
    domain: "192.168.1.1"

 

4. helm install

$ helm install kafka-demo -f values.yaml bitnami/kafka

> 로그보기

더보기

NAME: kafka-demo
LAST DEPLOYED: Thu May 12 12:57:09 2022
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
** Please be patient while the chart is being deployed **

Kafka can be accessed by consumers via port 9092 on the following DNS name from within your cluster:

    kafka-demo.default.svc.cluster.local

Each Kafka broker can be accessed by producers via port 9092 on the following DNS name(s) from within your cluster:

    kafka-demo-0.kafka-demo-headless.default.svc.cluster.local:9092

To create a pod that you can use as a Kafka client run the following commands:

    kubectl run kafka-demo-client --restart='Never' --image docker.io/bitnami/kafka:2.7.0-debian-10-r29 --namespace default --command -- sleep infinity
    kubectl exec --tty -i kafka-demo-client --namespace default -- bash

    PRODUCER:
        kafka-console-producer.sh \

            --broker-list kafka-demo-0.kafka-demo-headless.default.svc.cluster.local:9092 \
            --topic test

    CONSUMER:
        kafka-console-consumer.sh \

            --bootstrap-server kafka-demo.default.svc.cluster.local:9092 \
            --topic test \
            --from-beginning

5. 결과 확인

$  kubectl get po
NAME                     READY   STATUS    RESTARTS   AGE
kafka-demo-0             1/1     Running   1          12m
kafka-demo-zookeeper-0   1/1     Running   0          12m

> Kafka 로그보기

더보기

03:57:22.33
 03:57:22.33 Welcome to the Bitnami kafka container
 03:57:22.33 Subscribe to project updates by watching https://github.com/bitnami/bitnami-docker-kafka
 03:57:22.33 Submit issues and feature requests at https://github.com/bitnami/bitnami-docker-kafka/issues
 03:57:22.34
 03:57:22.34 INFO  ==> ** Starting Kafka setup **
 03:57:22.39 WARN  ==> You set the environment variable ALLOW_PLAINTEXT_LISTENER=yes. For safety reasons, do not use this flag in a production environment.
 03:57:22.40 INFO  ==> Initializing Kafka...
 03:57:22.40 INFO  ==> No injected configuration files found, creating default config files
 03:57:22.57 INFO  ==> Configuring Kafka for inter-broker communications with PLAINTEXT authentication.
 03:57:22.57 WARN  ==> Inter-broker communications are configured as PLAINTEXT. This is not safe for production environments.
 03:57:22.57 INFO  ==> Configuring Kafka for client communications with PLAINTEXT authentication.
 03:57:22.58 WARN  ==> Client communications are configured using PLAINTEXT listeners. For safety reasons, do not use this in a production environment.

 03:57:22.58 INFO  ==> ** Kafka setup finished! **
 03:57:22.60 INFO  ==> ** Starting Kafka **
[2022-05-12 03:57:23,425] INFO Registered kafka:type=kafka.Log4jController MBean (kafka.utils.Log4jControllerRegistration$)
[2022-05-12 03:57:23,893] INFO Setting -D jdk.tls.rejectClientInitiatedRenegotiation=true to disable client-initiated TLS renegotiation (org.apache.zookeeper.common.X509Util)
[2022-05-12 03:57:23,953] INFO Registered signal handlers for TERM, INT, HUP (org.apache.kafka.common.utils.LoggingSignalHandler)
[2022-05-12 03:57:23,956] INFO starting (kafka.server.KafkaServer)
[2022-05-12 03:57:23,957] INFO Connecting to zookeeper on kafka-demo-zookeeper (kafka.server.KafkaServer)
[2022-05-12 03:57:23,971] INFO [ZooKeeperClient Kafka server] Initializing a new session to kafka-demo-zookeeper. (kafka.zookeeper.ZooKeeperClient)
[2022-05-12 03:57:23,976] INFO Client environment:zookeeper.version=3.5.8-f439ca583e70862c3068a1f2a7d4d068eec33315, built on 05/04/2020 15:53 GMT (org.apache.zookeeper.ZooKeeper)
[2022-05-12 03:57:23,976] INFO Client environment:host.name=kafka-demo-0.kafka-demo-headless.default.svc.cluster.local (org.apache.zookeeper.ZooKeeper)
[2022-05-12 03:57:23,976] INFO Client environment:java.version=11.0.9.1 (org.apache.zookeeper.ZooKeeper)
[2022-05-12 03:57:23,976] INFO Client environment:java.vendor=BellSoft (org.apache.zookeeper.ZooKeeper)
[2022-05-12 03:57:23,976] INFO Client environment:java.home=/opt/bitnami/java (org.apache.zookeeper.ZooKeeper)
[2022-05-12 03:57:23,976] INFO Client environment:java.class.path=/opt/bitnami/kafka/bin/../libs/activation-1.1.1.jar:/opt/bitnami/kafka/bin/../libs/aopalliance-repackaged-2.6.1.jar:/opt/bitnami/kafka/bin/../libs/argparse4j-0.7.0.jar:/opt/bitnami/kafka/bin/../libs/audience-annotations-0.5.0.jar:/opt/bitnami/kafka/bin/../libs/commons-cli-1.4.jar:/opt/bitnami/kafka/bin/../libs/commons-lang3-3.8.1.jar:/opt/bitnami/kafka/bin/../libs/connect-api-2.7.0.jar:/opt/bitnami/kafka/bin/../libs/connect-basic-auth-extension-2.7.0.jar:/opt/bitnami/kafka/bin/../libs/connect-file-2.7.0.jar:/opt/bitnami/kafka/bin/../libs/connect-json-2.7.0.jar:/opt/bitnami/kafka/bin/../libs/connect-mirror-2.7.0.jar:/opt/bitnami/kafka/bin/../libs/connect-mirror-client-2.7.0.jar:/opt/bitnami/kafka/bin/../libs/connect-runtime-2.7.0.jar:/opt/bitnami/kafka/bin/../libs/connect-transforms-2.7.0.jar:/opt/bitnami/kafka/bin/../libs/hk2-api-2.6.1.jar:/opt/bitnami/kafka/bin/../libs/hk2-locator-2.6.1.jar:/opt/bitnami/kafka/bin/../libs/hk2-utils-2.6.1.jar:/opt/bitnami/kafka/bin/../libs/jackson-annotations-2.10.5.jar:/opt/bitnami/kafka/bin/../libs/jackson-core-2.10.5.jar:/opt/bitnami/kafka/bin/../libs/jackson-databind-2.10.5.1.jar:/opt/bitnami/kafka/bin/../libs/jackson-dataformat-csv-2.10.5.jar:/opt/bitnami/kafka/bin/../libs/jackson-datatype-jdk8-2.10.5.jar:/opt/bitnami/kafka/bin/../libs/jackson-jaxrs-base-2.10.5.jar:/opt/bitnami/kafka/bin/../libs/jackson-jaxrs-json-provider-2.10.5.jar:/opt/bitnami/kafka/bin/../libs/jackson-module-jaxb-annotations-2.10.5.jar:/opt/bitnami/kafka/bin/../libs/jackson-module-paranamer-2.10.5.jar:/opt/bitnami/kafka/bin/../libs/jackson-module-scala_2.12-2.10.5.jar:/opt/bitnami/kafka/bin/../libs/jakarta.activation-api-1.2.1.jar:/opt/bitnami/kafka/bin/../libs/jakarta.annotation-api-1.3.5.jar:/opt/bitnami/kafka/bin/../libs/jakarta.inject-2.6.1.jar:/opt/bitnami/kafka/bin/../libs/jakarta.validation-api-2.0.2.jar:/opt/bitnami/kafka/bin/../libs/jakarta.ws.rs-api-2.1.6.jar:/opt/bitnami/kafka/bin/../libs/jakarta.xml.bind-api-2.3.2.jar:/opt/bitnami/kafka/bin/../libs/javassist-3.25.0-GA.jar:/opt/bitnami/kafka/bin/../libs/javassist-3.26.0-GA.jar:/opt/bitnami/kafka/bin/../libs/javax.servlet-api-3.1.0.jar:/opt/bitnami/kafka/bin/../libs/javax.ws.rs-api-2.1.1.jar:/opt/bitnami/kafka/bin/../libs/jaxb-api-2.3.0.jar:/opt/bitnami/kafka/bin/../libs/jersey-client-2.31.jar:/opt/bitnami/kafka/bin/../libs/jersey-common-2.31.jar:/opt/bitnami/kafka/bin/../libs/jersey-container-servlet-2.31.jar:/opt/bitnami/kafka/bin/../libs/jersey-container-servlet-core-2.31.jar:/opt/bitnami/kafka/bin/../libs/jersey-hk2-2.31.jar:/opt/bitnami/kafka/bin/../libs/jersey-media-jaxb-2.31.jar:/opt/bitnami/kafka/bin/../libs/jersey-server-2.31.jar:/opt/bitnami/kafka/bin/../libs/jetty-client-9.4.33.v20201020.jar:/opt/bitnami/kafka/bin/../libs/jetty-continuation-9.4.33.v20201020.jar:/opt/bitnami/kafka/bin/../libs/jetty-http-9.4.33.v20201020.jar:/opt/bitnami/kafka/bin/../libs/jetty-io-9.4.33.v20201020.jar:/opt/bitnami/kafka/bin/../libs/jetty-security-9.4.33.v20201020.jar:/opt/bitnami/kafka/bin/../libs/jetty-server-9.4.33.v20201020.jar:/opt/bitnami/kafka/bin/../libs/jetty-servlet-9.4.33.v20201020.jar:/opt/bitnami/kafka/bin/../libs/jetty-servlets-9.4.33.v20201020.jar:/opt/bitnami/kafka/bin/../libs/jetty-util-9.4.33.v20201020.jar:/opt/bitnami/kafka/bin/../libs/jopt-simple-5.0.4.jar:/opt/bitnami/kafka/bin/../libs/kafka-clients-2.7.0.jar:/opt/bitnami/kafka/bin/../libs/kafka-log4j-appender-2.7.0.jar:/opt/bitnami/kafka/bin/../libs/kafka-raft-2.7.0.jar:/opt/bitnami/kafka/bin/../libs/kafka-streams-2.7.0.jar:/opt/bitnami/kafka/bin/../libs/kafka-streams-examples-2.7.0.jar:/opt/bitnami/kafka/bin/../libs/kafka-streams-scala_2.12-2.7.0.jar:/opt/bitnami/kafka/bin/../libs/kafka-streams-test-utils-2.7.0.jar:/opt/bitnami/kafka/bin/../libs/kafka-tools-2.7.0.jar:/opt/bitnami/kafka/bin/../libs/kafka_2.12-2.7.0-sources.jar:/opt/bitnami/kafka/bin/../libs/kafka_2.12-2.7.0.jar:/opt/bitnami/kafka/bin/../libs/log4j-1.2.17.jar:/opt/bitnami/kafka/bin/../libs/lz4-java-1.7.1.jar:/opt/bitnami/kafka/bin/../libs/maven-artifact-3.6.3.jar:/opt/bitnami/kafka/bin/../libs/metrics-core-2.2.0.jar:/opt/bitnami/kafka/bin/../libs/netty-buffer-4.1.51.Final.jar:/opt/bitnami/kafka/bin/../libs/netty-codec-4.1.51.Final.jar:/opt/bitnami/kafka/bin/../libs/netty-common-4.1.51.Final.jar:/opt/bitnami/kafka/bin/../libs/netty-handler-4.1.51.Final.jar:/opt/bitnami/kafka/bin/../libs/netty-resolver-4.1.51.Final.jar:/opt/bitnami/kafka/bin/../libs/netty-transport-4.1.51.Final.jar:/opt/bitnami/kafka/bin/../libs/netty-transport-native-epoll-4.1.51.Final.jar:/opt/bitnami/kafka/bin/../libs/netty-transport-native-unix-common-4.1.51.Final.jar:/opt/bitnami/kafka/bin/../libs/osgi-resource-locator-1.0.3.jar:/opt/bitnami/kafka/bin/../libs/paranamer-2.8.jar:/opt/bitnami/kafka/bin/../libs/plexus-utils-3.2.1.jar:/opt/bitnami/kafka/bin/../libs/reflections-0.9.12.jar:/opt/bitnami/kafka/bin/../libs/rocksdbjni-5.18.4.jar:/opt/bitnami/kafka/bin/../libs/scala-collection-compat_2.12-2.2.0.jar:/opt/bitnami/kafka/bin/../libs/scala-java8-compat_2.12-0.9.1.jar:/opt/bitnami/kafka/bin/../libs/scala-library-2.12.12.jar:/opt/bitnami/kafka/bin/../libs/scala-logging_2.12-3.9.2.jar:/opt/bitnami/kafka/bin/../libs/scala-reflect-2.12.12.jar:/opt/bitnami/kafka/bin/../libs/slf4j-api-1.7.30.jar:/opt/bitnami/kafka/bin/../libs/slf4j-log4j12-1.7.30.jar:/opt/bitnami/kafka/bin/../libs/snappy-java-1.1.7.7.jar:/opt/bitnami/kafka/bin/../libs/zookeeper-3.5.8.jar:/opt/bitnami/kafka/bin/../libs/zookeeper-jute-3.5.8.jar:/opt/bitnami/kafka/bin/../libs/zstd-jni-1.4.5-6.jar (org.apache.zookeeper.ZooKeeper)
[2022-05-12 03:57:23,976] INFO Client environment:java.library.path=/usr/java/packages/lib:/usr/lib64:/lib64:/lib:/usr/lib (org.apache.zookeeper.ZooKeeper)
[2022-05-12 03:57:23,976] INFO Client environment:java.io.tmpdir=/tmp (org.apache.zookeeper.ZooKeeper)
[2022-05-12 03:57:23,976] INFO Client environment:java.compiler=<NA> (org.apache.zookeeper.ZooKeeper)
[2022-05-12 03:57:23,976] INFO Client environment:os.name=Linux (org.apache.zookeeper.ZooKeeper)
[2022-05-12 03:57:23,976] INFO Client environment:os.arch=amd64 (org.apache.zookeeper.ZooKeeper)
[2022-05-12 03:57:23,976] INFO Client environment:os.version=5.13.0-35-generic (org.apache.zookeeper.ZooKeeper)
[2022-05-12 03:57:23,976] INFO Client environment:user.name=? (org.apache.zookeeper.ZooKeeper)
[2022-05-12 03:57:23,976] INFO Client environment:user.home=? (org.apache.zookeeper.ZooKeeper)
[2022-05-12 03:57:23,976] INFO Client environment:user.dir=/ (org.apache.zookeeper.ZooKeeper)
[2022-05-12 03:57:23,976] INFO Client environment:os.memory.free=1012MB (org.apache.zookeeper.ZooKeeper)
[2022-05-12 03:57:23,976] INFO Client environment:os.memory.max=1024MB (org.apache.zookeeper.ZooKeeper)
[2022-05-12 03:57:23,976] INFO Client environment:os.memory.total=1024MB (org.apache.zookeeper.ZooKeeper)
[2022-05-12 03:57:23,978] INFO Initiating client connection, connectString=kafka-demo-zookeeper sessionTimeout=18000 watcher=kafka.zookeeper.ZooKeeperClient$ZooKeeperClientWatcher$@495b0487 (org.apache.zookeeper.ZooKeeper)
[2022-05-12 03:57:23,982] INFO jute.maxbuffer value is 4194304 Bytes (org.apache.zookeeper.ClientCnxnSocket)
[2022-05-12 03:57:23,987] INFO zookeeper.request.timeout value is 0. feature enabled= (org.apache.zookeeper.ClientCnxn)
[2022-05-12 03:57:23,989] INFO [ZooKeeperClient Kafka server] Waiting until connected. (kafka.zookeeper.ZooKeeperClient)
[2022-05-12 03:57:23,999] INFO Opening socket connection to server kafka-demo-zookeeper/10.104.139.214:2181. Will not attempt to authenticate using SASL (unknown error) (org.apache.zookeeper.ClientCnxn)
[2022-05-12 03:57:24,004] INFO Socket connection established, initiating session, client: /10.244.1.28:55196, server: kafka-demo-zookeeper/10.104.139.214:2181 (org.apache.zookeeper.ClientCnxn)
[2022-05-12 03:57:24,025] INFO Session establishment complete on server kafka-demo-zookeeper/10.104.139.214:2181, sessionid = 0x1010c3055590000, negotiated timeout = 18000 (org.apache.zookeeper.ClientCnxn)
[2022-05-12 03:57:24,027] INFO [ZooKeeperClient Kafka server] Connected. (kafka.zookeeper.ZooKeeperClient)
[2022-05-12 03:57:24,142] INFO [feature-zk-node-event-process-thread]: Starting (kafka.server.FinalizedFeatureChangeListener$ChangeNotificationProcessorThread)
[2022-05-12 03:57:24,153] INFO Feature ZK node at path: /feature does not exist (kafka.server.FinalizedFeatureChangeListener)
[2022-05-12 03:57:24,153] INFO Cleared cache (kafka.server.FinalizedFeatureCache)
[2022-05-12 03:57:24,290] INFO Cluster ID = awFH_Q8eSRS3dOkELGlVnA (kafka.server.KafkaServer)
[2022-05-12 03:57:24,296] WARN No meta.properties file under dir /bitnami/kafka/data/meta.properties (kafka.server.BrokerMetadataCheckpoint)
[2022-05-12 03:57:24,383] INFO KafkaConfig values:
        advertised.host.name = null
        advertised.listeners = INTERNAL://kafka-demo-0.kafka-demo-headless.default.svc.cluster.local:9093,CLIENT://kafka-demo-0.kafka-demo-headless.default.svc.cluster.local:9092
        advertised.port = null
        alter.config.policy.class.name = null
        alter.log.dirs.replication.quota.window.num = 11
        alter.log.dirs.replication.quota.window.size.seconds = 1
        authorizer.class.name =
        auto.create.topics.enable = true
        auto.leader.rebalance.enable = true
        background.threads = 10
        broker.id = 0
        broker.id.generation.enable = true
        broker.rack = null
        client.quota.callback.class = null
        compression.type = producer
        connection.failed.authentication.delay.ms = 100
        connections.max.idle.ms = 600000
        connections.max.reauth.ms = 0
        control.plane.listener.name = null
        controlled.shutdown.enable = true
        controlled.shutdown.max.retries = 3
        controlled.shutdown.retry.backoff.ms = 5000
        controller.quota.window.num = 11
        controller.quota.window.size.seconds = 1
        controller.socket.timeout.ms = 30000
        create.topic.policy.class.name = null
        default.replication.factor = 1
        delegation.token.expiry.check.interval.ms = 3600000
        delegation.token.expiry.time.ms = 86400000
        delegation.token.master.key = null
        delegation.token.max.lifetime.ms = 604800000
        delete.records.purgatory.purge.interval.requests = 1
        delete.topic.enable = false
        fetch.max.bytes = 57671680
        fetch.purgatory.purge.interval.requests = 1000
        group.initial.rebalance.delay.ms = 0
        group.max.session.timeout.ms = 1800000
        group.max.size = 2147483647
        group.min.session.timeout.ms = 6000
        host.name =
        inter.broker.listener.name = INTERNAL
        inter.broker.protocol.version = 2.7-IV2
        kafka.metrics.polling.interval.secs = 10
        kafka.metrics.reporters = []
        leader.imbalance.check.interval.seconds = 300
        leader.imbalance.per.broker.percentage = 10
        listener.security.protocol.map = INTERNAL:PLAINTEXT,CLIENT:PLAINTEXT
        listeners = INTERNAL://:9093,CLIENT://:9092
        log.cleaner.backoff.ms = 15000
        log.cleaner.dedupe.buffer.size = 134217728
        log.cleaner.delete.retention.ms = 86400000
        log.cleaner.enable = true
        log.cleaner.io.buffer.load.factor = 0.9
        log.cleaner.io.buffer.size = 524288
        log.cleaner.io.max.bytes.per.second = 1.7976931348623157E308
        log.cleaner.max.compaction.lag.ms = 9223372036854775807
        log.cleaner.min.cleanable.ratio = 0.5
        log.cleaner.min.compaction.lag.ms = 0
        log.cleaner.threads = 1
        log.cleanup.policy = [delete]
        log.dir = /tmp/kafka-logs
        log.dirs = /bitnami/kafka/data
        log.flush.interval.messages = 10000
        log.flush.interval.ms = 1000
        log.flush.offset.checkpoint.interval.ms = 60000
        log.flush.scheduler.interval.ms = 9223372036854775807
        log.flush.start.offset.checkpoint.interval.ms = 60000
        log.index.interval.bytes = 4096
        log.index.size.max.bytes = 10485760
        log.message.downconversion.enable = true
        log.message.format.version = 2.7-IV2
        log.message.timestamp.difference.max.ms = 9223372036854775807
        log.message.timestamp.type = CreateTime
        log.preallocate = false
        log.retention.bytes = 1073741824
        log.retention.check.interval.ms = 300000
        log.retention.hours = 168
        log.retention.minutes = null
        log.retention.ms = null
        log.roll.hours = 168
        log.roll.jitter.hours = 0
        log.roll.jitter.ms = null
        log.roll.ms = null
        log.segment.bytes = 1073741824
        log.segment.delete.delay.ms = 60000
        max.connection.creation.rate = 2147483647
        max.connections = 2147483647
        max.connections.per.ip = 2147483647
        max.connections.per.ip.overrides =
        max.incremental.fetch.session.cache.slots = 1000
        message.max.bytes = 1000012
        metric.reporters = []
        metrics.num.samples = 2
        metrics.recording.level = INFO
        metrics.sample.window.ms = 30000
        min.insync.replicas = 1
        num.io.threads = 8
        num.network.threads = 3
        num.partitions = 1
        num.recovery.threads.per.data.dir = 1
        num.replica.alter.log.dirs.threads = null
        num.replica.fetchers = 1
        offset.metadata.max.bytes = 4096
        offsets.commit.required.acks = -1
        offsets.commit.timeout.ms = 5000
        offsets.load.buffer.size = 5242880
        offsets.retention.check.interval.ms = 600000
        offsets.retention.minutes = 10080
        offsets.topic.compression.codec = 0
        offsets.topic.num.partitions = 50
        offsets.topic.replication.factor = 1
        offsets.topic.segment.bytes = 104857600
        password.encoder.cipher.algorithm = AES/CBC/PKCS5Padding
        password.encoder.iterations = 4096
        password.encoder.key.length = 128
        password.encoder.keyfactory.algorithm = null
        password.encoder.old.secret = null
        password.encoder.secret = null
        port = 9092
        principal.builder.class = null
        producer.purgatory.purge.interval.requests = 1000
        queued.max.request.bytes = -1
        queued.max.requests = 500
        quota.consumer.default = 9223372036854775807
        quota.producer.default = 9223372036854775807
        quota.window.num = 11
        quota.window.size.seconds = 1
        replica.fetch.backoff.ms = 1000
        replica.fetch.max.bytes = 1048576
        replica.fetch.min.bytes = 1
        replica.fetch.response.max.bytes = 10485760
        replica.fetch.wait.max.ms = 500
        replica.high.watermark.checkpoint.interval.ms = 5000
        replica.lag.time.max.ms = 30000
        replica.selector.class = null
        replica.socket.receive.buffer.bytes = 65536
        replica.socket.timeout.ms = 30000
        replication.quota.window.num = 11
        replication.quota.window.size.seconds = 1
        request.timeout.ms = 30000
        reserved.broker.max.id = 1000
        sasl.client.callback.handler.class = null
        sasl.enabled.mechanisms = [PLAIN, SCRAM-SHA-256, SCRAM-SHA-512]
        sasl.jaas.config = null
        sasl.kerberos.kinit.cmd = /usr/bin/kinit
        sasl.kerberos.min.time.before.relogin = 60000
        sasl.kerberos.principal.to.local.rules = [DEFAULT]
        sasl.kerberos.service.name = null
        sasl.kerberos.ticket.renew.jitter = 0.05
        sasl.kerberos.ticket.renew.window.factor = 0.8
        sasl.login.callback.handler.class = null
        sasl.login.class = null
        sasl.login.refresh.buffer.seconds = 300
        sasl.login.refresh.min.period.seconds = 60
        sasl.login.refresh.window.factor = 0.8
        sasl.login.refresh.window.jitter = 0.05
        sasl.mechanism.inter.broker.protocol =
        sasl.server.callback.handler.class = null
        security.inter.broker.protocol = PLAINTEXT
        security.providers = null
        socket.connection.setup.timeout.max.ms = 127000
        socket.connection.setup.timeout.ms = 10000
        socket.receive.buffer.bytes = 102400
        socket.request.max.bytes = 104857600
        socket.send.buffer.bytes = 102400
        ssl.cipher.suites = []
        ssl.client.auth = none
        ssl.enabled.protocols = [TLSv1.2, TLSv1.3]
        ssl.endpoint.identification.algorithm = https
        ssl.engine.factory.class = null
        ssl.key.password = null
        ssl.keymanager.algorithm = SunX509
        ssl.keystore.certificate.chain = null
        ssl.keystore.key = null
        ssl.keystore.location = null
        ssl.keystore.password = null
        ssl.keystore.type = JKS
        ssl.principal.mapping.rules = DEFAULT
        ssl.protocol = TLSv1.3
        ssl.provider = null
        ssl.secure.random.implementation = null
        ssl.trustmanager.algorithm = PKIX
        ssl.truststore.certificates = null
        ssl.truststore.location = null
        ssl.truststore.password = null
        ssl.truststore.type = JKS
        transaction.abort.timed.out.transaction.cleanup.interval.ms = 10000
        transaction.max.timeout.ms = 900000
        transaction.remove.expired.transaction.cleanup.interval.ms = 3600000
        transaction.state.log.load.buffer.size = 5242880
        transaction.state.log.min.isr = 1
        transaction.state.log.num.partitions = 50
        transaction.state.log.replication.factor = 1
        transaction.state.log.segment.bytes = 104857600
        transactional.id.expiration.ms = 604800000
        unclean.leader.election.enable = false
        zookeeper.clientCnxnSocket = null
        zookeeper.connect = kafka-demo-zookeeper
        zookeeper.connection.timeout.ms = 6000
        zookeeper.max.in.flight.requests = 10
        zookeeper.session.timeout.ms = 18000
        zookeeper.set.acl = false
        zookeeper.ssl.cipher.suites = null
        zookeeper.ssl.client.enable = false
        zookeeper.ssl.crl.enable = false
        zookeeper.ssl.enabled.protocols = null
        zookeeper.ssl.endpoint.identification.algorithm = HTTPS
        zookeeper.ssl.keystore.location = null
        zookeeper.ssl.keystore.password = null
        zookeeper.ssl.keystore.type = null
        zookeeper.ssl.ocsp.enable = false
        zookeeper.ssl.protocol = TLSv1.2
        zookeeper.ssl.truststore.location = null
        zookeeper.ssl.truststore.password = null
        zookeeper.ssl.truststore.type = null
        zookeeper.sync.time.ms = 2000
 (kafka.server.KafkaConfig)
[2022-05-12 03:57:24,391] INFO KafkaConfig values:
        advertised.host.name = null
        advertised.listeners = INTERNAL://kafka-demo-0.kafka-demo-headless.default.svc.cluster.local:9093,CLIENT://kafka-demo-0.kafka-demo-headless.default.svc.cluster.local:9092
        advertised.port = null
        alter.config.policy.class.name = null
        alter.log.dirs.replication.quota.window.num = 11
        alter.log.dirs.replication.quota.window.size.seconds = 1
        authorizer.class.name =
        auto.create.topics.enable = true
        auto.leader.rebalance.enable = true
        background.threads = 10
        broker.id = 0
        broker.id.generation.enable = true
        broker.rack = null
        client.quota.callback.class = null
        compression.type = producer
        connection.failed.authentication.delay.ms = 100
        connections.max.idle.ms = 600000
        connections.max.reauth.ms = 0
        control.plane.listener.name = null
        controlled.shutdown.enable = true
        controlled.shutdown.max.retries = 3
        controlled.shutdown.retry.backoff.ms = 5000
        controller.quota.window.num = 11
        controller.quota.window.size.seconds = 1
        controller.socket.timeout.ms = 30000
        create.topic.policy.class.name = null
        default.replication.factor = 1
        delegation.token.expiry.check.interval.ms = 3600000
        delegation.token.expiry.time.ms = 86400000
        delegation.token.master.key = null
        delegation.token.max.lifetime.ms = 604800000
        delete.records.purgatory.purge.interval.requests = 1
        delete.topic.enable = false
        fetch.max.bytes = 57671680
        fetch.purgatory.purge.interval.requests = 1000
        group.initial.rebalance.delay.ms = 0
        group.max.session.timeout.ms = 1800000
        group.max.size = 2147483647
        group.min.session.timeout.ms = 6000
        host.name =
        inter.broker.listener.name = INTERNAL
        inter.broker.protocol.version = 2.7-IV2
        kafka.metrics.polling.interval.secs = 10
        kafka.metrics.reporters = []
        leader.imbalance.check.interval.seconds = 300
        leader.imbalance.per.broker.percentage = 10
        listener.security.protocol.map = INTERNAL:PLAINTEXT,CLIENT:PLAINTEXT
        listeners = INTERNAL://:9093,CLIENT://:9092
        log.cleaner.backoff.ms = 15000
        log.cleaner.dedupe.buffer.size = 134217728
        log.cleaner.delete.retention.ms = 86400000
        log.cleaner.enable = true
        log.cleaner.io.buffer.load.factor = 0.9
        log.cleaner.io.buffer.size = 524288
        log.cleaner.io.max.bytes.per.second = 1.7976931348623157E308
        log.cleaner.max.compaction.lag.ms = 9223372036854775807
        log.cleaner.min.cleanable.ratio = 0.5
        log.cleaner.min.compaction.lag.ms = 0
        log.cleaner.threads = 1
        log.cleanup.policy = [delete]
        log.dir = /tmp/kafka-logs
        log.dirs = /bitnami/kafka/data
        log.flush.interval.messages = 10000
        log.flush.interval.ms = 1000
        log.flush.offset.checkpoint.interval.ms = 60000
        log.flush.scheduler.interval.ms = 9223372036854775807
        log.flush.start.offset.checkpoint.interval.ms = 60000
        log.index.interval.bytes = 4096
        log.index.size.max.bytes = 10485760
        log.message.downconversion.enable = true
        log.message.format.version = 2.7-IV2
        log.message.timestamp.difference.max.ms = 9223372036854775807
        log.message.timestamp.type = CreateTime
        log.preallocate = false
        log.retention.bytes = 1073741824
        log.retention.check.interval.ms = 300000
        log.retention.hours = 168
        log.retention.minutes = null
        log.retention.ms = null
        log.roll.hours = 168
        log.roll.jitter.hours = 0
        log.roll.jitter.ms = null
        log.roll.ms = null
        log.segment.bytes = 1073741824
        log.segment.delete.delay.ms = 60000
        max.connection.creation.rate = 2147483647
        max.connections = 2147483647
        max.connections.per.ip = 2147483647
        max.connections.per.ip.overrides =
        max.incremental.fetch.session.cache.slots = 1000
        message.max.bytes = 1000012
        metric.reporters = []
        metrics.num.samples = 2
        metrics.recording.level = INFO
        metrics.sample.window.ms = 30000
        min.insync.replicas = 1
        num.io.threads = 8
        num.network.threads = 3
        num.partitions = 1
        num.recovery.threads.per.data.dir = 1
        num.replica.alter.log.dirs.threads = null
        num.replica.fetchers = 1
        offset.metadata.max.bytes = 4096
        offsets.commit.required.acks = -1
        offsets.commit.timeout.ms = 5000
        offsets.load.buffer.size = 5242880
        offsets.retention.check.interval.ms = 600000
        offsets.retention.minutes = 10080
        offsets.topic.compression.codec = 0
        offsets.topic.num.partitions = 50
        offsets.topic.replication.factor = 1
        offsets.topic.segment.bytes = 104857600
        password.encoder.cipher.algorithm = AES/CBC/PKCS5Padding
        password.encoder.iterations = 4096
        password.encoder.key.length = 128
        password.encoder.keyfactory.algorithm = null
        password.encoder.old.secret = null
        password.encoder.secret = null
        port = 9092
        principal.builder.class = null
        producer.purgatory.purge.interval.requests = 1000
        queued.max.request.bytes = -1
        queued.max.requests = 500
        quota.consumer.default = 9223372036854775807
        quota.producer.default = 9223372036854775807
        quota.window.num = 11
        quota.window.size.seconds = 1
        replica.fetch.backoff.ms = 1000
        replica.fetch.max.bytes = 1048576
        replica.fetch.min.bytes = 1
        replica.fetch.response.max.bytes = 10485760
        replica.fetch.wait.max.ms = 500
        replica.high.watermark.checkpoint.interval.ms = 5000
        replica.lag.time.max.ms = 30000
        replica.selector.class = null
        replica.socket.receive.buffer.bytes = 65536
        replica.socket.timeout.ms = 30000
        replication.quota.window.num = 11
        replication.quota.window.size.seconds = 1
        request.timeout.ms = 30000
        reserved.broker.max.id = 1000
        sasl.client.callback.handler.class = null
        sasl.enabled.mechanisms = [PLAIN, SCRAM-SHA-256, SCRAM-SHA-512]
        sasl.jaas.config = null
        sasl.kerberos.kinit.cmd = /usr/bin/kinit
        sasl.kerberos.min.time.before.relogin = 60000
        sasl.kerberos.principal.to.local.rules = [DEFAULT]
        sasl.kerberos.service.name = null
        sasl.kerberos.ticket.renew.jitter = 0.05
        sasl.kerberos.ticket.renew.window.factor = 0.8
        sasl.login.callback.handler.class = null
        sasl.login.class = null
        sasl.login.refresh.buffer.seconds = 300
        sasl.login.refresh.min.period.seconds = 60
        sasl.login.refresh.window.factor = 0.8
        sasl.login.refresh.window.jitter = 0.05
        sasl.mechanism.inter.broker.protocol =
        sasl.server.callback.handler.class = null
        security.inter.broker.protocol = PLAINTEXT
        security.providers = null
        socket.connection.setup.timeout.max.ms = 127000
        socket.connection.setup.timeout.ms = 10000
        socket.receive.buffer.bytes = 102400
        socket.request.max.bytes = 104857600
        socket.send.buffer.bytes = 102400
        ssl.cipher.suites = []
        ssl.client.auth = none
        ssl.enabled.protocols = [TLSv1.2, TLSv1.3]
        ssl.endpoint.identification.algorithm = https
        ssl.engine.factory.class = null
        ssl.key.password = null
        ssl.keymanager.algorithm = SunX509
        ssl.keystore.certificate.chain = null
        ssl.keystore.key = null
        ssl.keystore.location = null
        ssl.keystore.password = null
        ssl.keystore.type = JKS
        ssl.principal.mapping.rules = DEFAULT
        ssl.protocol = TLSv1.3
        ssl.provider = null
        ssl.secure.random.implementation = null
        ssl.trustmanager.algorithm = PKIX
        ssl.truststore.certificates = null
        ssl.truststore.location = null
        ssl.truststore.password = null
        ssl.truststore.type = JKS
        transaction.abort.timed.out.transaction.cleanup.interval.ms = 10000
        transaction.max.timeout.ms = 900000
        transaction.remove.expired.transaction.cleanup.interval.ms = 3600000
        transaction.state.log.load.buffer.size = 5242880
        transaction.state.log.min.isr = 1
        transaction.state.log.num.partitions = 50
        transaction.state.log.replication.factor = 1
        transaction.state.log.segment.bytes = 104857600
        transactional.id.expiration.ms = 604800000
        unclean.leader.election.enable = false
        zookeeper.clientCnxnSocket = null
        zookeeper.connect = kafka-demo-zookeeper
        zookeeper.connection.timeout.ms = 6000
        zookeeper.max.in.flight.requests = 10
        zookeeper.session.timeout.ms = 18000
        zookeeper.set.acl = false
        zookeeper.ssl.cipher.suites = null
        zookeeper.ssl.client.enable = false
        zookeeper.ssl.crl.enable = false
        zookeeper.ssl.enabled.protocols = null
        zookeeper.ssl.endpoint.identification.algorithm = HTTPS
        zookeeper.ssl.keystore.location = null
        zookeeper.ssl.keystore.password = null
        zookeeper.ssl.keystore.type = null
        zookeeper.ssl.ocsp.enable = false
        zookeeper.ssl.protocol = TLSv1.2
        zookeeper.ssl.truststore.location = null
        zookeeper.ssl.truststore.password = null
        zookeeper.ssl.truststore.type = null
        zookeeper.sync.time.ms = 2000
 (kafka.server.KafkaConfig)
[2022-05-12 03:57:24,425] INFO [ThrottledChannelReaper-Fetch]: Starting (kafka.server.ClientQuotaManager$ThrottledChannelReaper)
[2022-05-12 03:57:24,425] INFO [ThrottledChannelReaper-Produce]: Starting (kafka.server.ClientQuotaManager$ThrottledChannelReaper)
[2022-05-12 03:57:24,426] INFO [ThrottledChannelReaper-Request]: Starting (kafka.server.ClientQuotaManager$ThrottledChannelReaper)
[2022-05-12 03:57:24,428] INFO [ThrottledChannelReaper-ControllerMutation]: Starting (kafka.server.ClientQuotaManager$ThrottledChannelReaper)
[2022-05-12 03:57:24,455] INFO Loading logs from log dirs ArrayBuffer(/bitnami/kafka/data) (kafka.log.LogManager)
[2022-05-12 03:57:24,457] INFO Attempting recovery for all logs in /bitnami/kafka/data since no clean shutdown file was found (kafka.log.LogManager)
[2022-05-12 03:57:24,468] INFO Loaded 0 logs in 14ms. (kafka.log.LogManager)
[2022-05-12 03:57:24,481] INFO Starting log cleanup with a period of 300000 ms. (kafka.log.LogManager)
[2022-05-12 03:57:24,483] INFO Starting log flusher with a default period of 9223372036854775807 ms. (kafka.log.LogManager)
[2022-05-12 03:57:24,942] INFO Created ConnectionAcceptRate sensor, quotaLimit=2147483647 (kafka.network.ConnectionQuotas)
[2022-05-12 03:57:24,945] INFO Created ConnectionAcceptRate-INTERNAL sensor, quotaLimit=2147483647 (kafka.network.ConnectionQuotas)
[2022-05-12 03:57:24,949] INFO Updated INTERNAL max connection creation rate to 2147483647 (kafka.network.ConnectionQuotas)
[2022-05-12 03:57:24,952] INFO Awaiting socket connections on 0.0.0.0:9093. (kafka.network.Acceptor)
[2022-05-12 03:57:24,979] INFO [SocketServer brokerId=0] Created data-plane acceptor and processors for endpoint : ListenerName(INTERNAL) (kafka.network.SocketServer)
[2022-05-12 03:57:24,979] INFO Created ConnectionAcceptRate-CLIENT sensor, quotaLimit=2147483647 (kafka.network.ConnectionQuotas)
[2022-05-12 03:57:24,979] INFO Updated CLIENT max connection creation rate to 2147483647 (kafka.network.ConnectionQuotas)
[2022-05-12 03:57:24,980] INFO Awaiting socket connections on 0.0.0.0:9092. (kafka.network.Acceptor)
[2022-05-12 03:57:24,987] INFO [SocketServer brokerId=0] Created data-plane acceptor and processors for endpoint : ListenerName(CLIENT) (kafka.network.SocketServer)
[2022-05-12 03:57:25,016] INFO [ExpirationReaper-0-Produce]: Starting (kafka.server.DelayedOperationPurgatory$ExpiredOperationReaper)
[2022-05-12 03:57:25,017] INFO [ExpirationReaper-0-Fetch]: Starting (kafka.server.DelayedOperationPurgatory$ExpiredOperationReaper)
[2022-05-12 03:57:25,018] INFO [ExpirationReaper-0-DeleteRecords]: Starting (kafka.server.DelayedOperationPurgatory$ExpiredOperationReaper)
[2022-05-12 03:57:25,018] INFO [ExpirationReaper-0-ElectLeader]: Starting (kafka.server.DelayedOperationPurgatory$ExpiredOperationReaper)
[2022-05-12 03:57:25,032] INFO [LogDirFailureHandler]: Starting (kafka.server.ReplicaManager$LogDirFailureHandler)
[2022-05-12 03:57:25,033] INFO [broker-0-to-controller-send-thread]: Starting (kafka.server.BrokerToControllerRequestThread)
[2022-05-12 03:57:25,054] INFO Creating /brokers/ids/0 (is it secure? false) (kafka.zk.KafkaZkClient)
[2022-05-12 03:57:25,074] INFO Stat of the created znode at /brokers/ids/0 is: 24,24,1652327845065,1652327845065,1,0,0,72352470744498176,394,0,24
 (kafka.zk.KafkaZkClient)
[2022-05-12 03:57:25,075] INFO Registered broker 0 at path /brokers/ids/0 with addresses: INTERNAL://kafka-demo-0.kafka-demo-headless.default.svc.cluster.local:9093,CLIENT://kafka-demo-0.kafka-demo-headless.default.svc.cluster.local:9092, czxid (broker epoch): 24 (kafka.zk.KafkaZkClient)
[2022-05-12 03:57:25,134] INFO [ExpirationReaper-0-topic]: Starting (kafka.server.DelayedOperationPurgatory$ExpiredOperationReaper)
[2022-05-12 03:57:25,138] INFO [ExpirationReaper-0-Heartbeat]: Starting (kafka.server.DelayedOperationPurgatory$ExpiredOperationReaper)
[2022-05-12 03:57:25,139] INFO [ExpirationReaper-0-Rebalance]: Starting (kafka.server.DelayedOperationPurgatory$ExpiredOperationReaper)
[2022-05-12 03:57:25,142] INFO Successfully created /controller_epoch with initial epoch 0 (kafka.zk.KafkaZkClient)
[2022-05-12 03:57:25,167] INFO Feature ZK node created at path: /feature (kafka.server.FinalizedFeatureChangeListener)
[2022-05-12 03:57:25,172] INFO [GroupCoordinator 0]: Starting up. (kafka.coordinator.group.GroupCoordinator)
[2022-05-12 03:57:25,174] INFO [GroupCoordinator 0]: Startup complete. (kafka.coordinator.group.GroupCoordinator)
[2022-05-12 03:57:25,195] INFO [ProducerId Manager 0]: Acquired new producerId block (brokerId:0,blockStartProducerId:0,blockEndProducerId:999) by writing to Zk with path version 1 (kafka.coordinator.transaction.ProducerIdManager)
[2022-05-12 03:57:25,209] INFO [TransactionCoordinator id=0] Starting up. (kafka.coordinator.transaction.TransactionCoordinator)
[2022-05-12 03:57:25,216] INFO [Transaction Marker Channel Manager 0]: Starting (kafka.coordinator.transaction.TransactionMarkerChannelManager)
[2022-05-12 03:57:25,216] INFO [TransactionCoordinator id=0] Startup complete. (kafka.coordinator.transaction.TransactionCoordinator)
[2022-05-12 03:57:25,227] INFO Updated cache from existing <empty> to latest FinalizedFeaturesAndEpoch(features=Features{}, epoch=0). (kafka.server.FinalizedFeatureCache)
[2022-05-12 03:57:25,241] INFO [ExpirationReaper-0-AlterAcls]: Starting (kafka.server.DelayedOperationPurgatory$ExpiredOperationReaper)
[2022-05-12 03:57:25,269] INFO [/config/changes-event-process-thread]: Starting (kafka.common.ZkNodeChangeNotificationListener$ChangeEventProcessThread)
[2022-05-12 03:57:25,278] INFO [SocketServer brokerId=0] Starting socket server acceptors and processors (kafka.network.SocketServer)
[2022-05-12 03:57:25,287] INFO [SocketServer brokerId=0] Started data-plane acceptor and processor(s) for endpoint : ListenerName(INTERNAL) (kafka.network.SocketServer)
[2022-05-12 03:57:25,288] INFO [SocketServer brokerId=0] Started data-plane acceptor and processor(s) for endpoint : ListenerName(CLIENT) (kafka.network.SocketServer)
[2022-05-12 03:57:25,288] INFO [SocketServer brokerId=0] Started socket server acceptors and processors (kafka.network.SocketServer)
[2022-05-12 03:57:25,292] INFO Kafka version: 2.7.0 (org.apache.kafka.common.utils.AppInfoParser)
[2022-05-12 03:57:25,293] INFO Kafka commitId: 448719dc99a19793 (org.apache.kafka.common.utils.AppInfoParser)
[2022-05-12 03:57:25,293] INFO Kafka startTimeMs: 1652327845289 (org.apache.kafka.common.utils.AppInfoParser)
[2022-05-12 03:57:25,294] INFO [KafkaServer id=0] started (kafka.server.KafkaServer)
[2022-05-12 03:57:25,440] INFO [broker-0-to-controller-send-thread]: Recorded new controller, from now on will use broker 0 (kafka.server.BrokerToControllerRequestThread)

> zookeepr 로그보기

더보기

zookeeper 03:57:10.89
zookeeper 03:57:10.89 Welcome to the Bitnami zookeeper container
zookeeper 03:57:10.90 Subscribe to project updates by watching https://github.com/bitnami/bitnami-docker-zookeeper
zookeeper 03:57:10.90 Submit issues and feature requests at https://github.com/bitnami/bitnami-docker-zookeeper/issues
zookeeper 03:57:10.90
zookeeper 03:57:10.90 INFO  ==> ** Starting ZooKeeper setup **
zookeeper 03:57:10.91 WARN  ==> You have set the environment variable ALLOW_ANONYMOUS_LOGIN=yes. For safety reasons, do not use this flag in a production environment.
zookeeper 03:57:10.92 INFO  ==> Initializing ZooKeeper...
zookeeper 03:57:10.93 INFO  ==> No injected configuration file found, creating default config files...
zookeeper 03:57:10.97 INFO  ==> No additional servers were specified. ZooKeeper will run in standalone mode...
zookeeper 03:57:10.97 INFO  ==> Deploying ZooKeeper from scratch...

zookeeper 03:57:10.98 INFO  ==> ** ZooKeeper setup finished! **
zookeeper 03:57:10.99 INFO  ==> ** Starting ZooKeeper **
/opt/bitnami/java/bin/java
ZooKeeper JMX enabled by default
Using config: /opt/bitnami/zookeeper/bin/../conf/zoo.cfg


[설치 이슈]

1. kube config warning
WARNING: Kubernetes configuration file is group-readable. This is insecure. Location: /home/gajy/.kube/config
WARNING: Kubernetes configuration file is world-readable. This is insecure. Location: /home/gajy/.kube/config
원인: config 파일이 group-readable, world-readable 권한을 포함하고 있다.
해결: permission 제거

$ chmod o-r ~/.kube/config$ chmod g-r ~/.kube/config

2. mkdir: cannot create directory '/bitnami/zookeeper/data': Permission denied

원인: 디렉터리 권한 문제
해결: 해결: 747 권한 부여

$ chmod 747 zoo
728x90

'환경' 카테고리의 다른 글

도커 볼륨  (0) 2022.06.08
도커 네트워크 구조  (0) 2022.06.08
git commit 기록 수정 / 삭제  (0) 2022.04.13
Jenkins + Spinnaker 기반 웹 애플리케이션 배포  (0) 2022.04.06
Spinnaker 설치 및 설정 (offline)  (0) 2022.04.06
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31