- 博客(43)
- 资源 (2)
- 收藏
- 关注
原创 2025,每天10分钟,跟我学K8S(四十)- Helm (三)- 创建一个自己的helm应用
前面讲解了很多helm的知识点,今天创建一个自己的helm案例,在实操中进一步熟悉helm的使用。是我在工作中经常用的到一个网站,它可以显示返回用户的IP等一系列主机头想要的信息。官方也很贴心的制作了镜像,方便我们在本地使用,本次将用它为例,通过helm创建一个本地的httpbin的pod。
2025-04-08 20:22:17
144
原创 2025,每天10分钟,跟我学K8S(三十九)- Helm (二)Helm的结构和案例
前面一章,大概了解了下helm的安装,和创建自定义的应用,本章节,来完整演示一下通过helm安装一个mysql应用的方式,了解一下helm的目录结构及作用。
2025-04-08 16:55:21
448
原创 2025,每天10分钟,跟我学K8S(三十八)- Helm (一)什么是Helm
Helm 是 Kubernetes 生态中的核心包管理工具,旨在简化应用的打包、部署和生命周期管理。
2025-04-03 14:50:04
1241
原创 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
1088
原创 2025,每天10分钟,跟我学K8S(三十六)- 对象属性 - Volume - Secret
上节课学习了,了解了这个资源对象是当中非常重要的一个对象,一般情况下是用来存储一些非安全的配置信息,如果涉及到一些安全相关的数据的话用就不适合了,因为是明文存储的,如果需要加密存储,就需要用到另外一个资源对象了:,用来保存敏感信息,例如密码、API 密钥、TLS 证书等等,将这些信息放在中比放在的定义中或者镜像中来说更加安全和灵活。 Secret 是 Kubernetes 中用于管理敏感信息(如密码、API 密钥、TLS 证书等)的核心资源。其设计目标是避免敏感数据硬编码到 P
2025-04-02 12:03:24
914
原创 2025,每天10分钟,跟我学K8S(三十五)- 对象属性 - Volume - ConfigMap
上面举例了ConfigMap 3种注入的方式,具体采用哪一种可以根据项目需求而定。
2025-03-31 19:21:45
764
原创 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
568
原创 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
793
原创 2025,每天10分钟,跟我学K8S(三十二)- 对象属性 - Volume - PV PVC
前面我们讲解了 hostPath 或者 emptyDir 的方式来持久化数据,但是他们也有各自的缺点,是否有更加可靠的存储来保存应用的持久化数据,这样容器在重建后,依然可以使用之前的数据?而且显示情况会出现存储资源和 CPU 资源以及内存资源有很大不同,为了屏蔽底层的技术实现细节,让用户更加方便的使用,Kubernetes 便引入了 PV 和 PVC 两个重要的资源对象来实现对存储的管理。这也是本章节需要和大家讲解的核心:PV 和 PVC。
2025-03-27 16:15:35
721
原创 2025,每天10分钟,跟我学K8S(三十一)- 对象属性 - Volume - hostPath
顾名思义,就是将主机的目录挂载到pod里面,这样可以将pod里面产生的数据永久保留到主机的磁盘里面,也可以反过来将主机中的文件共享到pod中,例如可以将主机中的hosts文件挂载到多个pod,每次只需要修改主机的hosts文件即可。上面说的他的几个好处,坏处当然也是有不少,比如多个pod共享同一个hostpath,如果这些pod同时产生数据写入,有可能爆发数据冲突,同时pod产生的数据并不会随着pod删除而消失,会积累在主机的磁盘越来越大,浪费主机性能。
2025-03-27 13:45:08
357
原创 2025,每天10分钟,跟我学K8S(三十)- 对象属性 - Volume - emptyDir
顾名思义,是一个临时的存储卷,他是在k8s在pod调度到节点的时候自动创建的,生命周期随着pod的删除或转移而销毁,里面的数据也随之删除。一般用于非持久化的pod。默认存储在pod所在的node节点的。
2025-03-27 13:11:26
417
原创 2025,每天10分钟,跟我学K8S(二十九)- 对象属性 - Volume
前面讲解了那么多的案例,其实会发现一个问题,就是应用的数据存储,由于pod是无状态的,当pod销毁后,pod中产生的数据也随之销毁,那如果pod中运行的是持久化数据,例如数据库,在销毁或者重建pod的时候,该如何保留之前的数据。Kubernetes提供了一个思路----在Kubernetes(K8S)中,是用于为Pod中的容器提供持久化存储或共享数据的核心机制。由于容器本身是临时性的,Volume的存在解决了数据持久化、容器间数据共享及配置管理等问题。
2025-03-27 11:28:09
729
原创 2025,每天10分钟,跟我学K8S(二十八)- 对象属性 - Pod Hook 如何优雅的关闭一个pod?
Pod Hook 是 Kubernetes 为容器提供的生命周期钩子,由 kubelet发起,用于在容器启动前或终止前执行特定操作。核心作用环境初始化:如配置文件生成、资源预加载。优雅终止:确保应用处理完现有请求后再关闭,避免数据丢失或服务中断。
2025-03-26 16:09:39
847
原创 2025,每天10分钟,跟我学K8S(二十七)- 对象属性 - 污点(Taint)
上一篇文章里面提了一个新的知识点:调度。默认情况下master节点是不调度普通pod的。我们上节课通过<kubectl taint xx > 这条命令让master节点允许被调度,即允许普通pod在master节点上创建。本章节来了解下K8S中的污点(Taint),
2025-03-26 14:47:41
1236
原创 2025,每天10分钟,跟我学K8S(二十七)- 对象属性 - 亲和性(Affinity) 和 反亲和性(Anti-Affinity)
上一章节了解了pod对node节点的选择,可以通过来进行选择节点进行部署,这一章节讲解另一种操作更精细化调度的属性:亲和性(Affinity) 和 反亲和性(Anti-Affinity)。在 Kubernetes 中,亲和性(Affinity) 和 反亲和性(Anti-Affinity) 是控制 Pod 调度的核心机制,通过标签匹配实现资源的智能分布。
2025-03-26 11:38:38
1341
原创 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
373
原创 2025,每天10分钟,跟我学K8S(二十五)- 对象属性 - Health Check
在Kubernetes中,健康检查是确保集群中容器稳定运行的重要机制。它通过探针(Probe)定期检查容器的健康状态,并根据检查结果采取相应的措施。下面我将详细讲解Kubernetes中的健康检查机制。
2025-03-25 14:29:07
995
原创 2025,每天10分钟,跟我学K8S(二十四)- 对象属性 - Rolling Update
在Kubernetes中, 是一种用于在不中断服务的情况下更新应用程序的策略。它通过逐步替换旧版本的Pods来实现无缝更新。举个例子,一个deployment中有10个nginx1.17版本的pod副本,当想将这个nginx版本进行升级到1.18,我们想的当然是不能所有pod一起更新,最好是能下线一部分,上线一部分,按照这样的轮询,直至将所有的pod更新完毕,以免影响pod的对外服务业务。
2025-03-25 13:50:51
667
原创 2025,每天10分钟,跟我学K8S(二十三)- 对象属性 - HPA
上一篇讲解了Pod的资源限制,那现实情况会出现,当业务流量上涨后,Pod对资源的占用也上涨了。之前分配的资源不够用了。不可能再又手动的去调整yaml文件,重新创建占用更多资源的pod吧?Kubernetes(Pod水平自动伸缩),简称HPA。HAP通过监控分析RC或者Deployment控制的所有Pod的负载变化情况来确定是否需要调整Pod的副本数量,这是HPA最基本的原理。
2025-03-25 11:47:48
528
原创 2025,每天10分钟,跟我学K8S(二十二)- 对象属性 - resources资源限制
在生产环境和测试环境共用node节点的情况下,如果物理资源不够用,不可避免会出现抢占物理资源的情况,在Kubernetes中, 指的是容器或Pod可以使用的计算资源,主要包括CPU和内存。Kubernetes通过资源请求(requests)和资源限制(limits)来管理这些资源。
2025-03-25 11:07:16
346
原创 2025,每天10分钟,跟我学K8S(二十一)- 对象属性 - namespace
在 Kubernetes 中,Namespace(命名空间) 是一种将集群资源划分为多个逻辑组的机制。它主要用于在同一个 Kubernetes 集群中隔离不同项目、团队或环境(如开发、测试、生产)的资源,避免命名冲突,并简化权限和资源的管理。通过Namespace,可以将集群中的资源(如Pod、Service、Volume等)进行逻辑上的隔离,避免命名冲突和资源干扰。
2025-03-25 10:50:04
615
原创 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
588
原创 2025,每天10分钟,跟我学K8S(十九)- Service (二)
前面我们学习了K8S中service对象中ClusterIP和NodePort,今天来学习剩下的两种LoadBalancer和ExternalName。LoadBalancer: 大多是在公有云托管集群中使用。
2025-03-19 20:10:45
141
原创 2025,每天10分钟,跟我学K8S(十八)- Service (一)
Service是K8s中的一种抽象,它定义了一组Pod的逻辑集合,并为这组Pod提供一个稳定的访问点(Endpoint)。这个访问点可以是一个固定的虚拟IP地址或者一个DNS名称,通过这个访问点,其他的应用或服务可以方便地访问到这组Pod,实现服务发现和负载均衡。在K8s中,Pod是最小的可部署单元,而Service则提供了对这些Pod的抽象。使用Service,我们可以将后端Pod组织成一个逻辑单元,而不用担心它们的具体部署细节。这种抽象使得我们可以更加灵活地进行应用的扩展和维护。
2025-03-18 17:00:36
986
原创 2025,每天10分钟,跟我学K8S(十七)- CronJob
如果想要删除当前 Namespace 中的所有 Job,可以通过命令 kubectl delete jobs --all 立刻删除它们。的基础上加上了时间调度,在给定的时间点运行一个任务,也可以周期性地在给定时间点运行。如果设置限制的值为 0,那么相关类型的。字段是Crontab的必须字段,用来指定任务运行的周期,格式就和liunx中的。,表示历史限制,是可选的字段。文件中的一行,它根据配置的时间格式周期性地运行一个。用来指定需要运行的任务,格式当然和。,默认没有限制,所有成功和失败的。
2025-03-18 15:45:50
286
原创 2025,每天10分钟,跟我学K8S(十六)- Job
Job是Kubernetes中的一个核心概念,用于在集群中运行独立的任务。与其他控制器(如ReplicaSet和Deployment)不同,Job关注的是执行一次性任务而不是保持指定数量的实例运行。
2025-03-18 15:33:44
249
原创 2025,每天10分钟,跟我学K8S(十五)- DaemonSet
DaemonSet用于确保在集群的每个节点上都运行一个或多个Pod的副本。与其他控制器(如statefulset和deployment)不同,DaemonSet主要用于在整个集群中的节点上运行系统级别的任务,如日志收集、监控代理等。
2025-03-13 17:03:46
166
原创 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
303
原创 2025,每天10分钟,跟我学K8S(十三)- ReplicaSet
上节课讲述Deployment的时候引入了一个ReplicaSet的东西,也讲解了他是来管理pod的的创建和删除。并且保证pod的数量和我们设置的参数保持一致。本章节来了解下他如何来工作的。
2025-03-13 12:27:57
61
原创 2025,每天10分钟,跟我学K8S(十二)- Deployment
前面2个章节,了解了pod的创建过程和生命周期。但是在实际应用中,直接创建pod是很少见的,因为一旦这个pod挂掉了。整个服务就宕机了。所以 kubernetes 提供了一个Deployment的概念,可以让Deployment来管理一组 POD 的副本,也就是副本集,这样就可以保证一定数量的副本一直可用的,不会因为一个 POD 挂掉导致整个服务挂掉。Deployment是Kubernetes中的一个核心概念,它是一种高级别的控制器,用于管理Pod和ReplicaSet,确保应用程序的高可用性和稳定性。
2025-03-13 12:09:22
533
原创 2025,每天10分钟,跟我学K8S(十一)- POD的生命周期
上节课我们创建了一个pod,成功启动了他。本章节我们来继续了解一下创建pod的其他功能。上节课在第一次拉取镜像的时候,出现了一个报错,如果继续等待,可能会变成,在调整了镜像地址重新拉取之后,状态又变成了Running,这告诉我们,在创建Pod的时候,是有多种状态的。这就叫做pod的生命周期。
2025-03-11 14:34:41
290
原创 2025,每天10分钟,跟我学K8S(十)- POD讲解 (一)
上节课我们学习了YAML的语法,这节课我们来用YAML语法来实际创建一个pod对象,来加深对YAML和POD的理解。首先,先了解下什么是POD?Kubernetes中的Pod是最小调度单元,包含一个或多个共享网络和存储资源的容器。这些容器始终共同调度,通过localhost直接通信,并作为整体进行管理。从下图可以分析出,K8S只管理到POD层级,POD里面又包含了contained、docker等底层容器,但是这就不属于K8S的管理范畴。
2025-03-11 12:04:31
720
原创 2025,每天10分钟,跟我学K8S(九)- YAML讲解
在了解K8S的时候,一定看过一句话 "Pod是kubernetes中最小的资源管理组件,Pod也是最小化运行容器化应用的资源对象。一个Pod代表着集群中运行的一个进程。" 那么怎么去理解这句话呢?
2025-03-10 17:03:40
552
原创 2025,每天10分钟,跟我学K8S(八)- 网络组件Calico
上一篇我们部署了Flannel网络,并且所有的节点状态已经发现了改变,这一篇我们来了解下另外一个网络插件:Calico。在安装calico之前,为了避免2个网络插件的冲突,先卸载掉刚才安装的flannel组件。
2025-03-10 16:52:16
143
原创 2025,每天10分钟,跟我学K8S(七)- 网络组件Flannel
上一篇了解了K8S中有许多的网络组件,Flannel是其中之一,本章节将来学习如何部署。
2025-03-10 14:47:37
144
原创 2025,每天10分钟,跟我学K8S(六)- 网络组件的选择
CNI 是由 CoreOS 提出的一个容器网络规范。已采纳改规范的包括 Apache Mesos, Cloud Foundry, Kubernetes, Kurma 和 rkt。另外 Contiv Networking, Project Calico 和 Weave 这些项目也为 CNI 提供插件。CNI 对外暴露了从一个网络里面添加和剔除容器的接口。CNI 使用一个 json 配置文件保存网络配置信息。和 CNM 不一样,CNI 不需要一个额外的分布式存储引擎。
2025-03-10 13:57:47
980
原创 2025,每天10分钟,跟我学K8S(五)- 搭建k8s(下)
上一篇我们讲解了k8s集群中的master的安装,在本章中我们将加入node节点和安装网络组件。
2025-03-03 23:04:20
918
原创 2025,每天10分钟,跟我学K8S(四)- 搭建k8s(上)
本文初期将使用2台服务器作为k8s集群的节点,资源情况如下,免费服务器来源可以查看第二篇文章。使用kubeadm来搭建属于自己的第一套k8s集群(截止2025年3月,k8s最新版本为1.32.2)
2025-03-03 17:02:58
947
原创 2025,每天10分钟,跟我学K8S(三)- k8s 重要概念
在此之前,已经实际操作了一下真实的K8S环境,但是很多名词和操作都不知道到底是什么东西。所以必须先学习 Kubernetes 的几个重要概念,它们是组成 Kubernetes 集群的基石。下图来自官网,为k8s的一个集群组件概括Kubernetes 集群由控制平面和一个或多个工作节点组成。
2025-03-03 16:21:53
704
原创 2025,每天10分钟,跟我学K8S(二)- 试玩K8S(下)
① k8s中默认创建pod的命令,创建一个为nginx的pod,使用的镜像和版本为后面的华为云地址②kubectl get pod k8s中最常用的命令,用来看创建的pod状态通过 kubectl get pod 命令,可以获知,刚才创建的nginx运行状态为Running,并且重启次数为0,有且只有一个pod在运行。
2025-03-03 15:56:45
12
Oracle静默安装.doc
2015-06-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人