K8S中的核心概念

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: 【10月更文挑战第26天】云原生环境下的安全问题易被忽视,导致潜在风险。应用层渗透测试和漏洞扫描是检测安全的关键,尤其是对于CVE漏洞的修复。然而,常见误解认为安全由外部防护处理且不易引入问题。

k8s资源对象可以用yaml或者json格式声明。每个资源对象都有自己的特定结构定义,并统一保存在etcd这种非关系型数据库中。资源对象可以通过k8s提供的工具kubectl工具进行增删改。

1、主要资源

  • Pod:Pod是Kubernetes创建或部署的最小/最简单的基本单位,一个Pod代表集群上正在运行的一个进程。
  • ReplicaSet:它的主要作用是确保Pod以用户指定的副本数运行,即如果有容器异常退出,会自动创建新的Pod来替代;而异常多出来的容器也会自动回收。
  • Deployment:Deployment定义了一组Pod的信息。Deployment的主要职责与RC相似,同样是为了保证pod的数量和健康。此外还支持滚动升级、回滚等多种升级方案。
  • DaemonSet:DaemonSet确保全部(或者某些)节点上运行一个Pod的副本。当有节点加入集群时,也会为他们新增一个Pod。当有节点从集群移除时,这些Pod也会被回收。
  • Job:批处理任务通常并行(或串行)启动多个计算进程去处理一批工作项(work item),处理完成后,整个批处理任务结束。
  • CronJob:CronJob即定时任务,类似于Linux系统的crontab,在指定的时间周期运行指定的任务
  • StatefulSet:StatefulSet里的每个Pod都有稳定、唯一的网络标识,可以用来发现集群内的其他成员。

2、Pod配置

  • ConfigMap:ConfigMap存储Pod的配置文件。
  • Secret:加密数据存储。

3、存储类

  • PersistentVolume:声明容器中可以访问的文件目录,被挂载到一个或多个Pod上。并且支持多样的存储类型。
  • PersistentVolumeClaim:处理集群中的存储请求,绑定特定的pv,将请求进行存储
  • StorageClass:StorageClass对象会定义下面两部分内容:
  • PV的属性,如存储类型、Volume的大小等。
  • 创建这种PV需要用到的存储插件。有了这两个信息后,Kubernetes就能够根据用户提交的PVC找到一个对应的StorageClass,之后Kubernetes就会调用该StorageClass声明的存储插件,进而创建出需要的PV。但是其实使用起来是一件很简单的事情,只需要根据自己的需求编写YAML文件,然后使用kubectl create命令执行即可。

4、网络资源类

  • Ingress:Ingress对象其实就是对“反向代理”的一种抽象,简单的说就是一个全局的负载均衡器,可以通过访问URL定位到后端的Service。有了Ingress这个抽象,k8s就不需要关心Ingress的细节了,实际使用时,只需要选择一个具体的Ingress Controller部署即可,业界常用的反向代理项目有Nginx、HAProxy、Envoy和Traefik,都已经成为了k8s专门维护的Ingress Controller。
  • Service:Service是一种抽象概念,它定义了一个Pod逻辑集合及访问它们的方式。支持ClusterIp、NodePort和LoadBalancer。
  • Endpoint:Endpoint是k8s集群中的一个资源对象,存储在etcd中,用来记录一个Service对应的所有Pod的访问地址。
  • NetworkPolicy:Network Policy提供了基于策略的网络控制,用于隔离应用并减少攻击面。它使用标签选择器模拟传统的分段网络,并通过策略控制它们之间的流量及来自外部的流量。

5、集群

  • Cluster:k8s集群。
  • Master:k8s控制面板,主服务。
  • Node:k8s集群里的worker节点。
  • ETCD:k8s数据库。
  • Service Account:service account是k8s为Pod内部的进程访问apiserver创建的一种用户。其实在Pod外部也可以通过sa的token和证书访问apiserver,不过在Pod外部一般都是采用client证书的方式
  • User:k8s集群的用户。
  • Group:用户组。
  • Role:Role是一组权限的集合,如Role可以包含列出Pod权限及列出Deployment权限,Role用于给某个NameSpace中的资源进行鉴权。
  • ClusterRole:ClusterRole是一组权限的集合,但与Role不同的是,ClusterRole可以在包括所有NameSpce和集群级别的资源或非资源类型进行鉴权。
  • ClusterRoleBinding:可以使用ClusterRoleBinding在集群级别和所有命名空间中授予权限。
  • RoleBinding:RoleBinding将Role中定义的权限分配给用户和用户组。RoleBinding包含主题(users、groups或service accounts)和授予角色的引用。对于namespace内的授权使用RoleBinding,集群范围内使用ClusterRoleBinding。
  • Namespace:Kubernetes支持多个虚拟集群,它们底层依赖于同一个物理集群。这些虚拟集群被称为命名空间。

