- 博客(52)
- 资源 (2)
- 收藏
- 关注
原创 2025,每天10分钟,跟我学K8S(四十九)- 日志收集
在日常k8s的使用中,由于应用都是运行在pod中的,所以日志文件也一般都会存储在pod中,那如何收集这一块的日志内容?K8S官方给了以下三种方案。三种收集方案的优缺点:三种方案各有自己的优缺点,但是综合比较下来,一般都是建议使用第二种方案,也是官方推荐的一种。在同一个pod中运行2个容器,第一个容器运行业务程序,第二个容器运行日志收集程序,两个容器共享一个日志目录,当第一个业务程序将日志写入到日志目录后,日志收集程序将共享目录中的日志源文件进行收集并上传。
2025-04-22 11:07:00
673
原创 2025,每天10分钟,跟我学K8S(四十八)- Prometheus(五)发送钉钉报警
由于我们自定义的警告是一个pod重启3次即告警,那创建一个不停重启的pod就可以了.记得修改镜像地址,不然去默认地址拉取的话会一直卡在初始化拉取镜像kind: Podmetadata:spec:command: ["sh", "-c", "exit 1"] # 容器启动后立即退出restartPolicy: OnFailure # 退出后自动重启通过Prometheus的web页面去查询重启次数大于3次的再去钉钉查看报警。
2025-04-21 16:12:07
838
原创 2025,每天10分钟,跟我学K8S(四十七)- Prometheus(四)自动发现
不管是自动发现pod还是service,大概步骤分为以下几步1.在prometheus-additional.yaml针对不同对象新增的job_name2.将additional-configs的secret删除并重新生成# 删除secret# 重新生成secret3. 编辑prometheus-prometheus.yaml,将刚才生成的secret挂载进去,并重新apply (只用一次)4. 出现权限报错,重新创建rbac,赋予权限 (只用一次)
2025-04-15 14:28:27
1027
原创 2025,每天10分钟,跟我学K8S(四十六)- Prometheus(三)添加自定义监控项
上一章,我们学习了Prometheus添加系统监控项,那如何添加自定义监控项呢?例如etcd或者其他自己运行的pod?这一章节就来讲解这个问题。
2025-04-14 20:05:36
604
原创 2025,每天10分钟,跟我学K8S(四十五)- Prometheus(三)添加系统监控项
在上一章节,我们完成了Prometheus的安装,也可以在prometheus的targets管理页面看到了现在已经有一些系统应用指标被监控到了,例如 kube-apiserver,kubelet。但是任然有一些系统应用指标还缺失,例如 kube-scheduler、kube-controller-manager、kube-proxy 这三个系统组件就还没被监控。如下图所示:本节内容,我们来一起学习下 Prometheus中系统监控项的添加方式。
2025-04-14 17:41:13
702
原创 2025,每天10分钟,跟我学K8S(四十四)- Prometheus(二)安装Kube-Prometheus
在上一章内容,我们了解了Prometheus 的基础知识点,这一章开始,开始正式学习Prometheus 的安装搭建。考虑到并不是所有环境都有安装helm,所以安装的版本就选择kube-prometheus。Kube-Prometheus 是基于 Operator 的标准化监控堆栈,适合快速部署。
2025-04-11 13:49:36
888
原创 2025,每天10分钟,跟我学K8S(四十三)- Prometheus(一)
Prometheus 是一款开源的 时序数据库与监控告警系统,专为云原生和分布式环境设计,其核心功能是通过多维数据模型和灵活的查询语言实现对系统、应用及基础设施的全方位监控。它将所有信息都存储为时间序列数据;因此实现一种Profiling监控方式,实时分析系统运行的状态、执行时间、调用次数等,以找到系统的热点,为性能优化提供依据。
2025-04-10 11:08:32
1040
原创 2025,每天10分钟,跟我学K8S(四十二)- Kuboard
相较于 Kubernetes Dashboard 等其他 Kubernetes 管理界面,Kuboard 的主要特点有:多种认证方式多集群管理微服务分层展示工作负载的直观展示工作负载编辑存储类型支持丰富的互操作性套件扩展告警配置操作审计Kuboard_Kubernetes教程_K8S安装_管理界面。
2025-04-09 15:57:25
356
原创 2025,每天10分钟,跟我学K8S(四十一)- Dashboard
Kubernetes Dashboard 是 Kubernetes 官方提供的可视化 Web 界面,用于简化集群资源管理和监控操作。简单来说,就是我们之前的所有操作,都是通过 kubectl 命令来完成的,为了简便操作,官方提供了一个web控制台,很多操作可以通过控制台来完成。例如通过 Dashboard 部署容器化的应用、监控应用的状态、执行故障排查任务以及管理 Kubernetes 各种资源。
2025-04-09 14:27:23
964
原创 2025,每天10分钟,跟我学K8S(四十)- Helm (三)- 创建一个自己的helm应用
前面讲解了很多helm的知识点,今天创建一个自己的helm案例,在实操中进一步熟悉helm的使用。是我在工作中经常用的到一个网站,它可以显示返回用户的IP等一系列主机头想要的信息。官方也很贴心的制作了镜像,方便我们在本地使用,本次将用它为例,通过helm创建一个本地的httpbin的pod。
2025-04-08 20:22:17
782
原创 2025,每天10分钟,跟我学K8S(三十九)- Helm (二)Helm的结构和案例
前面一章,大概了解了下helm的安装,和创建自定义的应用,本章节,来完整演示一下通过helm安装一个mysql应用的方式,了解一下helm的目录结构及作用。
2025-04-08 16:55:21
760
原创 2025,每天10分钟,跟我学K8S(三十八)- Helm (一)什么是Helm
Helm 是 Kubernetes 生态中的核心包管理工具,旨在简化应用的打包、部署和生命周期管理。
2025-04-03 14:50:04
1374
原创 2025,每天10分钟,跟我学K8S(三十七)- RBAC
我们在前面的章节,讲解了许多K8S中的对象,例如Pods、ConfigMaps、Deployments、Nodes、Secrets、Namespaces等,那如何对他们进行权限管理呢?假设我们有一个名为 zhangsan 的用户,想相对这些资源拥有权限,首先想到的就是针对每个资源针对用户进行赋权,例如create、get、delete、list、update、edit、watch、exec各种权限,那这时候又来了一个 lisi 的用户,需要想同的权限,那上述操作是不是需要再重复一次。有没有更简单的方法?
2025-04-02 18:35:44
1136
原创 2025,每天10分钟,跟我学K8S(三十六)- 对象属性 - Volume - Secret
上节课学习了,了解了这个资源对象是当中非常重要的一个对象,一般情况下是用来存储一些非安全的配置信息,如果涉及到一些安全相关的数据的话用就不适合了,因为是明文存储的,如果需要加密存储,就需要用到另外一个资源对象了:,用来保存敏感信息,例如密码、API 密钥、TLS 证书等等,将这些信息放在中比放在的定义中或者镜像中来说更加安全和灵活。 Secret 是 Kubernetes 中用于管理敏感信息(如密码、API 密钥、TLS 证书等)的核心资源。其设计目标是避免敏感数据硬编码到 P
2025-04-02 12:03:24
944
原创 2025,每天10分钟,跟我学K8S(三十五)- 对象属性 - Volume - ConfigMap
上面举例了ConfigMap 3种注入的方式,具体采用哪一种可以根据项目需求而定。
2025-03-31 19:21:45
811
原创 2025,每天10分钟,跟我学K8S(三十四)- 对象属性 - Volume - Longhorn
在安装了longhorn之后,我们就不需要关心底层实现是什么和实现的过程,只需要创建pvc+pod开箱即用,大大方便我们再k8s中使用存储。1.抽象层级PV 是具体的存储资源实体,属于静态资源;StorageClass 是动态资源模板;Longhorn 是底层存储系统的实现。三者关系:StorageClass 动态生成 PV → PVC 绑定 PV → Longhorn 提供底层存储支持。2.运维复杂度PV 需手动维护,适合固定规模场景;StorageClass 通过自动化降低运维成本;
2025-03-31 14:58:01
641
原创 2025,每天10分钟,跟我学K8S(三十三)- 对象属性 - Volume - StorageClass
上一章节学习了K8S中PV/PVC,这种创建卷的方式给我们带来了不少好处,例如持久化,共享卷等,但是最大的问题就是它是静态的。什么意思?就是我们每次想使用一个卷的时候,先要创建pv,然后声明pvc,最后才能在pod里面去使用这个卷。少的情况下还好,万一生产环境里面有成1000个pod都需要用到卷存储,那岂不是要先创建1000个PV?删除pod后不是还要删除1000次PV?能不能省略掉创建和删除的步骤?这种情况下我们就需要用到动态 PV,也就是我们今天要讲解的 StorageClass。
2025-03-28 16:35:11
828
原创 2025,每天10分钟,跟我学K8S(三十二)- 对象属性 - Volume - PV PVC
前面我们讲解了 hostPath 或者 emptyDir 的方式来持久化数据,但是他们也有各自的缺点,是否有更加可靠的存储来保存应用的持久化数据,这样容器在重建后,依然可以使用之前的数据?而且显示情况会出现存储资源和 CPU 资源以及内存资源有很大不同,为了屏蔽底层的技术实现细节,让用户更加方便的使用,Kubernetes 便引入了 PV 和 PVC 两个重要的资源对象来实现对存储的管理。这也是本章节需要和大家讲解的核心:PV 和 PVC。
2025-03-27 16:15:35
750
原创 2025,每天10分钟,跟我学K8S(三十一)- 对象属性 - Volume - hostPath
顾名思义,就是将主机的目录挂载到pod里面,这样可以将pod里面产生的数据永久保留到主机的磁盘里面,也可以反过来将主机中的文件共享到pod中,例如可以将主机中的hosts文件挂载到多个pod,每次只需要修改主机的hosts文件即可。上面说的他的几个好处,坏处当然也是有不少,比如多个pod共享同一个hostpath,如果这些pod同时产生数据写入,有可能爆发数据冲突,同时pod产生的数据并不会随着pod删除而消失,会积累在主机的磁盘越来越大,浪费主机性能。
2025-03-27 13:45:08
397
原创 2025,每天10分钟,跟我学K8S(三十)- 对象属性 - Volume - emptyDir
顾名思义,是一个临时的存储卷,他是在k8s在pod调度到节点的时候自动创建的,生命周期随着pod的删除或转移而销毁,里面的数据也随之删除。一般用于非持久化的pod。默认存储在pod所在的node节点的。
2025-03-27 13:11:26
456
原创 2025,每天10分钟,跟我学K8S(二十九)- 对象属性 - Volume
前面讲解了那么多的案例,其实会发现一个问题,就是应用的数据存储,由于pod是无状态的,当pod销毁后,pod中产生的数据也随之销毁,那如果pod中运行的是持久化数据,例如数据库,在销毁或者重建pod的时候,该如何保留之前的数据。Kubernetes提供了一个思路----在Kubernetes(K8S)中,是用于为Pod中的容器提供持久化存储或共享数据的核心机制。由于容器本身是临时性的,Volume的存在解决了数据持久化、容器间数据共享及配置管理等问题。
2025-03-27 11:28:09
762
原创 2025,每天10分钟,跟我学K8S(二十八)- 对象属性 - Pod Hook 如何优雅的关闭一个pod?
Pod Hook 是 Kubernetes 为容器提供的生命周期钩子,由 kubelet发起,用于在容器启动前或终止前执行特定操作。核心作用环境初始化:如配置文件生成、资源预加载。优雅终止:确保应用处理完现有请求后再关闭,避免数据丢失或服务中断。
2025-03-26 16:09:39
883
原创 2025,每天10分钟,跟我学K8S(二十七)- 对象属性 - 污点(Taint)
上一篇文章里面提了一个新的知识点:调度。默认情况下master节点是不调度普通pod的。我们上节课通过<kubectl taint xx > 这条命令让master节点允许被调度,即允许普通pod在master节点上创建。本章节来了解下K8S中的污点(Taint),
2025-03-26 14:47:41
1276
原创 2025,每天10分钟,跟我学K8S(二十七)- 对象属性 - 亲和性(Affinity) 和 反亲和性(Anti-Affinity)
上一章节了解了pod对node节点的选择,可以通过来进行选择节点进行部署,这一章节讲解另一种操作更精细化调度的属性:亲和性(Affinity) 和 反亲和性(Anti-Affinity)。在 Kubernetes 中,亲和性(Affinity) 和 反亲和性(Anti-Affinity) 是控制 Pod 调度的核心机制,通过标签匹配实现资源的智能分布。
2025-03-26 11:38:38
1447
原创 2025,每天10分钟,跟我学K8S(二十六)- 对象属性 - 打标和nodeSelector
一个K8S集群一般的情况下会有多台服务器,例如master和多台node,我在生产环境中一般会将ETCD和api server等运行在master节点上,而业务服务的pod则运行在node服务器上面,那如何实现这种分配?常用的有两种思路,打标/nodeSelector 和 亲和性选择。在 Kubernetes 中,标签(Labels)/nodeSelector 和 亲和性(Affinity) 是资源调度的核心机制,用于实现智能 Pod 分布和高可用性设计。
2025-03-25 18:03:33
400
原创 2025,每天10分钟,跟我学K8S(二十五)- 对象属性 - Health Check
在Kubernetes中,健康检查是确保集群中容器稳定运行的重要机制。它通过探针(Probe)定期检查容器的健康状态,并根据检查结果采取相应的措施。下面我将详细讲解Kubernetes中的健康检查机制。
2025-03-25 14:29:07
1018
原创 2025,每天10分钟,跟我学K8S(二十四)- 对象属性 - Rolling Update
在Kubernetes中, 是一种用于在不中断服务的情况下更新应用程序的策略。它通过逐步替换旧版本的Pods来实现无缝更新。举个例子,一个deployment中有10个nginx1.17版本的pod副本,当想将这个nginx版本进行升级到1.18,我们想的当然是不能所有pod一起更新,最好是能下线一部分,上线一部分,按照这样的轮询,直至将所有的pod更新完毕,以免影响pod的对外服务业务。
2025-03-25 13:50:51
696
原创 2025,每天10分钟,跟我学K8S(二十三)- 对象属性 - HPA
上一篇讲解了Pod的资源限制,那现实情况会出现,当业务流量上涨后,Pod对资源的占用也上涨了。之前分配的资源不够用了。不可能再又手动的去调整yaml文件,重新创建占用更多资源的pod吧?Kubernetes(Pod水平自动伸缩),简称HPA。HAP通过监控分析RC或者Deployment控制的所有Pod的负载变化情况来确定是否需要调整Pod的副本数量,这是HPA最基本的原理。
2025-03-25 11:47:48
559
原创 2025,每天10分钟,跟我学K8S(二十二)- 对象属性 - resources资源限制
在生产环境和测试环境共用node节点的情况下,如果物理资源不够用,不可避免会出现抢占物理资源的情况,在Kubernetes中, 指的是容器或Pod可以使用的计算资源,主要包括CPU和内存。Kubernetes通过资源请求(requests)和资源限制(limits)来管理这些资源。
2025-03-25 11:07:16
378
原创 2025,每天10分钟,跟我学K8S(二十一)- 对象属性 - namespace
在 Kubernetes 中,Namespace(命名空间) 是一种将集群资源划分为多个逻辑组的机制。它主要用于在同一个 Kubernetes 集群中隔离不同项目、团队或环境(如开发、测试、生产)的资源,避免命名冲突,并简化权限和资源的管理。通过Namespace,可以将集群中的资源(如Pod、Service、Volume等)进行逻辑上的隔离,避免命名冲突和资源干扰。
2025-03-25 10:50:04
647
原创 2025,每天10分钟,跟我学K8S(二十)- Ingress
上篇文章介绍service时有说了暴露了service对外的三种方式ClusterIP、NodePort与LoadBalance,这几种方式都是在service的维度提供的,service的作用体现在两个方面,对集群内部,它不断跟踪pod的变化,更新endpoint中对应pod的对象,提供了ip不断变化的pod的服务发现机制,对集群外部,他类似负载均衡器,可以在集群内外部对pod进行访问。但是,单独用service暴露服务的方式,在实际生产环境中不太合适:ClusterIP的方式只能在集群内部访问。
2025-03-20 17:51:46
638
原创 2025,每天10分钟,跟我学K8S(十九)- Service (二)
前面我们学习了K8S中service对象中ClusterIP和NodePort,今天来学习剩下的两种LoadBalancer和ExternalName。LoadBalancer: 大多是在公有云托管集群中使用。
2025-03-19 20:10:45
158
原创 2025,每天10分钟,跟我学K8S(十八)- Service (一)
Service是K8s中的一种抽象,它定义了一组Pod的逻辑集合,并为这组Pod提供一个稳定的访问点(Endpoint)。这个访问点可以是一个固定的虚拟IP地址或者一个DNS名称,通过这个访问点,其他的应用或服务可以方便地访问到这组Pod,实现服务发现和负载均衡。在K8s中,Pod是最小的可部署单元,而Service则提供了对这些Pod的抽象。使用Service,我们可以将后端Pod组织成一个逻辑单元,而不用担心它们的具体部署细节。这种抽象使得我们可以更加灵活地进行应用的扩展和维护。
2025-03-18 17:00:36
1025
原创 2025,每天10分钟,跟我学K8S(十七)- CronJob
如果想要删除当前 Namespace 中的所有 Job,可以通过命令 kubectl delete jobs --all 立刻删除它们。的基础上加上了时间调度,在给定的时间点运行一个任务,也可以周期性地在给定时间点运行。如果设置限制的值为 0,那么相关类型的。字段是Crontab的必须字段,用来指定任务运行的周期,格式就和liunx中的。,表示历史限制,是可选的字段。文件中的一行,它根据配置的时间格式周期性地运行一个。用来指定需要运行的任务,格式当然和。,默认没有限制,所有成功和失败的。
2025-03-18 15:45:50
311
原创 2025,每天10分钟,跟我学K8S(十六)- Job
Job是Kubernetes中的一个核心概念,用于在集群中运行独立的任务。与其他控制器(如ReplicaSet和Deployment)不同,Job关注的是执行一次性任务而不是保持指定数量的实例运行。
2025-03-18 15:33:44
277
原创 2025,每天10分钟,跟我学K8S(十五)- DaemonSet
DaemonSet用于确保在集群的每个节点上都运行一个或多个Pod的副本。与其他控制器(如statefulset和deployment)不同,DaemonSet主要用于在整个集群中的节点上运行系统级别的任务,如日志收集、监控代理等。
2025-03-13 17:03:46
201
原创 2025,每天10分钟,跟我学K8S(十四)- StatefulSet
举例,有2个pod程序,其中一个是web服务,一个是是mysql服务,web需要去连接mysql进行数据查询,那么就得在web服务中写好mysql的IP地址,但是如果mysql的pod被重建了,IP就发生改变了。如果web是通过主机名去连接mysql,同时这个mysql即便重建主机名也不发生改变,岂不美哉?上一章节,初步通过Deployment和ReplicaSet了解到了他们对Pod的管理方式,但是这里有一个问题,pod的名字都是无序的随机生成无状态服务,我们又知道同pod之间是可以互相访问的。
2025-03-13 16:22:03
339
原创 2025,每天10分钟,跟我学K8S(十三)- ReplicaSet
上节课讲述Deployment的时候引入了一个ReplicaSet的东西,也讲解了他是来管理pod的的创建和删除。并且保证pod的数量和我们设置的参数保持一致。本章节来了解下他如何来工作的。
2025-03-13 12:27:57
88
原创 2025,每天10分钟,跟我学K8S(十二)- Deployment
前面2个章节,了解了pod的创建过程和生命周期。但是在实际应用中,直接创建pod是很少见的,因为一旦这个pod挂掉了。整个服务就宕机了。所以 kubernetes 提供了一个Deployment的概念,可以让Deployment来管理一组 POD 的副本,也就是副本集,这样就可以保证一定数量的副本一直可用的,不会因为一个 POD 挂掉导致整个服务挂掉。Deployment是Kubernetes中的一个核心概念,它是一种高级别的控制器,用于管理Pod和ReplicaSet,确保应用程序的高可用性和稳定性。
2025-03-13 12:09:22
564
原创 2025,每天10分钟,跟我学K8S(十一)- POD的生命周期
上节课我们创建了一个pod,成功启动了他。本章节我们来继续了解一下创建pod的其他功能。上节课在第一次拉取镜像的时候,出现了一个报错,如果继续等待,可能会变成,在调整了镜像地址重新拉取之后,状态又变成了Running,这告诉我们,在创建Pod的时候,是有多种状态的。这就叫做pod的生命周期。
2025-03-11 14:34:41
311
Oracle静默安装.doc
2015-06-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人