kafka各种环境安装(window,linux,docker,k8s),包含KRaft模式

一、前言(Kafka 集群中的节点类型)

1、本次实验,采用kafka版本为 3.4.0

2、我们首先需要了解一下,一个 Kafka 集群是由下列几种类型的节点构成的,它们充当着不同的作用:

  • Broker节点:即代理节点,是 Kafka 中的工作节点,充当消息队列的角色,负责储存和处理消息,每个 Broker 都是一个独立的 Kafka 服务器,可以在不同的机器上运行,除此之外 Broker 还负责分区(partition)的管理,将主题(topic)划分为多个分区,并分布在集群的不同 Broker 上

  • Controller节点:即控制器节点,是集群中的特殊节点,负责储存和管理整个集群元数据状态,它能够监控整个集群中的 Broker,在需要时还能够进行平衡操作

  • 混合节点:即同时担任 Broker 和 Controller 节点角色的节点

3、建议强烈阅读 linux下的安装,里面包含了很多参数的定义说明,理解之后,会方便后续的搭建。

二、重要配置介绍

无论是那种模式的集群,我们都涉及到了许多配置项,大家通过 linux下的安装搭建示例 也能够了解到每个配置项的意义,这里就专门来着重介绍一下,Kafka 中一些重要的配置项。

2.1、listeners

这个配置项用于指定 Kafka 服务器监听客户端连接的地址和端口,当 Kafka 服务器启动时,它将监听listeners配置项中指定的地址和端口,等待客户端的连接请求。

一般情况下这个配置以PLAINTEXT://或者CONTROLLER://开头,意义如下:

  • 若这个节点是 Broker 节点,则以PLAINTEXT://开头
  • 若这个节点是 Controller 节点,则以CONTROLLER://开头
  • 若这个节点是混合节点,则需要同时配置两者开头的地址

这个配置项通常不需要修改,下面给出几个配置示例:

  • PLAINTEXT://:9092 本节点作为 Broker 节点,监听本机所有可用网卡9092端口(使用9092端口作为客户端通信端口),也是默认配置
  • PLAINTEXT://127.0.0.1:9092 本节点作为 Broker 节点,监听本地的9092端口,这样仅接受来自本地的请求
  • CONTROLLER://:10000 本节点作为 Controller 节点,监听本机所有可用网卡10000端口(使用10000端口作为控制器端口
  • PLAINTEXT://:9092,CONTROLLER://:9093 本节点作为混合节点,监听本机所有可用网卡90929093端口,其中9092作为客户端通信端口9093作为控制器端口

2.2、advertise.listeners

这个配置容易和listeners混淆,事实上它们是有较大的区别的。

该配置项指定 Kafka 服务器广播给客户端的地址和端口,通常配置为 Kafka 所在服务器的外网地址

当客户端(生产者或消费者)尝试连接到 Kafka 服务器时,它首先会获取 Kafka 服务器广播的地址和端口,也就是advertise.listeners配置所指定的地址和端口,然后才会使用advertise.listeners配置所指定的地址和端口来建立与 Kafka 服务器的连接。

相信这时大家会有个疑问:既然客户端要连接 Kafka(例如 Spring Boot 集成 Kafka 客户端),那一定是已经知道了 Kafka 对外的地址端口了,那为什么连接的时候还需要获取一下广播的地址端口再进行连接呢?这样是不是有一些多此一举?

事实上,Kafka 设计这个配置是为了解决下面较为复杂的网络场景:

  • 多网络接口的主机部署:在一个多网络接口的主机部署 Kafka 时,Kafka 服务器可能会监听多个地址和端口,这些地址和端口可能与客户端实际访问的地址和端口不同,advertise.listeners允许服务器指定一个公开的、可访问的地址和端口,以便客户端能够正确连接
  • NAT / 代理环境:在某些网络环境下,Kafka 服务器位于一个私有网络中,客户端位于一个公共网络中,两者之间可能存在网络地址转换(NAT)或代理,在这种情况下,Kafka 服务器的内部地址和端口对客户端来说是不可访问的。通过使用advertise.listeners,Kafka 服务器可以将一个公共地址和端口广播给客户端,使得客户端能够通过公共网络连接到服务器
  • 容器环境:例如你把 Kafka 放在 Docker 容器中运行,按照默认配置,Kafka 服务端只会监听容器网络的9092端口,我们知道外部不能直接访问容器的网络,而是需要使用网络映射,假设你把 Kafka 容器的9092端口映射至了宿主机9095端口,也就是说外部需要通过9095端口访问到 Kafka 容器的9092端口,那么你就配置advertise.listenersPLAINTEXT://服务器外网地址:9095,客户端就可以正确访问容器中的 Kafka 了

总之,这个配置设置为 Kafka 服务器所在的外网地址即可!例如PLAINTEXT://69.54.112.239:9092

2.3、process.roles

这是 KRaft 模式下专门的配置,用于配置这个节点的类型,可以配置为下列值:

  • broker 表示这个节点是 Broker 节点,充当消息队列的角色
  • controller 表示这个节点是 Controller 节点,充当元数据存放和管理的角色
  • broker,controller 表示这个节点同时担任 Broker 和 Controller 的角色,也称作混合节点

如果没有配置这个选项,则 Kafka 会以 Zookeeper 模式运行。

这里有下列注意事项:

  • 如果设定节点为controller
    • 不能配置advertised.listeners,可以将其注释掉或者删掉
    • listeners需要配置为CONTROLLER://开头,建议配置为CONTROLLER://:9093
  • 如果设定节点为broker
    • 则需要配置advertised.listeners为服务器外网地址和端口,这和 Zookeeper 模式中相同
    • listeners需要配置为PLAINTEXT://开头,建议配置为PLAINTEXT://:9092
  • 如果设定节点为混合节点:
    • 同样需要配置advertised.listeners为服务器外网地址和端口
    • listeners需要同时配置CONTROLLER://PLAINTEXT://,建议配置为PLAINTEXT://:9092,CONTROLLER://:9093

在开发环境或者小规模集群,可以全部使用混合节点,如果是生产环境就建议设定好每个节点的类型了!并且通常需要先启动 Controller 节点再启动 Broker 节点。

事实上,我们发现 Kafka 的 KRaft 配置目录config/kraft下有三个配置文件,其中server.properties是混合节点的配置模板,而broker.propertiescontroller.properties分别是 Broker 节点和 Controller 节点的配置模板,大家如果要设定节点类型,可以直接使用对应的配置文件,将对应配置文件需要修改的部分修改一下,然后将上述格式化数据目录命令和启动命令中的配置文件路径改变一下即可,这样可以省略我们设定process.roleslisteners或者控制器节点删除advertise.listeners配置的操作。