6、集群配置

  • LimitRange:资源配额是对整个名称空间的资源的总限制,是从整体上来限制的,而LimitRange则是对Pod和Container级别来做限制的。
  • Quota:其中ResourceQuota是针对namespace做的资源限制,而LimitRange是针对namespace中的每个组件做的资源限制。
  • HorizontalPodAutoscaler:Horizontal Pod Autoscaling可以根据CPU使用率或应用自定义metrics自动扩展Pod数量(支持replication controller、deployment和replica set)。

7、Master组件

  • k8s API Server:k8s API Server提供了k8s各类资源对象(如Pod、RC、Service等)的增删改查及watch等HTTP Rest接口,是整个系统的数据总线和数据中心。
  • Controller Manager:Controller Manager作为集群内部的管理控制中心,负责集群内的Node、Pod副本、服务端点(Endpoint)、命名空间(Namespace)、服务账号(Service Account)、资源定额(ResourceQuota)的管理。
  • Scheduler:管家的角色遵从一套机制为Pod提供调度服务,如基于资源的公平调度、调度Pod到指定节点,或者将通信频繁的Pod调度到同一节点等。
  • Cloud Controller Manager:Cloud Controller Manager提供Kubernetes与阿里云基础产品的对接能力,如CLB、VPC等。目前,CCM的功能包括管理负载均衡、跨节点通信等。
  • Kubelet:Kubelet组件运行在Node节点上,维持运行中的Pods提供kubernetes运行时环境。
  • Kube-proxy:kube-proxy是Kubernetes的核心组件,部署在每个Node节点上,它是实现Kubernetes Service的通信与负载均衡机制的重要组件;kube-proxy负责为Pod创建代理服务,从apiserver获取所有Server信息,并根据Server信息创建代理服务,实现Server到Pod的请求路由和转发,从而实现k8s层级的虚拟转发网络。
相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
6月前
|
Kubernetes 负载均衡 Perl
kubernetes—五个概念入门(二)
kubernetes—五个概念入门(二)
120 0
|
6月前
|
Kubernetes 应用服务中间件 数据中心
kubernetes—五个概念入门(一)
kubernetes—五个概念入门(一)
127 0
|
3月前
|
Kubernetes 调度 Perl
在K8S中,Pod亲和性概念是什么?
在K8S中,Pod亲和性概念是什么?
|
1月前
|
Kubernetes 持续交付 微服务
深入浅出:理解 Kubernetes 核心概念
Kubernetes 是一个由 Google 开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。它已成为微服务架构下的行业标准。本文深入浅出地介绍了 Kubernetes 的核心概念和组件,包括 Master 和 Node 组件、Pod、Service、Deployment 等,并提供了基本操作示例和实战应用,帮助你更好地管理和利用容器环境。
|
6月前
|
存储 Kubernetes 调度
Kubernetes 基本概念
Kubernetes 基本概念
104 0
|
3月前
|
Kubernetes 负载均衡 安全
在k8S中,网络模型概念是什么?
在k8S中,网络模型概念是什么?
|
3月前
|
存储 Kubernetes Cloud Native
在k8S中,rook概念是什么?
在k8S中,rook概念是什么?
|
3月前
|
JSON Kubernetes Cloud Native
在k8S中,CNI模型概念是什么?
在k8S中,CNI模型概念是什么?
|
3月前
|
消息中间件 Kubernetes 数据库
在k8S中,初始化容器(init container)概念原理是什么?
在k8S中,初始化容器(init container)概念原理是什么?
|
3月前
|
存储 Kubernetes Docker
在K8S中,与K8S相关基础概念有哪些?
在K8S中,与K8S相关基础概念有哪些?