k8s的yaml文件中的kind类型都有哪些?(详述版Part2/2)
目录
综述
分块详述
13、ConfigMap
14、Secret
15、Ingress
16、StorageClass
17、Namespace
18、ServiceMonitor
19、HorizontalPodAutoscaler
20、NetworkPolicy
21、CustomResourceDefinition
22、Role
23、ClusterRole
24、ClusterRoleBinding
25、RoleBinding
26、Endpoint
27、Volume
28、PodSecurityPolicy
29、Event
30、ResourceQuota
31、PriorityClass
32、VolumeSnapshot
综述
通过yaml文件中的kind可以大致了解kubernetes中都有哪些资源类型,但是每一种资源是什么样的?有哪些特性?使用该资源能达到什么效果?本文对照上一篇的清单逐个进行说明,本文是第二部分。
分块详述(接上一篇)
13、ConfigMap
ConfigMap
是一种用于存储配置数据的API对象,可以与Pod的容器和应用程序进行挂载或注入,以便应用程序可以轻松访问配置信息。ConfigMap可以用来存储任何类型的配置数据,例如:环境变量、命令行参数、配置文件、密码和密钥等。
ConfigMap对象具有以下几个重要属性和功能:
-
存储配置数据:ConfigMap可以存储任何类型的配置数据,包括字符串、数字、布尔值、文件和目录等。我们可以通过命令行或API对象来创建、更新和删除ConfigMap。
-
隔离和分离:ConfigMap可以将容器和应用程序的配置数据与Pod的规范和生命周期分离,以提高配置的可重用性和可管理性。我们可以将不同环境、不同应用程序和不同版本的配置数据存储在不同的ConfigMap中,以便于管理和维护。
-
挂载和注入:ConfigMap可以通过
volume
或environment
方式与Pod的容器和应用程序进行挂载或注入,以便应用程序可以轻松访问配置信息。我们可以在容器的volume
或environment
字段中指定ConfigMap的名称和键名,以便将配置数据注入到容器中。
通过使用ConfigMap,可以实现以下目标:
- 存储和管理配置数据,例如环境变量、命令行参数、配置文件、密码和密钥等。
- 提高配置的可重用性和可管理性,以应对不同环境、不同应用程序和不同版本的配置数据的需求。
- 在容器和应用程序中注入或挂载配置数据,以便实现应用程序的自定义和可配置性。
需要注意的是,ConfigMap适用于以标准方式处置的应用程序,这些应用程序在启动时可以从环境变量、命令行参数、配置文件等位置读取配置数据。对于需要密钥、密码和机密信息等数据的应用程序,可以使用Secret
对象来存储和管理。
14、Secret
Secret
是一种用于存储和管理敏感数据的API对象,例如:密码、密钥、证书和令牌等,这些数据在容器和应用程序中可能需要加密或以安全的方式使用。Secret对象可以与Pod的容器和应用程序进行挂载或注入,以便应用程序可以使用这些敏感数据。
Secret对象具有以下几个重要属性和功能:
-
存储敏感数据:Secret可以存储任何类型的敏感数据,例如密码、密钥、证书和令牌等。敏感数据会被加密存储,并且只有在引用这些Secret的Pod和容器中才能解密使用。
-
安全性和加密:Secret中的敏感数据会被加密存储,并且只有具有权限的用户才能访问和解密它们。这样可以确保敏感数据在存储和传输过程中的安全性。
-
挂载和注入:Secret可以通过
volume
或environment
方式与Pod的容器和应用程序进行挂载或注入,以便应用程序可以轻松访问和使用敏感数据。我们可以在容器的volume
或environment
字段中指定Secret的名称和键名,以便将敏感数据注入到容器中。 -
自动管理和轮换:Secret可以通过Kubernetes集群自动管理和轮换敏感数据。例如,可以周期性地更改密码、更新证书等,并自动更新相关的Secret,以确保数据的安全性和一致性。
通过使用Secret,可以实现以下目标:
- 存储和管理敏感数据,例如密码、密钥、证书和令牌等。
- 提供数据加密和访问控制,以确保敏感数据的安全性。
- 在容器和应用程序中注入或挂载敏感数据,以便实现应用程序的安全和可靠性。
- 自动管理和轮换敏感数据,以应对密码更改、证书过期等的需求。
需要注意的是,Secret适用于存储和管理敏感数据,但并不是绝对安全的。重要的是要进行适当的配置和安全措施,以保护Secret对象和存储在其中的敏感数据。
15、Ingress
Ingress
是一种API对象,用于配置和管理集群中的入口流量路由规则。Ingress充当了集群外部流量和服务之间的代理,它能够暴露HTTP和HTTPS服务,并根据路由规则将请求转发到特定的服务和后端Pod。
Ingress对象具有以下几个重要属性和功能:
-
路由规则:Ingress通过定义路由规则,将集群外部的请求转发到相应的服务和Pod。这些路由规则通常基于请求的域名、路径和其他条件进行匹配和转发。
-
负载均衡:Ingress可以与负载均衡器(如Nginx或HAProxy)结合使用,以实现集群内部服务的负载均衡。负载均衡器可以在集群外部与Ingress通信,并将请求动态地分发到后端服务中的多个Pod。
-
TLS和SSL终止:Ingress可以配置和管理TLS和SSL证书,以实现安全的加密通信。证书可以在Ingress中配置,从而让请求在到达后端服务之前进行TLS终止,以确保数据的安全性。
-
扩展性和灵活性:Ingress允许根据不同的需求和场景,灵活地配置和管理多个路由规则和服务。这使得在集群中公开多个HTTP和HTTPS服务变得更加容易。
通过使用Ingress,可以实现以下目标:
- 将集群外部流量路由到正确的服务和Pod,实现服务的外部访问。
- 配置和管理多个路由规则,以支持多个HTTP和HTTPS服务。
- 实现负载均衡,以平衡集群内部服务的请求分发。
- 支持TLS和SSL加密,以确保数据的安全性。
需要注意的是,使用Ingress之前需要部署和配置Ingress控制器,以便实现Ingress对象的功能。Ingress控制器可以是Kubernetes提供的内置控制器,也可以是第三方提供的控制器,如Nginx Ingress Controller或Traefik等。 Ingress控制器负责实现Ingress对象定义的路由规则和功能。
16、StorageClass
StorageClass
是一种用于配置和管理动态存储资源的API对象。它可以协助管理员动态地为Kubernetes集群中的Pod动态地创建虚拟存储卷。StorageClass将存储设备、存储容量、访问模式以及其他配置包装成动态存储类别,使得开发人员可以基于自己的需要和管理员的策略来请求和使用存储资源。
StorageClass对象具有以下几个重要属性和功能:
-
存储策略:StorageClass定义了存储策略和存储类型,以帮助管理员配置和管理存储设备和存储容量。管理员可以根据存储策略设置存储模式、存储类别、存储容量等参数。
-
动态存储配置:通过StorageClass,管理员可以动态地为Kubernetes集群中的Pod创建虚拟存储卷,而不是为每一个Pod提前手动声明预分配的存储卷。使用StorageClass,可以根据需要为每个Pod动态创建访问存储卷。
-
访问模式:StorageClass支持多种访问模式,如ReadWriteOnce(单节点读写)、ReadOnlyMany(多节点只读)、ReadWriteMany(多节点读写)等。使用经过正确配置的StorageClass可以确保Pod可以访问合适的存储类型并且配置正确。
通过使用StorageClass,可以实现以下目标:
- 动态地为Kubernetes集群中的Pod创建虚拟存储卷,避免手动声明预分配的存储资源。
- 针对不同的业务需求和存储设备,对存储卷进行动态分配和管理,以提高存储资源的利用率和可管理性。
- 管理存储的访问模式,以便适应不同的Kubernetes应用程序和场景。
需要注意的是,使用StorageClass之前需要先部署和配置支持动态存储卷的存储供应商和插件,例如CSI(Container Storage Interface)插件、FlexVolume插件、Ceph RBD插件等。只有正确配置和集成这些存储供应商和插件,才能确保StorageClass的可用性和功能。
17、Namespace
Namespace
是用于组织和隔离集群资源的一种虚拟化机制。Namespace允许将集群中的资源划分为多个独立的逻辑区域,从而实现资源的隔离和命名空间的管理。
Namespace提供以下功能:
-
资源隔离:通过使用Namespace,可以将集群中的资源分组并隔离,以防止资源间的冲突和干扰。每个Namespace都有自己的资源列表,包括Pod、Service、ConfigMap、Secret等,它们在同一个Namespace中彼此独立。
-
访问控制:Namespace允许为不同的用户或用户组分配不同的访问权限。可以在Namespace级别上控制对资源的访问权限,并实现资源的细粒度访问控制。
-
命名空间管理:通过创建、删除、列出和修改Namespace,可以对不同的资源进行逻辑分组和管理。Namespace还可以设置配额和限制,以控制和管理资源的使用。
常见的Namespace包括default
(默认Namespace,用于存放没有指定Namespace的资源)、kube-system
(用于存放Kubernetes系统组件的Namespace)、kube-public
(用于存放公共资源的Namespace)等。
使用Namespace的好处包括:
- 资源隔离,避免不同项目或团队之间的资源冲突和干扰。
- 访问控制,控制资源的访问权限,增强安全性。
- 管理和组织资源,便于资源的管理和维护。
需要注意的是,Namespace并不能提供真正的隔离,它只是逻辑上的分组和管理机制。因此,在使用Namespace时仍需注意资源的配额、性能和安全等方面的问题,以确保集群的稳定和安全。
18、ServiceMonitor
ServiceMonitor
是一种用于监控Kubernetes服务(Service)的资源类型。ServiceMonitor定义了Prometheus应该如何抓取和监控具有指定标签的服务。
ServiceMonitor的主要作用是提供一种自动发现和监控Kubernetes服务的机制,以确保Prometheus能够动态地监控由Kubernetes管理的服务的指标数据。
ServiceMonitor具有以下重要属性和功能:
-
目标定义:ServiceMonitor指定了Prometheus应该监控的服务和相关的元数据信息,如服务的标签选择器、端口号、路径、指标的标签等。
-
自动发现:使用ServiceMonitor,Prometheus能够自动发现和监控满足ServiceMonitor定义的服务。Prometheus会通过查询Kubernetes API服务器来动态获取服务的信息,并配置相应的抓取工作。
-
指标抓取:ServiceMonitor定义了Prometheus如何抓取目标服务的指标数据。可以指定服务的访问方式(通过Pod IP、Service IP、Ingress等),端口号,路径等。
-
标签配置:ServiceMonitor可以配置Prometheus在抓取指标时添加、修改或删除的标签。这样可以对抓取的指标数据进行标准化和自定义的处理。
通过使用ServiceMonitor,可以实现以下目标:
- 自动发现和监控Kubernetes服务,避免手动配置和管理Prometheus的监控目标。
- 提供服务级别的监控,以获得关于服务的性能、可用性等指标。
- 支持多个Prometheus实例对同一服务进行监控,以实现水平扩展和负载均衡。
要使用ServiceMonitor,需要先部署和配置Prometheus Operator(或其他类似的运算符)。Prometheus Operator是一个用于管理Prometheus和相关组件的Kubernetes运算符,它提供了在Kubernetes环境中自动配置和管理Prometheus的功能,包括ServiceMonitor的管理和生命周期。
19、HorizontalPodAutoscaler
HorizontalPodAutoscaler
(HPA)是Kubernetes中的一个资源对象,用于自动调整Pod副本数量的工具。HPA根据指标的变化来自动扩展或缩减Pod的副本数量,以适应负载的变化。
HPA的工作原理如下:
-
HPA关联到一个特定的Deployment、ReplicaSet或者StatefulSet对象,它通过观察与该对象关联的指标(如CPU利用率、内存利用率等)来动态调整Pod的副本数量。
-
HPA使用Metric Server或者自定义的指标收集器来获取指标数据。Metric Server是Kubernetes中默认的指标收集器,可以获取节点和容器级别的指标数据。如果需要自定义的指标,可以使用Prometheus Adapter等扩展来进行指标收集。
-
HPA根据指标数据和用户定义的目标值(如平均负载不得超过80%)来计算需要的副本数量。例如,如果指标数据显示负载过高,HPA会自动增加Pod的副本数量;如果指标数据显示负载过低,HPA会自动减少Pod的副本数量。
-
HPA会定期(默认为15秒)进行调整,确保Pod的副本数量与负载需求相匹配。
使用HPA可以带来以下好处:
-
自动伸缩:根据负载自动调整Pod的副本数量,以适应应用程序的需求,提高弹性和稳定性。
-
资源优化:通过根据实际负载需求动态调整副本数量,减少资源浪费,提高资源利用率。
-
简化运维:不再需要手动调整Pod的副本数量,HPA可以自动完成伸缩操作,减少手动干预,简化运维流程。
需要注意的是,使用HPA前必须确保集群中有足够的资源(如CPU、内存)供HPA进行自动扩展。另外,在配置HPA时,需要明确指定目标指标和副本数量的范围,避免过度扩展或缩减导致的问题。
20、NetworkPolicy
NetworkPolicy
是Kubernetes中的一种资源对象,用于控制Pod之间和Pod与外部网络之间的流量访问规则。NetworkPolicy可以定义允许或禁止特定网络流量的策略,以增强Kubernetes集群的网络安全性。
NetworkPolicy的主要功能包括:
-
流量选择器:NetworkPolicy可以通过标签选择器选择要应用的Pod,从而定义适用于特定Pod或Pod组的流量规则。
-
端口和协议规则:NetworkPolicy可以定义允许或拒绝的端口号和协议类型,以控制进出Pod的流量。
-
源IP和目标IP规则:NetworkPolicy可以通过IP地址或地址块来指定允许或拒绝的源IP和目标IP,以限制流量的来源和去向。
-
传入和传出规则:NetworkPolicy可以定义传入和传出网络流量的规则,以控制Pod之间和Pod与外部网络之间的通信。
通过使用NetworkPolicy,可以实现以下目标:
-
网络隔离:限制Pod之间的通信,只允许指定的流量通过,防止未经授权的访问和横向扩展。
-
精细访问控制:根据源IP、目标IP、端口和协议类型等明确规定网络流量的访问策略,提高网络安全性。
-
多租户隔离:允许在多租户环境中为不同的Pod组应用不同的网络流量访问规则,实现租户之间的网络隔离。
需要注意的是,使用NetworkPolicy前必须确保集群中的网络插件(如Calico、Cilium等)支持NetworkPolicy,并已正确配置。另外,NetworkPolicy只能在支持该功能的网络插件中生效,在不支持的网络插件或云提供商环境中,NetworkPolicy可能无法生效。
21、CustomResourceDefinition
CustomResourceDefinition
(CRD)是Kubernetes中的一种扩展机制,用于定义自定义的资源类型和其对应的CRD对象。CRD允许用户扩展Kubernetes API,以适应特定的业务需求,实现自定义资源的管理和操作。
在使用CRD之前,Kubernetes提供了一些内置的资源类型,如Pod、Deployment、Service等。但是,这些内置资源类型可能无法满足某些特定的业务场景或需求。通过使用CRD,用户可以定义自己的资源类型,并基于这些资源类型创建和管理自定义的资源对象。
CRD的主要特点和作用包括:
-
定义自定义资源:CRD允许用户定义自己的资源类型,比如Ingress、ConfigMap、Operator等,以扩展Kubernetes API,满足特定的业务需求。
-
验证CRD对象:CRD可以定义CRD对象的结构和验证规则,确保CRD对象的合法性和一致性。
-
自定义控制器和操作:用户可以编写自定义控制器和操作,以处理和管理CRD对象的生命周期和行为。
-
命名和版本管理:CRD允许用户给自定义资源类型分配唯一的名称和版本,便于标识和管理。
通过使用CRD,用户可以轻松地扩展Kubernetes API,基于自定义的资源类型构建更适合自身需求的应用和平台。CRD的使用广泛,许多Kubernetes生态系统中的扩展功能和工具,如Prometheus Operator、Istio、Helm等,都基于CRD实现自定义资源的定义和管理。
22、Role
Role
是Kubernetes中的一种授权机制,用于控制用户和服务账户在命名空间内对特定资源的操作权限。Role定义一组权限,以规定在特定命名空间内允许哪些操作,包括访问、更新和删除等操作。
Role采用基于角色的访问控制(RBAC)的方式,允许管理员按照不同的角色,为不同的用户和服务账户分配特定的操作权限,提高集群安全性和管理效率。
Role主要包括以下几个方面:
-
分配权限:通过定义一组权限,Role可以限制用户或服务账户在特定命名空间内对资源的访问、更新和删除等操作。
-
绑定策略:Role可以通过绑定策略定义哪些用户或服务账户可以使用该Role,以实现特定任务的授权操作。
-
命名空间限制:Role只在指定的命名空间内生效,避免跨命名空间的权限混淆和误用。
通过使用Role,管理员可以灵活地控制不同用户或服务账户的操作权限,实现访问控制的细粒度管理。需要注意的是,为了保证安全,管理员应该遵循最小特权原则,只授予必要的权限,并在不需要时及时撤销权限。
23、ClusterRole
ClusterRole
是Kubernetes中的一种授权机制,用于控制用户和服务账户在整个集群范围内对特定资源的操作权限。与Role
只在命名空间内生效不同,ClusterRole
在整个集群中生效,可以跨越多个命名空间。
ClusterRole与Role的定义和使用方式很相似,但ClusterRole的作用范围更广,它适用于控制集群级别的资源和操作权限。
ClusterRole的特点包括:
-
集群范围:ClusterRole在整个集群中生效,可以用于控制集群级别的资源和操作权限。
-
分配权限:通过定义一组权限,ClusterRole可以限制用户或服务账户对集群范围内资源的访问、更新和删除等操作。
-
绑定策略:ClusterRole可以通过绑定策略定义哪些用户或服务账户可以使用该ClusterRole,以实现特定任务的授权操作。
与Role类似,ClusterRole也采用基于角色的访问控制(RBAC)的方式进行授权。管理员可以根据需要创建和分配适当的ClusterRole,控制集群内用户和服务账户的权限,确保集群安全和管理的可控性。
需要注意的是,使用ClusterRole需要管理员具备足够的权限,同时也需要小心审查并遵循最小特权原则,避免授予不必要的权限。
24、ClusterRoleBinding
ClusterRoleBinding
是Kubernetes中的一种授权机制,用于将ClusterRole
与用户、组或服务账户进行绑定,赋予其在整个集群范围内特定资源的操作权限。
ClusterRoleBinding的作用是将ClusterRole与具体的主体(用户、组或服务账户)进行关联,从而赋予被绑定主体在集群级别的权限。被绑定主体可以是集群内已存在的用户、组或服务账户,也可以是在集群外定义的身份提供者。
ClusterRoleBinding的主要特点包括:
-
集群范围:ClusterRoleBinding在整个集群中生效,可以用于控制集群级别的资源和操作权限。
-
绑定ClusterRole:ClusterRoleBinding用于将ClusterRole与具体的主体进行绑定,赋予其特定资源的操作权限。
-
授权集群内和集群外实体:ClusterRoleBinding可以绑定已存在的集群内用户、组或服务账户,也可以绑定集群外的身份提供者,如LDAP或OIDC等。
通过使用ClusterRoleBinding,管理员可以精确地控制不同用户、组或服务账户在集群范围内的权限,实现RBAC的细粒度访问控制。管理员应根据需要合理创建和绑定ClusterRoleBinding,确保权限的正确分配和安全可控。
需要注意的是,ClusterRoleBinding的定义和使用需要具备足够的权限,同时也需要小心审查并遵循最小特权原则,避免授予不必要的权限。
25、RoleBinding
RoleBinding
是Kubernetes中的一种授权机制,用于将Role
与用户、组或服务账户进行绑定,赋予其在命名空间内特定资源的操作权限。
RoleBinding的作用是将Role与具体的主体(用户、组或服务账户)进行关联,从而赋予被绑定主体在命名空间内的权限。被绑定主体可以是命名空间内已存在的用户、组或服务账户,也可以是在命名空间外定义的身份提供者或角色。
RoleBinding的主要特点包括:
-
命名空间范围:RoleBinding只在特定的命名空间内生效,可以用于控制命名空间内特定资源和操作权限。
-
绑定Role:RoleBinding用于将Role与具体的主体进行绑定,赋予其特定资源的操作权限。
-
授权命名空间内和命名空间外实体:RoleBinding可以绑定已存在的命名空间内用户、组或服务账户,也可以绑定命名空间外的身份提供者或角色。
通过使用RoleBinding,管理员可以精确地控制不同用户、组或服务账户在命名空间范围内的权限,实现RBAC的细粒度访问控制。管理员应根据需要合理创建和绑定RoleBinding,确保权限的正确分配和安全可控。
需要注意的是,RoleBinding的定义和使用需要具备足够的权限,同时也需要小心审查并遵循最小特权原则,避免授予不必要的权限。
26、Endpoint
Endpoint
指的是服务的网络终点。它表示服务的IP地址和端口,用于将流量传递到服务的后端Pod。
Endpoint是Kubernetes Service的一部分,用于动态地将请求路由到Service关联的Pod。当Service创建或删除相关的Pod时,Endpoint会相应地自动更新。
Endpoint主要包含以下信息:
-
IP地址:Endpoint定义了一个或多个后端Pod的IP地址。这些IP地址可以是Pod的集群IP或Node的IP,用于访问提供服务的Pod。
-
端口:Endpoint还定义了要访问的Pod的端口号,用于确定请求应该传递到Pod上的哪个端口。
通过将Service和Endpoint结合起来,Kubernetes可以提供服务发现机制,自动将请求传递到后端Pod上。当Service被创建时,Kubernetes会创建一个相应的Endpoint对象,并根据标签选择器将相关的Pod IP和端口信息添加到Endpoint中。这样,访问Service的请求会被路由到对应的Pod上,实现负载均衡和高可用性。
需要注意的是,Endpoint是由Kubernetes自动管理的,一般不需要手动干预。它在服务发现和流量路由方面起到了重要的作用,使得服务能够以统一的方式被访问和使用。
27、Volume
Volume
指的是一种抽象概念,用于管理Pod中的数据存储。Volume提供了一种可插拔的机制,使得Pod可以使用不同类型的存储介质,并以统一的方式进行访问和使用。
Kubernetes支持多种类型的Volume,包括但不限于:
-
空白卷:空白卷是未进行初始化的Volume,可以在Pod中挂载后自行初始化。
-
基于文件的Volume:基于文件的Volume可以从一个或多个文件中初始化,并被挂载到Pod中。
-
基于目录的Volume:基于目录的Volume可以从一个或多个目录中初始化,并被挂载到Pod中。
-
空目录卷:空目录卷是一个新的目录,可以在Pod中挂载后使用。
除了以上的常见Volume类型,Kubernetes还支持许多其他的Volume类型,如网络存储卷、主机路径卷、永久卷等。
Volume可以实现数据的持久化,允许Pod中的容器在数据存储层面上进行交互和共享。同时,Volume还可以在容器和宿主机之间提供一个共享文件系统,以实现容器之间的数据共享。
需要注意的是,Volume本身是与Pod绑定的,当Pod被删除时,Volume也会被删除。因此,如果需要保留数据,可以使用一些持久化Volume类型,如永久存储卷(PersistentVolume),将数据保存到持久化存储中。
28、PodSecurityPolicy
PodSecurityPolicy
(Pod 安全策略)是 Kubernetes 中用于定义和限制 Pod 安全配置的策略对象。PodSecurityPolicy 允许集群管理员控制哪些容器可以运行以及运行这些容器时可以使用的安全特性。
通过 PodSecurityPolicy,管理员可以指定一系列的安全约束条件,包括但不限于以下方面:
-
privileged
访问:管理员可以限制是否允许容器具有特权级别的访问,这可以防止容器绕过安全机制并访问主机系统。 -
用户和组设置:管理员可以指定哪些用户或用户组可以运行特权容器,以及谁可以使用特定的用户 ID 和组 ID。
-
文件系统和挂载点限制:可以限制容器只能在特定路径上读取、写入或挂载文件系统,以限制对宿主机系统的访问权限。
-
网络策略:管理员可以设置网络策略,限制容器的网络访问范围,以及容器间和容器与宿主机之间的网络通信。
-
Linux 安全功能:管理员可以限制容器对 Linux 安全功能(如 AppArmor 和 SELinux)的访问权限。
通过使用 PodSecurityPolicy,管理员可以实现对 Pod 的安全性进行细粒度的控制和强化,确保集群中运行的容器遵守所定义的安全策略。需要注意的是,要使用 PodSecurityPolicy,需要 Kubernetes 集群已经启用了相应的特性 gatekeeper。
29、Event
在 Kubernetes 中,Event
(事件)是用于记录集群中发生的一些重要状态变化的对象。它提供了一种日志记录机制,用于跟踪和监控集群内部发生的事件和操作。
事件记录了系统中的各种操作和状态变化,例如:
- Pod 的创建、启动、停止等事件;
- 节点的加入、离开集群等事件;
- 服务的创建、更新、删除等事件;
- 持久卷的创建、绑定、释放等事件。
事件对象中通常包含以下信息:
Type
:事件类型,例如 Normal(正常事件)或 Warning(警告事件)。Reason
:事件发生的原因或触发的操作。Message
:事件的详细描述信息。Timestamp
:事件发生的时间戳。Related object
:与事件相关的对象,如 Pod、节点或服务等。
通过查看和监视事件,管理员和开发人员可以了解集群中的运行状况、操作历史和状态变化,帮助快速发现和解决问题。例如,如果一个 Pod 失败了,相关的事件记录可以提供有关失败的详细信息,用于排查故障和进行故障恢复。
可以使用 kubectl
命令查看和过滤事件,也可以通过 Kubernetes API 查询事件对象并进行进一步处理和分析。事件记录通常可以与日志记录和监控系统集成,以提供完整的集群状态和性能分析。
30、ResourceQuota
ResourceQuota
(资源配额)是 Kubernetes 中用于限制命名空间(Namespace)内资源使用的对象。它可以用来确保每个命名空间中的应用程序和资源按照设定的限制进行分配和使用。
ResourceQuota 可以限制以下资源的使用:
Compute
资源:如 CPU(CPU 利用率)和 Memory(内存使用量)。Storage
资源:如持久卷(PersistentVolume)的存储容量。Object
资源:如允许创建的 Pod 的数量或 Service 的数量等。
可以通过定义 ResourceQuota 对象来设置资源的限制,并将其应用于特定的命名空间。一旦设置了 ResourceQuota,Kubernetes 将会监视资源使用情况,并确保在命名空间中的资源使用不超过设置的限制。
当命名空间中的资源使用超出 ResourceQuota 的限制时,Kubernetes 可以采取以下行动:
Reject
:拒绝创建新的资源。Terminate
:终止超出限制的资源。Notation
:发出警告通知,但不阻止资源的创建。
ResourceQuota 可以与其他 Kubernetes 的资源管理机制(如 LimitRange)结合使用,以实现更精细的资源管理和控制。通过 ResourceQuota,管理员可以有效地管理资源,防止应用程序的资源争用和耗尽,并确保公平分配每个命名空间的资源。
31、PriorityClass
PriorityClass
(优先级类)是 Kubernetes 中一种调度机制,用于为 Pod 分配优先级。这个对象用于设置优先级类,以指定 Pod 的优先级和重要性,便于 Kubernetes 在资源紧缩时进行决策。
在 Kubernetes 中,所有的 Pod 都应归属于某个优先级类。Pod 的优先级和重要性通常决定了它被调度的顺序和资源分配情况,较高的优先级的 Pod 将有更高的调度优先级,而较低的 Pod 则可能被推迟调度甚至被拒绝调度。
PriorityClass 可以设置以下参数:
Name
:优先级类名称。Value
:优先级值,取值范围为 0~1000000000,默认为 0。GlobalDefault
:是否为全局默认,如果选择设置为全局默认,则所有未设置 PriorityClass 的 Pod 将采用此类的优先级。Description
:对优先级类的简要说明和描述。
使用 PriorityClass,管理员可以根据资源需求和其他通用需求,为不同类型的 Pod 定义不同的优先级类,并根据需要为其他非默认优先级类的 Pod 设置该优先级类。这些优先级类将帮助 Kubernetes 更好地决策资源调度和分配,并为必要的资源冲突提供帮助。
32、VolumeSnapshot
VolumeSnapshot
(卷快照)是 Kubernetes 中用于创建持久卷(PersistentVolume)或持久卷声明(PersistentVolumeClaim)的快照的对象。它提供了一种在不中断应用程序运行的情况下,对存储卷进行备份和还原的机制。
VolumeSnapshot 可以被用来创建持久卷的一致快照,以便在需要时重新创建或还原数据。通过卷快照可以实现以下功能:
- 数据备份:创建卷的快照可以用于定期备份数据,以防止数据意外丢失或损坏。
- 数据恢复:当需要还原数据时,可以使用卷快照来重新创建卷,从而恢复到先前的状态。
- 数据复制:可以使用卷快照来复制卷,以便在不同的环境中使用相同的数据。
使用 VolumeSnapshot 需要满足以下条件:
- 存储类插件:需要使用支持快照功能的存储插件(如CSI Driver)。
- 快照控制器:需要一个运行中的卷快照控制器来管理卷的快照生命周期。
一旦满足上述条件,可以通过创建 VolumeSnapshot 对象来触发卷的快照操作。VolumeSnapshot 对象定义了要创建快照的目标持久卷,以及快照的元数据信息。创建快照后,可以通过使用 VolumeSnapshotContent 对象来查看和操作卷的快照数据。
需要注意的是,VolumeSnapshot API 通常是由持久卷插件和存储厂商提供的自定义实现。因此,在使用 VolumeSnapshot 功能之前,需要了解底层存储插件的支持和使用方法。
相关文章:
k8s的yaml文件中的kind类型都有哪些?(详述版Part2/2)
目录 综述 分块详述 13、ConfigMap 14、Secret 15、Ingress 16、StorageClass 17、Namespace 18、ServiceMonitor 19、HorizontalPodAutoscaler 20、NetworkPolicy 21、CustomResourceDefinition 22、Role 23、ClusterRole 24、ClusterRoleBinding 25、RoleBindi…...
什么是API网关代理?
带有API网关的代理服务显着增强了用户体验和性能。特别是对于那些使用需要频繁创建和轮换代理的工具的人来说,使用 API 可以节省大量时间并提高效率。 了解API API(即应用程序编程接口)充当服务提供商和用户之间的连接网关。通过 API 连接&a…...
AWS Simple Email Service (SES) 实战指南
Amazon Simple Email Service (SES) 是一项强大的电子邮件发送服务,适用于数字营销、应用程序通知以及事务性邮件。在这个实战指南中,我们将演示如何设置 AWS SES 并通过几个示例展示其用法。 设置 AWS SES 1. 创建 AWS 账户 首先,您需要创…...
详解Oracle数据库的启动
Oracle数据库的启动,其概念可参考Overview of Instance and Database Startup。 其过程可参见下图: 当数据库从关闭状态进入打开数据库状态时,它会经历以下阶段。 阶段Mount状态描述1实例在没有挂载数据库的情况下启动实例已启动ÿ…...
2024年跨境电商上半年营销日历,建议收藏
2024年伊始,跨境电商开启新一轮的营销竞技,那么首先需要客户需求,节假日与用户需求息息相关,那么接下来小编为大家整理2024上半年海外都有哪些节日和假期?跨境卖家如何见针对营销日历选品,助力卖家把握2024…...
Go采集1688网站数据对比商品价格
最近看了下多多和1688的一些商品价格,发现好多店铺都是无货源拿货一件发货,这就导致层层叠加价格翻了不知道几倍,真所谓多花钱办的事还是一样,因此,今天我就通过一个爬虫程序监控对应商品价格,了解行业龙头…...
Java泛型:灵活多变的类型参数化工具
👑专栏内容:Java⛪个人主页:子夜的星的主页💕座右铭:前路未远,步履不停 目录 一、泛型1、什么是泛型2、泛型的语法 二、泛型类的使用1、泛型类的语法2、泛型如何编译的2.1、擦除机制2.2、为什么不能实例化泛…...
java 体育明星管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目
一、源码特点 java Web 体育明星管理系统是一套完善的java web信息管理系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发,数据库为Mysq…...
蓝凌EIS智慧协同平台 ShowUserInfo.aspx sql注入漏洞
漏洞描述: 蓝凌EIS智慧协同平台是一个简单、高效的工作方式专为成长型企业打造的沟通、协同、社交的移动办公平台,覆盖OA、沟通、客户、人事、知识等管理需求,集合了非常丰富的模块,满足组织企业在知识、项目管理系统建设等需求的…...
React Hooks的useState、useRef使用
React Hooks 是 React 16.8 版本引入的新特性,它允许你在不编写 class 的情况下使用 state 和其他 React 特性。其中,useState 和 useRef 是两个常用的 Hooks。 1. useState useState 是一个允许你在函数组件中添加 state 的 Hook。 使用说明…...
Linux--防火墙,实验案例:基于区域、服务、端口的访问控制
实验环境 某公司的Web服务器,网关服务器均采用Linux CentOS 7.3操作系统,如图2.13所示。为了 加强网络访问的安全性,要求管理员熟悉firewalld防火墙规则的编写,以便制定有效、可行的主机防护策略。 需求描述 > 网关服务器ens3…...
C++学习笔记(二十八):c++ 静态库及动态库的使用
静态库的使用 库的使用会很大程度减少我们的工作,本节对c中静态库和动态库的使用进行简单的介绍。静态链接库意味着这个库会被放到可执行文件中,在生成的exe中。动态链接库是在程序运行时链接的,可以在程序运行时调用加载库函数的方法来实现&…...
uniapp最简单的底部兼容安全区域显示
效果图: 1.html写上动态padding-bottom <view class"button-wrap" :style"padding-bottom:bottomPaddingrpx"><view class"com-btn cencel-btn">取消</view><view class"com-btn confirm-btn " cl…...
图像去噪——CBDNet网络训练自己数据集及推理测试,模型转ONNX模型(详细图文教程)
CBDNet 主要由两个子网络组成:噪声估计子网络和去噪子网络。噪声估计子网络用于估计图像的噪声水平,而去噪子网络用于去除图像中的噪声。 CBDNet 的优势在于: 它采用了更真实的噪声模型,既考虑了泊松-高斯模型,还考虑…...
【Verilog】期末复习——解释下列名词(FPGA、ASIC、IP、RTL、EDA、HDL、FSM)
系列文章 数值(整数,实数,字符串)与数据类型(wire、reg、mem、parameter) 运算符 数据流建模 行为级建模 结构化建模 组合电路的设计和时序电路的设计 有限状态机的定义和分类 期末复习——数字逻辑电路分…...
计算机网络 综合(习题)
【计算机网络习题】系列文章目录 计算机网络 第一章 绪论(习题) 计算机网络 第二章 计算机网络体系结构(习题) 计算机网络 第三章 应用层(习题) 计算机网络 第四章 运输层(习题) 计算机网络 第五章 网络层(习题) 计算机网络 第六章 数据链路层(习题) 计算机网络 第七章 物…...
探索vue2框架的世界:简述常用的vue2选项式API (二)
组件实例 👉 $attrs 用于父组件隔代向孙组件传值 长设置在子组件中 v-bind"$attrs" (Vue2.4) parent.vue (父组件) <template><div class"outer"><h3>父组件</h3>名字:<input v-model"name"…...
云计算:OpenStack 分布式架构管理FLAT网络(单控制节点与多计算节点)
目录 一、实验 1.环境 2.控制节点创建网络 3.控制节点创建规格 4.控制节点新增安全组入口规则 5.控制节点创建实例 二、问题 1.FLAT网络底层如何实现 2.无法SSH 云主机实例 一、实验 1.环境 (1) 主机 表1 主机 主机架构IP备注controller控制节点192.168.204.210已部…...
【深度学习】cv领域中各种loss损失介绍
文章目录 前言一、均方误差二、交叉熵损失三、二元交叉熵损失四、Smooth L1 Loss五、IOU系列的loss 前言 损失函数是度量模型的预测输出与真实标签之间的差异或误差,在深度学习算法中起着重要作用。具体作用: 1、目标优化:损失函数是优化算法…...
2024年,为什么学网络安全找不到工作?这才是重要原因!
为什么网络安全人才缺口那么大,但很多人还是找不到工作?其实大家都忽略了1个重点,那就是不清楚企业在招什么样的人。 我花了2天的时间统计了主流招聘网站的岗位信息,发现了一个惊人的真相,那就是企业都喜欢招这3种人&a…...
很有用!小企业如何从零开始制作产品手册?
对于初创公司和小企业来说,创造一份高效、吸引人的产品手册可能不是特别简单,特别是当资源和预算有限的时候。然而,一份良好的产品手册可以帮助你传达你的品牌故事,展示你的产品,甚至可以帮助你提高销售额,…...
基于OpenCV的图像缩放
基础概念 缩放是将图像的尺寸变小或变大的过程,即减少或增加原图像数据的像素个数,或者说通过增加或删除像素点来改变图像的尺寸; 基本原理:将分辨率(图片尺寸)为(w,h)的图像,缩放后其图像分辨…...
基于长短期神经网络LSTM的测量误差预测
目录 背影 摘要 代码和数据下载:基于长短期神经网络LSTM的测量误差预测(代码完整,数据齐全)资源-CSDN文库 https://download.csdn.net/download/abc991835105/88714812 LSTM的基本定义 LSTM实现的步骤 基于长短期神经网络LSTM的测量误差预测 结果分析 展望 参考论文 背影 …...
`package.json`也可以有注释了
众所周知,JSON文件是不支持注释的,除了JSON5/JSONC之外,我们在开发项目特别是前端项目时,大量会用到JSON文件,特别是在编写package.json中的scripts时,由于缺少注释,当有大量的命令脚本时,就有了…...
数学之何为数学
数学是什么 数学是绝大多数人学得最多的一门功课,但对于“数学是什么?”这一看来很普通的问题,却很难一下子给出一个使公众满意的回答。按照恩格斯的说法,数学是以现实世界的空间形式和数量关系为研究对象的。尽管人们现在对空间…...
docker容器内,将django项目数据库改为postgresql
容器为ubuntu20.04版本,新建了一套django项目,使用的默认sqllit3,换为postgresql,容器里安装postgresql方法 步骤1: 安装PostgreSQL数据库 # 打开一个bash会话在你的容器中 docker exec -it <container_id_or_name> bash#…...
【echarts】雷达图参数详细介绍
1. 详细示例 var option {tooltip: {trigger: item},radar: {startAngle: 90,//第一个指示器轴的角度,默认90indicator: [// 指示器{ name: Category A, max: 220 },// name:指示器名称{ name: Category B, max: 200 },// max:指示器的最大值,可选&…...
网络安全试题进阶——附答案
选择题 什么是CSRF攻击的全称? A. Cross-Site Request ForgeryB. Cross-Site ScriptingC. Credential Sniffing and Retrieval ForceD. Cyber Security and Risk Framework 哪种安全攻击利用用户的社交工程,诱使他们点击似乎是合法链接的恶意链接&#x…...
二刷Laravel 教程(构建页面)总结Ⅰ
L01 Laravel 教程 - Web 开发实战入门 ( Laravel 9.x ) 一、功能 1.会话控制(登录、退出、记住我) 2.用户功能(注册、用户激活、密码重设、邮件发送、个人中心、用户列表、用户删除) 3.静态页面(首页、关于、帮助&am…...
C++|19.C++类与结构体对比
类和结构体 类和结构体本质上并没有太大区别。 但两者在默认上有所区别。 类默认成员变量是私有的,而结构体默认成员变量是公有的。 也就是说,对于一个类来说,会默认使用private去保护其内部成员变量使得无法直接访问到其内部的变量。 同时从…...
网站水印怎么做的/网站优化推广公司
一. JMeter介绍 Apache JMeter是100%纯JAVA桌面应用程序,被设计为用于测试客户端/服务端结构的软件(例如web应用程序)。它可以用来测试静态和动态资源的性能,例如:静态文件,Java Servlet,CGI Scripts,Java Object,数据库和FTP服务…...
林州网站建设/免费建站系统哪个好用吗
NSArray的一些用法 NSArray只允许装OC对象,并且不能装空值,空代表数组元素的结束 #pragma mark - NSArray的基本用法 // 创建一个空数组 NSArray *array [NSArray array]; // 创建有一个元素的数组 array [NSArray arrayWithObject:"123"]; …...
网站策划用培训吗/深圳网络推广引流
引言 50 多年前激光技术的发展催生了光探测和测距 (LIDAR) 系统,该系统在距离计算方式上取得了突破。LIDAR 的原理与雷达使用的原理非常相似。主要区别在于雷达系统检测物体反射的无线电波,而激光雷达使用激光信号。这两种技术通常采用相同类型的飞行时间…...
wordpress多个主题/广州灰色优化网络公司
老刘的一半是唯物主义,另一半是唯心主义。 平衡与否要用唯心主义的一半来解释,那是一种心态。 这种心态取决于你所处的环境,更取决于你的欲望,欲望,很多都是来自于性格。 在“劳心者”之中,纯粹为生活&…...
江苏省义务教育标准化建设网站/360指数查询工具
0.Manjaro启动U盘的制作 推荐使用4-16G容量的U盘,避免兼容性问题(U盘太大可能会无法启动)。 用rufus就可以,注意选用DD模式才能成功制作(默认是hyperiso)。 如果在linux环境里,先用sudo fdisk -…...
做网站什么价格/seo综合查询网站
原由 这几天在网上随便找了个简洁的接口框架,没想到简洁得过头了。没有配置文件,没有数据库调取,也没有单独的控制器,模型模块。然后自己一通的封装。用着倒是没问题,只是太多的文件引用了。显得很Low。于是想到了自动…...