2.4、 controller.quorum.voters

该配置项用于配置集群中 Controller 节点选举过程中的投票者,集群中所有的 Controller 节点都需要被罗列在这个配置项中,其配置格式为id1@host1:port1,id2@host2:port2,id3@host3:port3...

有的同学可能认为这里需要把集群中所有节点都写进去,事实上这是错误的,这里只需要写所有的 Controller 节点和混合节点id、地址和端口即可,这个配置中配置的端口当然是控制器端口

下述集群搭建的例子中,由于所有的节点都是混合节点,因此就全部写在其中了!如果我们手动设定每个节点的类型,例如:

节点名 节点id 地址 服务器通信端口 控制器端口 节点类型
Kafka 节点 1 1 kafka1 / 9093 Controller
Kafka 节点 2 2 kafka2 9092 / Broker
Kafka 节点 3 3 kafka3 9092 / Broker

那么所有节点的controller.quorum.voters都需要配置为1@kafka1:9093

事实上,所有的节点都是通过这个配置中的节点列表,来得知所有的控制器节点信息(以获取集群元数据)并得到投票候选者的,因此集群中所有节点,不论是 Broker 还是 Controller,还是混合节点,都需要配置这一项。

2.5、 其它配置

除了上述我们涉及到的一些配置之外,还有下列配置大家可以进行修改:

  • socket.send.buffer.bytes 每次发送的数据包的最大大小(单位:字节)
  • socket.receive.buffer.bytes 每次接收的数据包的最大大小(单位:字节)
  • socket.request.max.bytes 接收的最大请求大小(单位:字节)
  • num.partitions 每个Topic的默认分区数

上述无论是哪个模式的集群,都可以在配置文件中找到这些配置,如果找不到可手动加入。除了修改配置文件之外,我们还可以在启动 Kafka 的命令中指定配置和值,例如:

bin/kafka-server-start.sh config/server.properties --override zookeeper.connect=127.0.0.1:2181 --override broker.id=1

上述命令在启动时通过命令指定了zookeeper.connect配置值为127.0.0.1:2181,以及broker.id1,可见在后面追加--override 配置名=值即可,注意命令行中指定的配置值会覆盖掉配置文件中的配置值!

三、linux 安装

1、下载对应版本的linux 压缩包

2、Linux环境需要安装jdk1.8+

可以参考 linux系统安装jdk8详细教程

在这里插入图片描述

3.1、Kafka with ZooKeeper 单节点

1、解压

tar -xzf kafka_2.13-3.4.0.tgz
cd kafka_2.13-3.4.0

在这里插入图片描述

2、启动zookeeper 服务

# Start the ZooKeeper service
$ bin/zookeeper-server-start.sh config/zookeeper.properties

3、启动 kafka 服务

# Start the Kafka broker service
$ bin/kafka-server-start.sh config/server.properties

3.2、Kafka with KRaft 单节点

1、解压

tar -xzf kafka_2.13-3.4.0.tgz
cd kafka_2.13-3.4.0

在这里插入图片描述

2、生成集群 UUID

KAFKA_CLUSTER_ID="$(bin/kafka-storage.sh random-uuid)"

3、格式化日志目录,使用上面的 KAFKA_CLUSTER_ID 参数

注意这里使用的是 config/kraft/server.properties,你可以点进去看下配置,可以看到,当前的这个配置的角色是 broker,controller了,就不再需要zookeeper了

在这里插入图片描述

bin/kafka-storage.sh format -t $KAFKA_CLUSTER_ID -c config/kraft/server.properties

3、启动kafka 服务

bin/kafka-server-start.sh config/kraft/server.properties

在这里插入图片描述

3.3、Kafka with ZooKeeper 集群

这是一种比较简单,相对 “传统” 的搭建方式了!在这种模式下,每个 Kafka 节点都是依赖于 Zookeeper 的,使用 Zookeeper 存储集群中所有节点的元数据。

只要所有的 Kafka 节点连接到同一个 Zookeeper 上面(或者同一个 Zookeeper 集群),这些 Kafka 节点就构成了一个集群。所以说就算是只有一个 Kafka 节点在运行,这一个节点也可以称作一个集群。

在 Zookeeper 模式集群中,Zookeeper 节点(或者集群)就充当了 Controller 的角色,而所有的 Kafka 节点就充当着 Broker 的角色。

下面就来介绍一下搭建过程,这里我在4台Linux虚拟机上分别运行Zookeeper和Kafka来模拟一个集群,一共一个Zookeeper节点和三个Kafka节点构成,如下:

节点名 地址和端口
Zookeeper节点 zookeeper:2181
Kafka节点1 kafka1:9092
Kafka节点2 kafka2:9092
Kafka节点3 kafka3:9092

上述地址例如kafka1等等,是通过修改虚拟机的主机名(hostname)实现的,这样虚拟机之间可以直接通过这些主机名相互访问,这个主机名我们就可以视作实际在服务器上面搭建时,服务器的外网地址或者域名,这里就不再赘述如何修改虚拟机的主机名了,需要保证上述所有虚拟机在一个虚拟机网段中并且能够互相ping通,即上述所有虚拟机需要两两之间可以通过网络互相访问。

运行Kafka和Zookeeper都需要Java 8及其以上运行环境,大家要首先在虚拟机中安装并配置好。

3.3.1、搭建Zookeeper

首先我们要运行起一个Zookeeper节点,这里就不再赘述Zookeeper节点如何搭建了!搭建可以查看官方文档,或者使用Docker的方式搭建。

搭建完成并运行Zookeeper之后,我们会把所有的Kafka节点都配置到这一个Zookeeper节点上。

3.3.2、 配置并运行所有Kafka节点

首先去 Kafka 官网下载最新版并解压,然后将解压出来的 Kafka 分别复制到三台虚拟机中

然后修改每台虚拟机的 Kafka 目录中的配置文件,配置文件位于解压的 Kafka 文件夹中的config/server.properties,使用文本编辑器打开,并找到下列配置项进行配置:

  • broker.id 表示每个节点的id每个节点需要设置为不一样的整数,我这里分别设置为123

  • zookeeper.connect 表示要使用的 Zookeeper 的地址和端口,我这里都配置为zookeeper:2181

  • advertised.listeners 表示这个 Kafka 节点的外网地址,这里分别配置为PLAINTEXT://kafka1:9092PLAINTEXT://kafka2:9092PLAINTEXT://kafka3:9092,需要注意的是这个配置项必须要配置为其所在服务器的外网地址,如果说你是在一台服务器上面配置 Kafka 并要通过外网访问,这个配置就需要配置为服务器外网地址(域名),并且都以PLAINTEXT://开头

