1.使用Fluentd收集控制台日志 1.1架构说明 Kubernetes官方提出了EFK(Elasticsearch+Fluentd+Kibana)的日志收集解决方案,相对于ELK中的Logstash,Fluentd采用“一锅端”的形式,可以直接将某些日志文件中的内容存储至Elasticsearch,然后通过Kibana进行展示。 Tips:Fluentd只能收集控制台日志(程序直接输出到控制台的日志),不能收集非控制台日志。 1.2部署EFK 部署Elasticsearch+Fluentd+Kibana,项目地址:https://github.com/dotbalo/k8s.git...

  BMwtnym6fXTR   2023年11月13日   20   0   0 kubernetes

2.使用Filebeat收集自定义文件日志 2.1架构说明 但是EFK也有诸多限制,比如Fluentd只能收集控制台日志(程序直接输出到控制台的日志),不能收集非控制台日志,所以很难满足生产环境的需求。因为大部分情况下,没有遵循云原生理念开发的程序,往往都会输出很多日志文件,这些容器内的日志无法采集,除非在每个Pod内添加一个Sidecar,将日志文件的内容进行tail-f转成控制台日志,但这也是非常麻烦的。 另一个问题是,大部分公司内都有很成熟的ELK平台,如果再搭建一个EFK平台,属于重复造轮子。当然,用来存储日志的Elasticsearch集群是不建议搭建在Kubernetes集群中的...

  BMwtnym6fXTR   2023年11月13日   21   0   0 kubernetes

3.使用Loki收集K8s日志 3.1架构说明 无论是ELK、EFK还是Filebeat,都需要用到Elasticsearch来存储数据,Elasticsearch本身就像“一座大山”,维护难度和资源使用都是偏高的。对于很多公司而言,特别是新创公司,可能并不想大费周章地去搭建一个ELK、EFK或者其他重量级的日志平台,刚开始的人力投入可能是大于收益的,所以就需要一个更轻量的日志收集平台。 一个基于Kubernetes平台的原生日志收集平台LokiStack应运而生,相对于上述技术栈,Loki的安装、架构、使用都比较简单,能够满足大部分的工作需求。 可以看到主要包含如下组件: Loki:主...

  BMwtnym6fXTR   2023年11月13日   27   0   0 kubernetes

