Kafka 集群搭建(含 ZK 模式和 Kraft 模式)
前言环境介绍虚拟机软件:VirtualBox Linux 发行版本:Ubuntu 20.04.4 虚拟机核心数:1 core 虚拟机内存:2 GB JDK 版本:1.8.0_202 ZK 版本:3.8.0 Kafka 版本:3.2.0 Kafka - ZK 模式Kafka 2.8.0 之前,所有元数据信息都存储在 ZK。 ZK 成为 Kafka 瓶颈。从 2.8.0 开始,可以将元数据信息存储在 Kafka,脱离 ZK。 集群规划 node01 node02 node03 zk zk zk kafka kafka kafka ZK 集群部署可以参考 《Hadoop HA 搭建》 中的 ZK 集群搭建 Kafka 集群部署Kafka 环境变量1234567$ vim /etc/profile# 尾部添加以下内容export KAFKA_HOME=/opt/kafka-3.2.0export PATH=$PATH:$KAFKA_HOME/bin$ xsync $KAFKA_HOME$ xsync /etc/profile 配置 server.properties1...
Endpoints
k8s集群中创建一个名为hello的service,就会生成一个同名的endpoint对象,ENDPOINTS就是service关联的pod的ip地址和端口, 即动态存储pod ip地址和端口对应关系的list,Kubernetes在创建Service时,根据Service的标签选择器(Label Selector)来查找Pod,据此创建与Service同名的EndPoints对象。当Pod的地址发生变化时,EndPoints也随之变化。Service接收到请求时,就能通过EndPoints找到请求转发的目标地址endpoint不可以用来固定podip,endpoint是随着pod的改变而改变,而非pod随着endpoint的改变而改变 手动创建 Endpoint 创建service: 略 创建一个 endpoint.yaml 文件,内容如下(注意替换ip为你容器访问ip(pod ip)): 12345678910apiVersion: v1kind: Endpointsmetadata: name: nginxsubsets: - addresses: - i...
HPA(水平伸缩)和 PodDisruptionBudget(干扰预算)
HPA我们可以实现通过手工执行kubectl scale命令实现Pod扩容或缩容,但是这显然不符合Kubernetes的定位目标–自动化、智能化。 Kubernetes期望可以实现通过监测Pod的使用情况,实现pod数量的自动调整,于是就产生了Horizontal Pod Autoscaler(HPA)这种控制器。 HPA可以获取每个Pod利用率,然后和HPA中定义的指标进行对比,同时计算出需要伸缩的具体值,最后实现Pod的数量的调整。其实HPA与之前的Deployment一样,也属于一种Kubernetes资源对象,它通过追踪分析RC控制的所有目标Pod的负载变化情况,来确定是否需要针对性地调整目标Pod的副本数,这是HPA的实现原理 注: 在 K8S 1.18之前,HPA 扩容是无法调整灵敏度的 对于缩容,由 kube-controller-manager 的 --horizontal-pod-autoscaler-downscale-stabilization-window 参数控制缩容时间窗口,默认 5 分钟,即负载减小后至少需要等 5 分钟才会缩容。 对于扩容,由 ...
Kubernetes 权限管理 RBAC 详解
摘自: https://blog.csdn.net/qq_35745940/article/details/120693490 一、简介 kubernetes 集群相关所有的交互都通过apiserver来完成,对于这样集中式管理的系统来说,权限管理尤其重要,在1.5版的时候引入了RBAC(Role Base Access Control)的权限控制机制。 启用RBAC,需要在 apiserver 中添加参数–authorization-mode=RBAC,如果使用的kubeadm安装的集群,1.6+版本都默认开启了RBAC。 1$ grep -C3 'authorization-mode' /etc/kubernetes/manifests/kube-apiserver.yaml API Server目前支持以下几种授权策略: AlwaysDeny:表示拒绝所有请求,一般用于测试。 AlwaysAllow:允许接收所有请求。如果集群不需要授权流程,则可以采用该策略,这也是Kubernetes的默认配置。 ABAC(Attribute-Ba...
Pod/Node 亲和性和反亲和性部署
参考:https://cloud.tencent.com/developer/article/1746649 Kubernetes K8S之Node节点亲和性与反亲和性以及Pod亲和性与反亲和性详解与示例 主机配置规划 服务器名称(hostname) 系统版本 配置 内网IP 外网IP(模拟) k8s-master CentOS7.7 2C/4G/20G 172.16.1.110 10.0.0.110 k8s-node01 CentOS7.7 2C/4G/20G 172.16.1.111 10.0.0.111 k8s-node02 CentOS7.7 2C/4G/20G 172.16.1.112 10.0.0.112 亲和性和反亲和性nodeSelector提供了一种非常简单的方法,将pods约束到具有特定标签的节点。而亲和性/反亲和性极大地扩展了可表达的约束类型。关键的增强是: 1、亲和性/反亲和性语言更具表达性。除了使用逻辑AND操作创建的精确匹配之外,该语言还提供了...
VPA 和 CA
VPAKubernetes VPA(Vertical Pod Autoscaler)可以理解为对单个服务资源进行扩容,如CPU、内存之类。它一般应用于一些中心化的单体应用,且无法对其进行部 署多份副本的场景,如 Prometheus 或 Jenkins 这类垂直 Pod 应用自动扩缩容。 VPA 会基于 Pod 的 资源使用情况自动为集群设置资源占用的限制,从而让集群将 Pod 调度到有足够资源的最佳节点上。VPA 也会保持最初容器定义中资源 request 和 limit 的占比。 当控制器检测到一个Pod负载过高时,这时会对当前Pod进行终止,接着对Pod的CPU或内存进行扩容,最后重建Pod,此时Pod可能在任何一个节点进行重建。 它与HPA的扩容机制是完全不一样的,VPA扩容过程中将无法正常提供服务,也因此它使用的场景相比HPA来说,要少的多。 安装vpa1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859...
DaemonSet 的使用以及测试部署 Filebeat
filebeat_daemonset.yaml123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194...
job和cronjob的使用
job 主要用于负责**批量处理(一次要处理指定数量任务)短暂的一次性(每个任务仅运行一次就结束)**任务。Job特点如下: 当Job创建的pod执行成功结束时,Job将记录成功结束的pod数量 当成功结束的pod达到指定的数量时,Job将完成执行 关于重启策略设置的说明: 如果指定为OnFailure,则job会在pod出现故障时重启容器,而不是创建pod,failed次数不变 如果指定为Never,则job会在pod出现故障时创建新的pod,并且故障pod不会消失,也不会重启,failed次数加1 job.yaml 12345678910111213141516171819202122232425262728293031323334apiVersion: batch/v1kind: Jobmetadata: name: job labels: app: jobspec: # 允许使用selector(默认是false) manualSelector: true # 指定job在任一时刻应该并发运行Pods的数量。默认值: 1 par...
K8s ConfigMap 配置管理
configmap简介 在生产环境中经常会遇到需要修改配置文件的情况,传统的修改方式不仅会影响到服务的正常运行,而且操作步骤也很繁琐。为了解决这个问题,kubernetes项目从1.2版本引入了ConfigMap功能,用于将应用的配置信息与程序的分离。 ConfigMap是一种API对象,用来将非加密数据保存到键值对中。可以用作环境变量、命令行参数或者存储卷中的配置文件。 ConfigMap不可以跨命名空间使用 ConfigMap必须要在pod/deployment创建之前就得存在 ConfigMap 在设计上不是用来保存大量数据的。在 ConfigMap 中保存的数据不可超过 1 MiB。如果你需要保存超出此尺寸限制的数据,你可能希望考虑挂载存储卷 或者使用独立的数据库或者文件服务。 ConfigMap创建通过文件创建configmap1kubectl create configmap my-config --from-file=key1=test1.txt --from-file=key2=test2.txt 通过文件夹创建configmap1kubect...
K8s 中各组件及流程介绍
kubernetes组件一个kubernetes集群主要是由控制节点(master)、**工作节点(node)**构成,每个节点上都会安装不同的组件。 master:集群的控制平面,负责集群的决策(管理)ApiServer : 资源操作的唯一入口,接收用户输入的命令,提供认证、授权、API注册和发现等机制; 客户端与k8s群集及K8s内部组件的通信,都要通过Api Server这个组件;Scheduler : 负责集群资源调度,按照预定的调度策略将Pod调度到相应的node节点上。(算哪个节点)ControllerManager : 负责维护集群的状态,比如程序部署安排、故障检测、自动扩展、滚动更新等(部署和维护的)Etcd/节点信息存储 :负责存储集群中各种资源对象的信息 node:集群的数据平面,负责为容器提供运行环境(干活)Kubelet : 负责维护容器的生命周期,即通过控制docker/containerd,来创建、更新、销毁容器KubeProxy : 负责提供集群内部的服务发现和负载均衡 部署流程下面,以部署一个nginx服务来说明kubernet...