注意上述advertised.listeners这个配置项默认情况下是被注释掉了的,大家需要去仔细找一下并去掉注释(开头的#)然后再进行配置。

三台虚拟机配置完成后,分别使用终端进入到 Kafka 目录下并启动,执行下列命令:

bin/kafka-server-start.sh config/server.properties

在上述三台虚拟机上面都通过这个命令启动 Kafka,到此,整个集群就搭建完成了!大家需要保证上述三台虚拟机中的终端不被关闭。

3.4、Kafka with KRaft 集群

在上述传统方案中,Kafka 需要依赖 Zookeeper 完成元数据存放和共享,这样也就暴露出了一些问题:

  • 搭建 Kafka 集群时还需要额外搭建 Zookeeper,增加了运维成本
  • Zookeeper 是强一致性的组件(符合 CP 理论),如果集群中数据发生变化,那么必须要等到其它节点都同步,至少超过一半同步完成,这样节点数多性能差

那么 KRaft 模式是新版本 Kafka 中推出的集群模式,这种模式下就完全不需要 Zookeeper 了!只需要数个 Kafka 节点就可以直接构成集群,在这时集群中的 Kafka 节点既有可能是 Controller 节点也可能是 Broker 节点,在这个模式中,我们不仅可以手动配置某个节点的角色(是 Controller 还是 Broker),还可以使其同时担任 Broker 和 Controller 角色(混合节点)。

在 KRaft 模式中,集群的节点会通过投票选举的方式,选择出一个主要的 Controller 节点,这个节点也称作领导者,它将负责维护整个集群的元数据和状态信息,那么其它的 Controller 节点或者混合节点就称之为追随者,它们会从领导者同步集群元数据和状态信息。如果领导者宕机了,所有的节点会重新投票选举一个新的领导者。

在选举过程中,所有的节点都会参与投票过程,而候选节点只会是 Controller 节点或者混合节点(即 Broker 节点不会被选举为领导者)。

需要注意的是,在默认情况下 Kafka 集群中的 Broker 节点和 Controller 节点通常会监听不同的端口:

  • Broker 节点是 Kafka 集群中的数据节点(消息队列),它们负责接收客户端的消息和传递消息给客户端,默认情况下,每个 Broker 节点会监听9092端口,该端口用于与客户端进行通信,客户端可以将消息发送到这个端口,或者从这个端口接收消息,这个端口可以称作客户端通信端口
  • Controller 节点是 Kafka 集群中的控制器节点,负责管理集群的状态和元数据,Controller 节点监听的端口通常是9093,该端口用于集群中其他节点获取元数据或在混合节点选举新的 Controller 时进行通信,通过该端口,其他节点可以与 Controller 节点交互,获取集群的元数据信息或参与控制器的选举过程,这个端口可以称作控制器端口
  • 混合节点(即同时担任 Broker 和 Controller 角色的节点)中,这两个端口都会被使用,默认情况下混合节点将监听9092端口接收和传递消息给客户端,并监听9093端口用于与其他节点进行元数据交换和控制器选举通信,可见混合节点会同时使用两个端口分别作为客户端通信端口控制器端口

所以需要根据实际情况配置网络设置和防火墙规则,以确保 Kafka 集群中的节点能够在正确的端口上进行通信。上述提到的两种端口也是可以修改的,当然不建议修改。

同样地,就算是你只是搭建了一个 Kafka 节点,这一个节点也仍然被视为一个 Kafka 集群,并且 KRaft 模式下如果只需要建立一个节点,那么这个节点必须是混合节点。

下面同样是开启三台虚拟机,搭建三个Kafka节点构成的KRaft模式集群如下:

节点名 地址 节点类型 客户端通信端口 控制器端口
Kafka节点1 kafka1 混合节点 9092 9093
Kafka节点2 kafka2 混合节点 9092 9093
Kafka节点3 kafka3 混合节点 9092 9093

这里就不再赘述下载Kafka的过程了!

3.4.1、修改配置文件

在 KRaft 模式下,配置文件位于 Kafka 目录中的config/kraft/server.properties,使用文本编辑器打开并找到下列配置以修改:

  • node.id 表示这个节点的id,一个集群中每个节点id不能重复,需要是不小于1的整数,这里三台虚拟机的配置分别为123(类似上述 Zookeeper 的broker.id配置)
  • controller.quorum.voters 设定投票者列表,即需要配置所有的 Controller 节点id及其地址端口,配置格式为节点1的id@节点1地址:节点1端口,节点2的id@节点2地址:节点2端口,节点3的id@节点3地址:节点3端口...,这里的端口需要是控制器端口,默认都是9093,上面也提到过了,默认不需要修改,我这里三台虚拟机的都配置为1@kafka1:9093,2@kafka2:9093,3@kafka3:9093(实际在服务器上搭建时替换为服务器的外网地址或者域名)
  • advertised.listeners 表示这个 Kafka 节点的外网地址,这里分别配置为PLAINTEXT://kafka1:9092PLAINTEXT://kafka2:9092PLAINTEXT://kafka3:9092(和上述 Zookeeper 模式中的一样,实际在服务器上搭建时替换为服务器的外网地址或者域名)

上述是必须要进行配置的,还有下面配置是可以选择性配置的:

  • process.roles 表示设定这个节点的类型,设定为broker表示设定这个节点为 Broker 节点,同样地设定controller表示设定为 Controller 节点,默认是broker,controller表示这个节点会自动切换节点类型,这里先保持默认不变,下面再来详细讨论

3.4.2、 生成集群 ID 并使用集群 ID 格式化数据目录

在 KRaft 模式下,一个集群需要设定一个id,我们可以使用自带的命令生成,先进入上述任意一台虚拟机并使用终端进入 Kafka 目录中,执行下列命令生成一个 UUID:

bin/kafka-storage.sh random-uuid

我们这里记录下这个 ID 以备用。

这个集群 ID 事实上是一个长度 16 位的字符串通过 Base64 编码后得来的,因此你也可以不使用上述命令,直接自定义一个 16 位长度的纯英文和数字组成的字符串,然后将这个字符串编码为 Base64 格式作为这个集群 ID 也可以。可以使用菜鸟工具中的在线 Base64 编码工具。

然后在上述三台虚拟机中,都使用终端进入 Kafka 目录后,执行下列命令:

bin/kafka-storage.sh format -t 生成的集群ID -c config/kraft/server.properties

这样,三个 Kafka 节点都使用了这一个 ID 完成了集群元数据配置,表示这三个 Kafka 节点构成一个集群。

3.4.3、启动 Kafka

同样地,在三台虚拟机中,都使用终端进入 Kafka 目录后,执行下列命令:

bin/kafka-server-start.sh config/kraft/server.properties

三台虚拟机全部启动后,这个集群才启动完毕。可见集群节点之间可以互相通信。

无论是在虚拟机还是服务器上,都要保证90929093端口开放,且所有虚拟机 / 服务器之间都能够两两互相访问(网络连通)!

四、window 安装

1、 下载安装包

  • 下载kafka 地址,其中官方版内置zk, kafka_2.12-3.4.0.tgz
  • 其中这个名称的意思是 kafka3.4.0 版本 ,所用语言 scala 版本为 2.12

    在这里插入图片描述

2、后续window的安装都是使用的是window目录下的命令,因为是window环境

4.1、Kafka with ZooKeeper 单节点

4.1.1、安装配置

1、解压刚刚下载的配置文件,解压后如下,其中 datakafka-logs 这两个文件是没有的

  • data目录是zookeeper的数据存储目录
  • kafka-logs目录是kafka的数据存储目录

在这里插入图片描述

2、修改配置:进入到config目录,

  • 修改service.properties里面log.dirs路径未 log.dirs=F:\kafka\installSurround\kafka3.4.0\kafka-logs,该目录是kafka的数据存储目录

在这里插入图片描述

  • 修改zookeeper.properties里面dataDir路径为 dataDir=F:\kafka\installSurround\kafka3.4.0\data,该目录是 zookeeper存储的kafka的数据目录

    在这里插入图片描述

3、server.properties说明

属性 说明
log.dirs 指定Broker需要使用的若干个文件目录路径,没有默认值,必须指定。在生产环境中一定要为log.dirs配置多个路径,如果条件允许,需要保证目录被挂载到不同的物理磁盘上。优势在于,提升读写性能,多块物理磁盘同时读写数据具有更高的吞吐量;能够实现故障转移(Failover),Kafka 1.1版本引入Failover功能,坏掉磁盘上的数据会自动地转移到其它正常的磁盘上,而且Broker还能正常工作,基于Failover机制,Kafka可以舍弃RAID方案。
zookeeper.connect CS格式参数,可以指定值为zk1:2181,zk2:2181,zk3:2181,不同Kafka集群可以指定:zk1:2181,zk3:2181/kafka1,chroot只需要写一次。
listeners 设置内网访问Kafka服务的监听器。
advertised.listeners 设置外网访问Kafka服务的监听器。
auto.create.topics.enable 是否允许自动创建Topic。
unclean.leader.election.enable 是否允许Unclean Leader 选举。
auto.leader.rebalance.enable 是否允许定期进行Leader选举,生产环境中建议设置成false。
log.retention.{hours minutes
log.retention.bytes 指定Broker为消息保存的总磁盘容量大小。message.max.bytes:控制Broker能够接收的最大消息大小。

4.1.2、启动

1、 启动脚本都在bin目录的window目录下,一定要先启动 zookeeper,再启动kafka

如果是linux,不使用window下的命令即可,使用对应的 xxxx.sh 即可

在这里插入图片描述

2、首先启动zookeeper

.\bin\windows\zookeeper-server-start.bat .\config\zookeeper.properties

在这里插入图片描述

3、在启动kafka

.\bin\windows\kafka-server-start.bat .\config\server.properties

在这里插入图片描述

4.1、Kafka with KRaft 单节点(存在问题,建议跳过)

4.1.1、安装配置

1、解压刚刚下载的配置文件,解压后如下,其中kafka-kraft-logs这个文件是没有的

  • kafka-kraft-logs 这个文件用于存储kafka的数据

    在这里插入图片描述

2、修改配置:进入到config\kraft目录,

  • 修改service.properties里面log.dirs路径未 log.dirs=F:\kafk\installSurroundkafka_2.12-3.4.0\kafka-kraft-logs,该目录是kafka的kraft模式下的数据存储目录

在这里插入图片描述

在这里插入图片描述

4.1.2、启动

1、 启动脚本都在bin目录的window目录下

如果是linux,不使用window下的命令即可,使用对应的 xxxx.sh 即可

在这里插入图片描述

2、生成集群id,并格式化存储目录

.\bin\windows\kafka-storage.bat random-uuid
.\bin\windows\kafka-storage.bat format -t xxx(换成你上面的那个命令的输出结果)-c .\config\kraft\server.properties

在这里插入图片描述

3、在执行完成上面的命令后,可以看到我们的数据存储目录,多两个文件,如下

在这里插入图片描述

3、启动后,回发现抱错,目前在网上了解到,window下,kafka的kraft模式还有点问题,暂无解决方案

.\bin\windows\kafka-server-start.bat  .\config\kraft\server.properties

在这里插入图片描述

五、docker 安装

5.1、前言说明

1、这里使用镜像 都使用 bitnami下的

我看网上很多都是使用的 wurstmeister 下的镜像,但是我发现他的镜像已经一年没有更新了,所以不选择它了

在这里插入图片描述

在这里插入图片描述

2、因为参数很多,为了方便,我们直接使用 docker-compose 来创建,这样后续更新的时候也比较的方便,直接修改对应的docker-compose.yml文件即可.

3、在docker hubbitnami/kafaka 总览页面已经给出了配置,如下

在这里插入图片描述

4、在启动kafka时的一些参数说明,这些参数都在 bitnami/kafkadocker-hub首页上面有的,挺重要的

属性 说明
KAFKA_CERTIFICATE_PASSWORD 证书的密码。没有默认值。
KAFKA_HEAP_OPTS Apache Kafka 的 Java 堆大小。默认值:-Xmx1024m -Xms1024m。
KAFKA_ZOOKEEPER_PROTOCOL Zookeeper 连接的身份验证协议。允许的协议:PLAINTEXT、SASL、SSL和SASL_SSL。默认值:纯文本。
KAFKA_ZOOKEEPER_USER 用于 SASL 身份验证的 Apache Kafka Zookeeper 用户。没有默认值。
KAFKA_ZOOKEEPER_PASSWORD 用于 SASL 身份验证的 Apache Kafka Zookeeper 用户密码。没有默认值。
KAFKA_ZOOKEEPER_TLS_KEYSTORE_PASSWORD Apache Kafka Zookeeper密钥库文件密码和密钥密码。没有默认值。
KAFKA_ZOOKEEPER_TLS_TRUSTSTORE_PASSWORD Apache Kafka Zookeeper 信任库文件密码。没有默认值。
KAFKA_ZOOKEEPER_TLS_VERIFY_HOSTNAME 验证 TLS 证书上的 Zookeeper 主机名。默认值:true。
KAFKA_ZOOKEEPER_TLS_TYPE 选择要使用的 TLS 证书格式。允许值:JKS,PEM. 默认值:JKS。
KAFKA_CFG_LISTENERS K afkalisteners配置覆盖。没有默认值。
KAFKA_CFG_ADVERTISED_LISTENERS Kafkaadvertised.listeners配置覆盖。没有默认值。
KAFKA_CFG_SASL_ENABLED_MECHANISMS 将 SASL 用于客户端、代理间或 Zookeeper 通信时允许的机制。允许的值:PLAIN、SCRAM-SHA-256或SCRAM-SHA-512这些值的逗号分隔组合。默认值:PLAIN、SCRAM-SHA-256、SCRAM-SHA-512。注意:KRaft <= 3.4 尚不支持 SCRAM 机制,因此此列表将自动缩减为仅PLAINSASL 机制。
KAFKA_TLS_CLIENT_AUTH 设置 的值ssl.client.auth。允许值:required,requested,none. 默认值:必填。
KAFKA_TLS_<uppercase_listener_name>_CLIENT_AUTHlistener.name..ssl.client.auth 设置用于通过 SASL 配置 mTLS的值。允许值:required,none.
KAFKA_TLS_TYPE 选择要使用的 TLS 证书格式。允许值:JKS,PEM. 默认值:JKS。
KAFKA_CLIENT_USERS 使用 SASL 进行客户端通信时将在 Zookeeper 中创建的用户。被逗号隔开。默认:用户
KAFKA_CLIENT_PASSWORDS 在 处指定的用户的密码KAFKA_CLIENT_USERS。被逗号隔开。默认值:bitnami
KAFKA_CFG_MAX_PARTITION_FETCH_BYTES 服务器将返回的每个分区的最大数据量。没有默认值。
KAFKA_CFG_MAX_REQUEST_SIZE 请求的最大大小(以字节为单位)。没有默认值。
KAFKA_CFG_SASL_MECHANISM_INTER_BROKER_PROTOCOL 用于代理间通信的 SASL 机制。没有默认值。注意:KRaft <= 3.4 尚不支持 SCRAM 机制,因此 KRaft 模式下唯一支持的 SASL 机制是PLAIN.
KAFKA_INTER_BROKER_USER pache Kafka 代理间通信用户。默认值:用户。
KAFKA_INTER_BROKER_PASSWORD Apache Kafka 代理间通信密码。默认值:bitnami。
KAFKA_CFG_SASL_MECHANISM_CONTROLLER_PROTOCOL 用于控制器通信的 SASL 机制。没有默认值。注意:KRaft <= 3.4 尚不支持 SCRAM 机制,因此 KRaft 模式下唯一支持的 SASL 机制是PLAIN.
KAFKA_CONTROLLER_USER Apache Kafka 控制器通信用户。默认值:controller_user。
KAFKA_CONTROLLER_PASSWORD Apache Kafka控制器通信密码。默认值:bitnami。
KAFKA_CFG_PROCESS_ROLES KRaft 模式下运行时的节点角色。没有默认值。
KAFKA_CFG_NODE_ID 唯一的节点id,在KRaft模式下运行时需要。没有默认值。
KAFKA_CFG_CONTROLLER_QUORUM_VOTERS 以逗号分隔的 {id}@{host}:{port} 条目列表中的控制器仲裁投票者集的 id/端点信息映射。没有默认值。
KAFKA_RAFT_CLUSTER_ID 使用Kafka Raft(KRaft)时的Kafka集群ID。没有默认值

5、如果你准备尝试实验多种情况下的部署,记得把之前的容器删除掉,并删除对应的挂载目录

# 删除容器
docker-compose -f xxxxx.yml down -v
# 删除宿主机挂载目录
rm -rf /data/docker/kafka

5.2、使用zookeeper单机安装

5.2.1、安装流程

1、先创建宿主机挂载目录,如下

授权当前的两个目录,为什么,后面会说 或者 授权(chown 777 zookeeper chown 777 kafka )

可以看看这篇文章 How to fix bitnami mariadb ‘mkdir: cannot create directory ‘/bitnami/mariadb’: Permission denied’

mkdir -p /data/docker/kafka/{kafka_data,zookeeper_data}
chown -R 1001:1001 /data/docker/kafka/kafka_data
chown -R 1001:1001 /data/docker/kafka/zookeeper_data

在这里插入图片描述

2、将上述配置文件copy 一下,最后修改如下,注意其中的宿主机ip

cd /opt/kafka/
vim kafka-single-with-zookeeper.yml

3、运行结果,其中zookeeper和kafka的镜像我已经提前下载好了,所以没有显示

docker-compose -f kafka-single-with-zookeeper.yml  up -d 

4、访问 web-ui,如下

http://192.168.173.129:8080/

5.2.2、可能会出现的问题

1、如果前面没有授权存储数据目录,会出现一个权限问题,日志如下

在这里插入图片描述


1、如果要解决上述的问题,需要为挂载目录./zookeeper授权,开发环境中推荐各位小伙伴为挂载目录授最高权限777;生产环境需要查看官网文档,结合实际生产环境进行授权

可以看看这篇文章 How to fix bitnami mariadb ‘mkdir: cannot create directory ‘/bitnami/mariadb’: Permission denied’

chmod 777 kafka
chmod 777 zookeeper

2、删除之前的数据,重新创建

docker-compose -f kafka-cluster.yml down -v
docker-compose -f kafka-cluster.yml up -d

在这里插入图片描述

5.3、使用zookeeper集群安装

暂略

5.4、使用 KRaft 模式单机安装

0、如果安装过上面的教程,记得先删除之前挂载的目录,不然容易和下面创建的目录冲突

1、先创建宿主机挂载目录,如下

授权当前的两个目录,为什么,后面会说 或者 授权(chown 777 kafka )

可以看看这篇文章 How to fix bitnami mariadb ‘mkdir: cannot create directory ‘/bitnami/mariadb’: Permission denied’

# kafka的挂载
mkdir -p /data/docker/kafka/kafka_data
chown -R 1001:1001 /data/docker/kafka/kafka_data

# kafka-ui 的挂载
mkdir -p /data/docker/kafka/kafka-ui
touch  /data/docker/kafka/kafka-ui/config.yml

在这里插入图片描述

2、将上述配置文件copy 一下,最后修改如下,注意替换其中的宿主机ip

cd /opt/kafka/
vim kafka-KRaft-single.yml
# 宿主机IP: 192.168.173.129
version: "3"

services:
  kafka:
    image: 'bitnami/kafka:3.4.0'
    container_name: kafka
    ports:
      - '9092:9092'
      - '9093:9093'
    restart: always
    environment:
      - KAFKA_CFG_PROCESS_ROLES=broker,controller         # 节点角色
      - KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER
      - KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093   # 定义kafka服务端socket监听端口(Docker内部的ip地址和端口)
      - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT  # 定义安全协议
      - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://192.168.173.129:9092  # 定义外网访问地址(宿主机ip地址和端口),填写宿主机IP地址
      - KAFKA_CFG_NODE_ID=1
      - KAFKA_HEAP_OPTS=-Xmx1024m -Xms1024m    # 堆内存
      - KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=1@kafka:9093  # 格式 NODE_ID1@host1:port1,NODE_ID2@host2:port2  这个地方值等价于  1@127.0.0.1:9093
      - ALLOW_PLAINTEXT_LISTENER=yes
    volumes:
      - "/data/docker/kafka/kafka_data:/bitnami"
    networks:
      kafka:
        aliases:
          - kafka
 
  kafka-ui:
    image: provectuslabs/kafka-ui:master
    container_name: kafka-ui
    ports:
      - "8080:8080"
    restart: always
    environment:
      - KAFKA_CLUSTERS_0_NAME=local  # 当前这个kafka 集群的名称,也可以后面我们登录ui页面手动点击按钮创建,如果有多个可以配置 KAFKA_CLUSTERS_1_NAME   KAFKA_CLUSTERS_2_NAME
      - KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS=kafka:9092  # local 这个集群的kafka地址, 如果有多个可以配置 KAFKA_CLUSTERS_1_BOOTSTRAPSERVERS  KAFKA_CLUSTERS_2_BOOTSTRAPSERVERS
      - DYNAMIC_CONFIG_ENABLED=true  # 默认 kafka-ui 是不允许在运行期间修改的,我们设置为true,可以方便我们在开发的时候,通过ui页面增加,删除,修改kafka的集群信息,比如创建topic,创建分区等等
      #- SERVER_SERVLET_CONTEXT_PATH: /kafkaui   # 访问ui的前缀,不写默认是 http://192.168.173.129:8080/ ,写了就是 http://192.168.173.129:8080/kafkaui  
      - AUTH_TYPE=LOGIN_FORM   # 启用表单登录授权
      - SPRING_SECURITY_USER_NAME=admin   # 启用表单登录授权的账号
      - SPRING_SECURITY_USER_PASSWORD=admin # 启用表单登录授权的密码
    depends_on:
      - kafka
    volumes:
      - /data/docker/kafka/kafka-ui/config.yml:/etc/kafkaui/dynamic_config.yaml  # Kafka-ui本质上是一个无状态的应用程序,因此,当你在运行时编辑配置时,它会将添加的配置存储在容器的文件系统中(在dynamic_config中)。yaml文件)。动态配置文件将在每次配置提交时被覆盖。注意,如果容器被重新创建,你编辑的(和上传的)文件将不存在,应用程序将只以静态配置启动。如果你想保留向导创建的配置,你必须将相同的文件挂载/复制到新创建的kafka-ui容器中(默认情况下,整个/etc/kafkaui/文件夹)。属性,指定动态配置文件将持久化的位置。
    networks:
      kafka:
        aliases:
          - kafka-ui

networks:
  kafka:
    driver: bridge

3、运行结果,其中zookeeper和kafka的镜像我已经提前下载好了,所以没有显示

docker-compose -f kafka-KRaft-single.yml up -d 

在这里插入图片描述

4、访问 web-ui,账号密码 admin admin ,这个配置大家可以访问 github 去官方网站查看文档,说的还是很详细的 github-kafka-ui

http://192.168.173.129:8080/

在这里插入图片描述

5、创建一个 topic 并发送两条数据测试一下,我是在window端链接,如下

bin\windows\kafka-topics.bat  --bootstrap-server 192.168.173.129:9092 --create --partitions 3 --replication-factor 1 --topic first201

在这里插入图片描述


在这里插入图片描述

6、查看消费端是否有数据(可以先启动)

bin\windows\kafka-console-consumer.bat  --bootstrap-server 192.168.173.129:9092 --topic first201

在这里插入图片描述

5.5、使用KRaft集群安装

0、如果安装过上面的教程,记得先删除之前挂载的目录,不然容易和下面创建的目录冲突

1、先创建宿主机挂载目录,如下

授权当前的两个目录,为什么,后面会说 或者 授权(chown 777 kafka* )

可以看看这篇文章 How to fix bitnami mariadb ‘mkdir: cannot create directory ‘/bitnami/mariadb’: Permission denied’

# kafka的挂载
mkdir -p /data/docker/kafka/{kafka1_data,kafka2_data,kafka3_data}
chown -R 1001:1001 /data/docker/kafka/kafka*

# kafka-ui 的挂载
mkdir -p /data/docker/kafka/kafka-ui
touch  /data/docker/kafka/kafka-ui/config.yml

在这里插入图片描述

2、将上述配置文件copy 一下,最后修改如下,注意替换其中的宿主机ip

cd /opt/kafka/
vim kafka-KRaft-cluster.yml

# 宿主机IP: 192.168.173.129
version: "3"

services:
  kafka1:
    image: 'bitnami/kafka:3.4.0'
    container_name: kafka1
    environment:
      - KAFKA_HEAP_OPTS=-Xmx1024m -Xms1024m   # 堆内存
      - KAFKA_CFG_PROCESS_ROLES=broker,controller  # 节点角色
      - KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER
      - KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,PLAINTEXT:PLAINTEXT  # 定义安全协议
      - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://192.168.173.129:19092  # 定义外网访问地址(宿主机ip地址和端口),填写宿主机IP地址
      - KAFKA_CFG_NODE_ID=1
      - KAFKA_KRAFT_CLUSTER_ID=jkUlhzQmQkic54LMxrB1oV
      - KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=1@kafka1:9093,2@kafka2:9093,3@kafka3:9093
      - ALLOW_PLAINTEXT_LISTENER=yes
    volumes:
      - "/data/docker/kafka/kafka1_data:/bitnami"
    ports:
      - "19092:9092"
    restart: always
    networks:
      kafka:
        aliases:
          - kafka1
          
  kafka2:
    image: 'bitnami/kafka:3.4.0'
    container_name: kafka2
    environment:
      - KAFKA_HEAP_OPTS=-Xmx1024m -Xms1024m
      - KAFKA_CFG_PROCESS_ROLES=broker,controller
      - KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER
      - KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093
      - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT
      - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://192.168.173.129:29092 
      - KAFKA_CFG_NODE_ID=2
      - KAFKA_KRAFT_CLUSTER_ID=jkUlhzQmQkic54LMxrB1oV
      - KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=1@kafka1:9093,3@kafka3:9093
      - ALLOW_PLAINTEXT_LISTENER=yes
    volumes:
      - "/data/docker/kafka/kafka2_data:/bitnami"
    ports:
      - "29092:9092"
    restart: always
    networks:
      kafka:
        aliases:
          - kafka2

  kafka3:
    image: 'bitnami/kafka:3.4.0'
    container_name: kafka3
    environment:
      - KAFKA_HEAP_OPTS=-Xmx1024m -Xms1024m
      - KAFKA_CFG_PROCESS_ROLES=broker,PLAINTEXT:PLAINTEXT
      - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://192.168.173.129:39092  
      - KAFKA_CFG_NODE_ID=3
      - KAFKA_KRAFT_CLUSTER_ID=jkUlhzQmQkic54LMxrB1oV
      - KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=1@kafka1:9093,3@kafka3:9093
      - ALLOW_PLAINTEXT_LISTENER=yes
    volumes:
      - "/data/docker/kafka/kafka3_data:/bitnami"
    ports:
      - "39092:9092"
    restart: always
    networks:
      kafka:
        aliases:
          - kafka3

  kafka-ui:
    image: provectuslabs/kafka-ui:master
    container_name: kafka-ui
    ports:
      - "8080:8080"
    restart: always
    environment:
      - KAFKA_CLUSTERS_0_NAME=local  # 当前这个kafka 集群的名称,也可以后面我们登录ui页面手动点击按钮创建,如果有多个可以配置 KAFKA_CLUSTERS_1_NAME   KAFKA_CLUSTERS_2_NAME  我们这里kafka1 kafka2 kafka3 是一个集群,我们写其中一个节点就行,因为上面配置kafka的时候告诉了其它节点的位置
      - KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS=kafka1:9092  # local 这个集群的kafka地址, 如果有多个可以配置 KAFKA_CLUSTERS_1_BOOTSTRAPSERVERS  KAFKA_CLUSTERS_2_BOOTSTRAPSERVERS
      - DYNAMIC_CONFIG_ENABLED=true  # 默认 kafka-ui 是不允许在运行期间修改的,我们设置为true,可以方便我们在开发的时候,通过ui页面增加,删除,修改kafka的集群信息,比如创建topic,创建分区等等
      #- SERVER_SERVLET_CONTEXT_PATH: /kafkaui   # 访问ui的前缀,不写默认是 http://192.168.173.129:8080/ ,写了就是 http://192.168.173.129:8080/kafkaui  
      - AUTH_TYPE=LOGIN_FORM   # 启用表单登录授权
      - SPRING_SECURITY_USER_NAME=admin   # 启用表单登录授权的账号
      - SPRING_SECURITY_USER_PASSWORD=admin # 启用表单登录授权的密码
    depends_on:
      - kafka1
      - kafka2
      - kafka3
    volumes:
      - /data/docker/kafka/kafka-ui/config.yml:/etc/kafkaui/dynamic_config.yaml  # Kafka-ui本质上是一个无状态的应用程序,因此,当你在运行时编辑配置时,它会将添加的配置存储在容器的文件系统中(在dynamic_config中)。yaml文件)。动态配置文件将在每次配置提交时被覆盖。注意,如果容器被重新创建,你编辑的(和上传的)文件将不存在,应用程序将只以静态配置启动。如果你想保留向导创建的配置,你必须将相同的文件挂载/复制到新创建的kafka-ui容器中(默认情况下,整个/etc/kafkaui/文件夹)。属性,指定动态配置文件将持久化的位置。
    networks:
      kafka:
        aliases:
          - kafka-ui

networks:
  kafka:
    driver: bridge


3、运行结果,其中zookeeper和kafka的镜像我已经提前下载好了,所以没有显示

docker-compose -f kafka-KRaft-cluster.yml up -d 

在这里插入图片描述

4、访问 web-ui,账号密码 admin admin 如下

http://192.168.173.129:8080/

在这里插入图片描述

5、创建一个 topic 我是在window端链接,如下

bin\windows\kafka-topics.bat  --bootstrap-server 192.168.173.129:19092 --create --partitions 3 --replication-factor 3 --topic first202

在这里插入图片描述

6、监听消息

bin\windows\kafka-console-consumer.bat  --bootstrap-server 192.168.173.129:19092 --topic first202

在这里插入图片描述

7、发送消息,查看消费端有无消息输出

bin\windows\kafka-console-producer.bat  --bootstrap-server 192.168.173.129:19092 --topic first202

在这里插入图片描述

在这里插入图片描述

六、k8s 安装

暂略

原文地址:https://blog.csdn.net/qq_38263083/article/details/132341449

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


文章浏览阅读942次。kube-controller-manager 和 kubelet 是异步工作的,这意味着延迟可能包括任何的网络延迟、apiserver 的延迟、etcd 延迟,一个节点上的负载引起的延迟等等。当 Kubernetes 中 Node 节点出现状态异常的情况下,节点上的 Pod 会被重新调度到其他节点上去,但是有的时候我们会发现节点 Down 掉以后,Pod 并不会立即触发重新调度,这实际上就是和 Kubelet 的状态更新机制密切相关的,Kubernetes 提供了一些参数配置来触发重新调度的时间。_node-monitor-period
文章浏览阅读3.8k次。上篇文章详细介绍了弹性云混部的落地历程,弹性云是滴滴内部提供给网约车等核心服务的容器平台,其基于 k8s 实现了对海量 node 的管理和 pod 的调度。本文重点介绍弹性云的调度能力,分为以下部分:调度链路图:介绍当前弹性云调度体系链路,对架构体系有一个初步的认知k8s 调度能力的运用:整体介绍弹性云现在用到的 k8s 调度能力和对其的增强k8s 版本的升级:介绍到从 k8s 1.12 到 1...._滴滴机房 腾讯
文章浏览阅读897次。对于cpu来说,这种分配方式并不会有太大问题,因为cpu可以灵活调度,numa调度时我们只计算绑定了numa cpu的pod是可以接受的,但是对于内存来说,numa node上申请了的内存无法做到随时迁移,这就会导致调度器视角numa node的mem资源足够,但是等到pod真正使用时,由于没有绑定numa node的pod申请的内存,导致numa node的mem资源不足,造成swap中断或者远端内存申请,这会对绑定mem的pod来带来性能损耗。忽略了没有绑定numa node的pod资源。_kubectl numa
文章浏览阅读796次,点赞17次,收藏15次。只要在Service定义中设置了ClusterIp:None,就定义了一个HeadLess Service, 它与普通的Service关键区别在于它没有ClusterIp地址,如果解析HeadLess Service的DNS域名,则会返回该Service对应的全部Pod的EndPoint列表,这就意味着客户端是直接与后端的pod建立了TCP/IP链接进行通信的。一个Label是一个键值对。注解:属于资源对象的元数据,可以被理解为一种特殊的标签,不过更多的是与程序挂钩,通常用于实现资源对象属性的自定义扩展。
文章浏览阅读763次。但是此时如果配置成 NONE, 租户创建成功了,但是无法创建资源文件,也就是无法上传文件,可能 dolphinscheduler 团队就想着将文件上传到 hdfs,暂不支持本地。需要将 resource.storage.type 置为 NONE, 因为我之前用的 1.3.6 版本的时候,即使资源文件存在本地文件也需要配置成 hdfs。_[error] 2023-10-24 18:10:43.762 +0800 org.apache.dolphinscheduler.api.servic
文章浏览阅读2.7k次,点赞2次,收藏13次。公司使用的是交老的k8s版本(1.16),由于老版本的K8s对于现在很多新特性不支持,所以需要升级到新版本。目前2023年7月11日最新版本的k8s是v1.27.3。通过参考官方文档进行k8s部署工作。其中涉及到操作系统配置、防火墙配置、私有镜像仓库等。_k8s最新版本
文章浏览阅读1.8w次,点赞14次,收藏27次。能节省你在kubeadm init 时遇到问题的排错时间⌚️。整合了网上大佬
文章浏览阅读1.1k次,点赞2次,收藏7次。具体操作步骤可以参考之前的教程,建议是先安装一台,然后克隆虚拟机,这样速度快。注意:在克隆时记得修改Mac地址、IP地址、UUID和主机名。(最后别忘了保存下快照~)_部署k8s集群
文章浏览阅读863次,点赞23次,收藏16次。当部署完 Kubernetes,便拥有了一个完整的集群。一组工作机器,称为节点, 会运行容器化应用程序。每个集群至少有一个工作节点。工作节点会 托管Pod ,而 Pod 就是作为应用负载的组件。控制平面管理集群中的工作节点和Pod。说人话版本:集群:cluster,多个几点被组织到一起共同为系统提供服务过程称之为集群。本质上是将承载同一个软件服务节点组织到一起,称之为该软件(服务)的集群,当然集群中的节点身份地位是不一样的。k8s集群也是如此,他也是多个节点组成。
文章浏览阅读943次。Rancher是一个开源的企业级多集群Kubernetes管理平台,实现了Kubernetes集群在混合云+本地数据中心的集中部署与管理,以确保集群的安全性,加速企业数字化转型。Rancher 1.0版本在2016年就已发布,时至今日,Rancher已经成长为企业在生产环境中运行容器和Kubernetes的首要选择。_rancher管理k8s
文章浏览阅读742次,点赞2次,收藏3次。本篇来讲解如何在centos下安装部署高可用k8s集群。_kubeadm ha keepalived + nginx
文章浏览阅读1.9k次,点赞21次,收藏25次。那么这个空间设置成内存的2倍大小。点击IPv4设置--手动--添加--设置ip--设置DNS服务器,最后点击--“保存”;首先选中--“本地标准磁盘”,存储配置--自定义分区,点击--“完成”;在--主机名--设置主机名:(例如k8s-master01),点击--点击+,设置--挂载点/boot--期望容量,点击--添加挂载点;点击--+--挂载点swap--期望容量,点击--“添加挂载点”;默认选择--亚洲--上海,并调整日期和时间,点击--“完成”;设备类型--确认--LVM,卷组--选择“修改”;_euler 服务器搭建
文章浏览阅读1k次。在1.25版本的k8s集群中部署gpu-manage时,虽然显示gpu节点上gpu-manage的pod实例都是running状态,但是给pod申领。既可以用源码的Makefile自动编译打包成新的镜像,但是源码的。说明gpu-manager和容器运行时接口通信失败了。编译后的镜像在1.25版本的k8s中可以正常使用。,但是在k8s1.23版本之后,接口路径已经改为。资源时,却始终找不到有资源的节点。,另外有一些依赖需要国际上的支持。可以看到这里用的运行时接口是。查看节点的详情时,返回的。_launch gpu manager 报错 can't create container runtime manager: context dead
文章浏览阅读1k次,点赞18次,收藏16次。SelfLink:API的资源对象之一,表示资源对象在集群当中自身的一个连结,self-Link是一个唯一的标识号,可以用于标识k8s集群当中的每个资源的对象。容器里使用的配置,在provisioner当中定义好环境变量,传给容器,storageclass的名称,NFS服务器的地址,NFS的目录。NFS的provisionner的客户端以pod的方式运行在集群当中,监听k8s集群当中PV的请求,然后动态的创建于NFS相关的PV。命名为 nfs-client-provisioner-clusterrole。
文章浏览阅读6.3k次,点赞2次,收藏20次。k8s证书过期解决方案之替换证书_k8s证书过期如何更换
文章浏览阅读1k次。KMS,Key Management Service,即密钥管理服务,在K8S集群中,以驱动和插件的形式启用对Secret,Configmap进行加密。以保护敏感数据
文章浏览阅读888次。exporter对于云服务的监控还是很不完美,毕竟每家都有自己的护城河。自动发现多实例这样的借助consul 阿波罗这样的会简单一些。aws可以借助cloudwatch这样的导入模板到grafana中。还是希望能将类似腾讯云云监控中的这些指标采集到prometheus中,但是这过程应该还很遥远grafana出图 prometheus查询语法这些东西有时间的好好研究一下。报警有必要进行分级别,收敛配置一下!_command: - "-redis.password-file=/redis_passwd.json
文章浏览阅读1k次。可以在此处(https://cloud.google.com/kubernetes-engine/docs/how-to/kube-dns)和此处(https://www.digitalocean.com/community/tutorials/an-introduction-to-the-kubernetes-dns-service)找到更多的详细信息。-or-ipvs/)和此处(https://arthurchiao.art/blog/cracking-k8s-node-proxy/)。_k8s默认命名空间
文章浏览阅读4.9k次,点赞11次,收藏32次。如果运行runc命令时提示:runc: error while loading shared libraries: libseccomp.so.2: cannot open shared object file: No such file or directory,则表明runc没有找到libseccomp,需要检查libseccomp是否安装,本次安装默认就可以查询到。所有主机均需要操作。所有主机均需要操作。所有主机均需要操作。所有主机均需要操作。所有主机均需要操作。所有主机均需要操作。_kubernetes 1.28
文章浏览阅读3.6w次,点赞118次,收藏144次。Canal 提供了网络功能,使得 Kubernetes 集群中的 Pod 可以相互通信,并与集群外部的服务进行通信。它通过网络插件的方式,为每个 Pod 分配唯一的 IP 地址,并管理网络流量的路由和转发。此外,Canal 还支持网络策略,用于定义 Pod 之间的通信规则和安全策略。Canal 基于 Calico 和 Flannel 项目,结合了二者的优点。它使用 Calico 的数据平面,提供高性能的网络转发和安全特性,同时使用 Flannel 的控制平面,实现 IP 地址管理和网络策略的配置。_k8s canal