九、资源配额、资源限制、服务质量Qos 1.节点可用性延伸 已经从多个维度保障了服务的可用性,比如调度到不同的机器和机房、配置可靠的健康检查等。但是上述措施都是基于应用级别去做的,如果我们的Kubernetes集群用来运行容器的节点有了故障,带来的影响是很大的,所以在保证应用本身的前提下,也要通过一些措施保障节点的可用性。 节点故障大部分都是由于资源分配不合理、超额分配引起的,因此需要用某个技术手段保证节点的资源不会过大地超额分配。 Kubernetes为我们提供了开箱即用的资源管理,可以通过ResourceQuota和LimitRange的配合防止节点资源超额分配。 2.资源配额(Reso...

  BMwtnym6fXTR   2023年11月02日   33   0   0 kubernetes

十、云原生存储之ceph集群部署(一) 1.ceph集群部署 1.1准备环境 k8s集群要求: 最低版本支持Kubernetesv1.21或更高版本 至少五个节点,每个节点的内存不低于5G,CPU不低于2核。 至少有三个存储节点,并且每个节点至少有一个裸盘。 K8s集群所有的节点时间必须一致 分区或设备不能使用文件系统进行格式化(存储节点都新添加一块裸盘) Tips:Rook的版本大于1.3,不要使用目录创建集群,要使用单独的裸盘进行创建,所以不能进行格式化。 1.2部署Rook 克隆Rook相关代码(本次使用Rook1.6版本) gitclone--single-branch...

  BMwtnym6fXTR   2023年11月02日   51   0   0 kubernetes

2.了解StorageClass StorageClass(存储类)是用于定义在Kubernetes集群中创建持久卷(PersistentVolume)的类型和行为的对象。在Kubernetes中,持久卷是一种抽象层,用于将存储资源(例如磁盘)与容器解耦,从而实现数据的持久性和可靠性。 StorageClass定义了不同类型的存储提供商、存储卷的属性和行为,以及如何将这些存储卷绑定到动态分配的持久卷请求。通过使用StorageClass,Kubernetes管理员可以为不同的应用程序或工作负载配置不同的存储策略。 每个StorageClass都包含provisioner、parameters和...

  BMwtnym6fXTR   2023年11月02日   38   0   0 kubernetes

7.PVC扩容 块存储和共享文件存储的步骤一致,找到要扩容的PVC名称,进行kubectledit修改即可。下面演示修改共享文件存储的大小,且Pod还在运行中。 修改完成,已经扩容,再进到Pod中看看,没问题! 8.PVC克隆与快照 这两个功能建议从Dashboard上进行操作,推荐使用Kuboard来管理集群。 9.Ceph集群清理 如果Rook要继续使用,可以只清理创建的deployment、pod、pvc即可,之后可以直接投入使用。 9.1删除Rook集群资源 1.首先找到哪些PVC挂载了Rook的动态存储,之后找到哪些Pod挂载了这些PVC,然后删除这些Pod,可能需要清理...

  BMwtnym6fXTR   2023年11月02日   44   0   0 kubernetes

十一、kubernetes之Helm安装Zookeeper、Kafka集群 1.了解Helm 包管理工具就是把相关文件的定义统一管理,然后可以很方便地通过这些工具管理比较复杂的应用,比如MySQL集群、Redis集群等,实现一键创建集群、扩容、备份等。当然,公司内开发的应用程序也可以通过Kubernetes的包管理工具进行管理,目前常用的两种包管理工具是Operator和Helm。 两种工具的实现难度是不一样的。比如自己写一个Helm的Chart(Helm包的名称叫Chart),只需要将相关的模板文件放在Chart的templates目录,然后抽离相关的配置,放置于values.yaml,模...

  BMwtnym6fXTR   2023年11月02日   39   0   0 kubernetes

Kubeadm安装高可用k8s1.23.x 本篇文章参考杜宽的《云原生Kubernetes全栈架构师》,视频、资料文档等,大家可以多多支持! 1.高可用架构 1.1架构图 Kubernetes是属于主从设备模型(Master-Slave架构),即有Master节点负责核心的调度、管理和运维,Slave节点则执行用户的程序。在Kubernetes中,主节点一般被称为MasterNode或者HeadNode,而从节点则被称为WorkerNode或者Node。 Tips:Master节点通常包括APIServer、Scheduler、ControllerManager等组件,Node节点通常...

  BMwtnym6fXTR   2023年11月02日   52   0   0 kubeadm安装k8skubernetesk8s安装

Kubeadm安装高可用k8s1.27.x 本篇文章参考杜宽的《云原生Kubernetes全栈架构师》,视频、资料文档等,大家可以多多支持! 1.高可用架构 1.1架构图 Kubernetes是属于主从设备模型(Master-Slave架构),即有Master节点负责核心的调度、管理和运维,Slave节点则执行用户的程序。在Kubernetes中,主节点一般被称为MasterNode或者HeadNode,而从节点则被称为WorkerNode或者Node。 Tips:Master节点通常包括APIServer、Scheduler、ControllerManager等组件,Node节点通常...

  BMwtnym6fXTR   2023年11月02日   43   0   0 kubeadm安装k8skubernetesk8s安装

二进制安装高可用k8s1.27.x 本篇文章参考杜宽的《云原生Kubernetes全栈架构师》,视频、资料文档等,大家可以多多支持! 1.高可用架构 1.1架构图 Kubernetes是属于主从设备模型(Master-Slave架构),即有Master节点负责核心的调度、管理和运维,Slave节点则执行用户的程序。在Kubernetes中,主节点一般被称为MasterNode或者HeadNode,而从节点则被称为WorkerNode或者Node。 Tips:Master节点通常包括APIServer、Scheduler、ControllerManager等组件,Node节点通常包括Ku...

  BMwtnym6fXTR   2023年11月02日   67   0   0 二进制安装k8skubernetesk8s安装

一、Kubernetes基础 1.为什么要用Kubernetes 在业务开始进行容器化时,前期需要容器化的项目可能并不多,涉及的容器也并不多,此时基于Docker容器直接部署至宿主机也能实现自己的需求。但是随着项目越来越多,管理的容器也越来越多,此时使用“裸容器”部署的方式管理起来就显得很吃力,并且随着业务量的增加,会明显体会到“裸容器”的不足,比如: 宿主机宕机造成该宿主机上的容器不可用,且无法自动恢复。 容器明明在运行,接口就是不通(健康检查做得不到位)。 应用程序部署、回滚、扩缩容困难。 成百上千的容器和涉及的端口难以维护。 Tips:虽然有docker-compose、docke...

  BMwtnym6fXTR   2023年11月02日   35   0   0 kubernetes

二、初识Pod 1.什么是Pod Pod是工作负载在Kubernetes上运行的应用程序。在Kubernetes中,Pod代表的是集群上处于运行状态的一组容器的集合。 Pod的设计初衷 如果把某个应用的进程进行拆分,拆分成一个一个容器,那就有可能出现某个进程容器被调度到了不同的节点上,往往应用内部的进程与进程间通信(通过IPC或者共享本地文件之类)都是要求在本地进行的,也就是需要在同一个节点上运行。 所以需要一个更高级别的结构来将这些容器绑定在一起,并将他们作为一个基本的调度单元进行管理,这样就可以保证这些容器始终在同一个节点上面,这也就是Pod设计的初衷。 Pod可简单地理解为一组、一个...

  BMwtnym6fXTR   2023年11月02日   40   0   0 kubernetes

三、资源调度 1.为什么要资源调度 在传统架构中,我们总在考虑或者面临一个问题,我们的应用需要部署在哪里?我们的应用现在在哪里运行着?有一个服务不可访问了,去哪里排查?诸如此类的问题总是会出现在工作中。 但是在使用Kubernetes部署应用后,我们无须再关心应用到底部署在了哪台服务器,也无须登录某台服务器去排查应用的问题,而是使用Kubernetes提供的Kubectl或者Dashboard即可快速地定位到应用,之后便可以进行执行命令、查看日志、监控等操作。 对于Kubernetes的应用部署,之前提到过Pod就是用来配置容器的,容器就是用来运行应用的。也提到过,在实际使用时,不会创建单独的...

  BMwtnym6fXTR   2023年11月02日   31   0   0 kubernetes

四、自动扩缩容HPA 1.什么是HPA 之前通过kubectlscale命令可以来实现Pod的扩缩容功能,但是这个毕竟是完全手动操作的,要应对线上的各种复杂情况,需要能够做到自动化去感知业务,来自动进行扩缩容。为此,Kubernetes提供了这样的一个资源对象:HorizontalPodAutoscaling(Pod水平自动伸缩),简称HPA,HPA通过监控分析一些控制器控制的所有Pod的负载变化情况来确定是否需要调整Pod的副本数量,这是HPA最基本的原理: HorizontalPodAutoscaler会指示工作负载资(Deployment、StatefulSet或其他类似资源)扩容或缩...

  BMwtnym6fXTR   2023年11月02日   42   0   0 kubernetes

五、服务发布 1.Pod生命周期带来的问题 Pod的生命是有限的,死亡过后不会复活了。每个Pod都有自己的IP地址,但是如果Pod重建了的话那么他的IP很有可能也就变化了。 这就会带来一个问题:比如我们有一些后端的Pod集合为集群中的其他应用提供API服务,如果我们在前端应用中把所有的这些后端的Pod的地址都写死,然后以某种方式去访问其中一个Pod的服务,这样看上去是可以工作的,对吧?但是如果这个Pod挂掉了,然后重新启动起来了,是不是IP地址非常有可能就变了,这个时候前端就极大可能访问不到后端的服务了。 2.k8s为什么要发布服务 当我们通过ReplicationController(简称...

  BMwtnym6fXTR   2023年11月02日   40   0   0 kubernetes

六、配置管理 1.为什么要做配置分离 通常情况下,一个服务的启动需要依赖一些配置,比如一个Java应用需要知道自己链接的数据库或其他中间件的地址是什么,需要知道链接另一个服务的接口地址是什么,所以需要告诉应用其他服务的配置信息。一般可以通过环境注入或者配置文件进行统一管理,而不是写死在代码里面,这也是云原生应用设计比较重要的因素——配置分离。 在传统架构中配置文件可以保存在本地服务器、代码仓库或配置中心,而在Kubernetes上,其抽象为ConfigMap(缩写为CM)和Secret的概念,用来管理程序的配置文件或Pod变量,比如Nginx配置、应用配置、MavenSetting配置文件等。...

  BMwtnym6fXTR   2023年11月02日   41   0   0 kubernetes

七、持久化存储 1.Volume概述 Container(容器)中的磁盘文件是短暂的,当容器崩溃时,kubelet会重新启动容器,但最初的文件将丢失,Container会以最干净的状态启动。另外,当一个Pod运行多个Container时,各个容器可能需要共享一些文件。KubernetesVolume可以解决这两个问题。 Kubernetes卷具有明确的生命周期,与使用它的Pod相同。因此,在Kubernetes中的卷可以比Pod中运行的任何Container都长,并且可以在Container重启或者销毁之后保留数据。Kubernetes支持多种类型的卷,Pod可以同时使用任意数量的卷。 从本质...

  BMwtnym6fXTR   2023年11月02日   60   0   0 kubernetes

八、高级调度任务、污点与容忍、亲和力 1.Job 1.1Job概述 Job负责处理任务,即仅执行一次的任务,并将继续重试Pod的执行,它保证批处理任务的一个或多个Pod直到指定数量的Pod成功终止。 Job跟踪记录成功完成的Pod个数,当数量达到指定的成功个数阈值时,任务(即Job)结束。 删除Job的操作会清除所创建的全部Pod。 挂起Job的操作会删除Job的所有活跃Pod,直到Job被再次恢复执行。 1.2使用Job 创建一个Job的yaml文件 [root@k8s-master01job]cat/yaml/job/test-job.yaml apiVersion:batch/v...

  BMwtnym6fXTR   2023年11月02日   51   0   0 kubernetes
关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~