kubernetes集群组件和架构
一、相关组件
1、控制面板组件(Master)–主节点
- kube-api-server
- 基于REST风格开放的k8s接口服务
- kube-controller-manager
- 控制器管理器,管理各个类型的控制器和k8s内部
- cloud-controller-manager
- 云控制管理器,第三方云平台提供的支持k8s的API接口的管理器
- kube-scheduler
- 调度器,负责把Pod基于一定算法,调用到合适的节点
- etcd
- 支持k8s高可用的持久化存储的分布式数据库
2、节点组件(Node)–副节点
- kubelet
- 负责Pod的生命周期、存储、网络等管理
- kube-proxy
- 负责网络代理、负载均衡(4层负载)、Service服务等等
- Pod
- 内部运行容器,一个Pod可运行多个容器(至少一个)
- container-runtime
- 容器运行环境:docker(较流行)、containerd、CRI-O
3、附加组件(可选)
- kube-dns
- 管理域名
- Ingress Controller
- Prometheus
- 监控
- Dashboard
- Federation
二、分层架构
1、生态系统
2、接口层
3、管理层
4、应用层
5、核心层
三、客户端
客户端操作方法:
- kubectl(命令行工具)【CTL】
- Dashboard(官方自带或第三方的可视化界面)【UL】–user interface
客户端通过调用API接口访问主节点,主节点的kube-api-server再进行操作,对接不同API接口到副节点的Pod进行容器操作
核心概念和专业术语
一、服务的状态
- 无状态应用
- 不会对本地环境产生环境依赖,不会将数据存储到本地,eg:Nginx、Apache
- 有状态应用
- 会对本地环境产生环境依赖,如将数据存储到本地磁盘,eg:Redis、MySQL
二、资源和对象
资源类似Java的类,对象就是基于这个类创建的对象
资源的部分分类:
-
元数据型
- Horizontal Poad Autoscaler(HPA)
- 弹性收缩和扩容
- PodTemplate
- 包含Pod定义,控制器用来创建Pod的模板
- LmitRange
- 对资源请求进行配置限制
- Horizontal Poad Autoscaler(HPA)
-
集群级
- NameSpace(命名空间)
- Node(节点)
- 本质不是由k8s创造,而是由k8s创建管理其中的资源
- ClusterRole
- 类似角色身份
- ClusterRoleBinding
- 将角色(Role 或 ClusterRole)与用户、组或服务账户绑定到集群
-
命名空间级(包含于集群内部)【重点】
-
工作负载型—Pod(k8s中最小的可部署单元,每个Pod都有一个pause容器来共享资源)
- 副本(replica),基于同一个 PodTemplate 创建的多个 Pod
实现高可用性、负载均衡、弹性伸缩 - 控制器(controller),是 Kubernetes 中用于管理 Pod 副本的机制。它负责确保 Pod 的副本数量符合预期,并且在 Pod 发生故障时自动重启或重新创建 Pod。
①适用无状态服务Deployment(首选):用于管理无状态应用的 Pod 副本。它可以确保指定数量的 Pod 副本始终运行,并支持滚动更新、暂停恢复、平滑宽容缩容。
②使用有状态服务StatefulSet:用于管理有状态应用的 Pod 副本。它为每个 Pod 提供稳定的网络身份和持久化存储。
可对有状态服务器的DNS进行管理,实现稳定的网络标志 Headless Service
还可以对数据进行管理,实现持久化存储,避免数据丢失 VolumeClaim Template
同时实现有序的恢复删除,伸缩扩容③守护进程DaemonSet:确保在集群中的每个节点上运行一个 Pod 副本,通常用于运行集群级别的服务,如日志收集器或监控代理。
如kube-proxy、Prometheus等④任务Job:用于运行一次性任务,例如批量处理任务或数据迁移任务。它会创建一个或多个 Pod 来完成任务,并在任务完成后Pod自动清理。
⑤定时任务CronJob:用于运行定时任务,例如每天或每周运行一次的任务。
- 副本(replica),基于同一个 PodTemplate 创建的多个 Pod
-
服务发现
- Service
实现集群内部网络的调用,主控东西流量(横向流量),如对同一个集群中的节点进行互相访问
-
Ingress
将集群内部服务暴露到外部网络,主控南北流量(纵向流量),如外部用户要访问内部节点
- Service
-
-
存储
- Volume
类似docker中的数据卷,用来持久化数据
- CSI
可看作是一个对volume插件的一个标准化的接口,通过CSI,Kubernetes可以与各种存储系统(如本地存储、网络存储等)进行交互,为容器化应用提供持久化存储
- Volume
-
特殊类型配置
- ConfigMap
是一种存储配置数据的API对象,用于存储非敏感信息(如配置文件、环境变量等)。
- Secret
是用于存储敏感信息(如密码、OAuth令牌、SSH密钥等)的API对象。它与ConfigMap类似,但提供了额外的安全性,例如数据加密存储。
- DownwardAPI
是一种将Pod和容器的元数据(如名称、IP地址、资源限制等)注入到容器中的机制,可以让我们的容器获得Pod和容器的信息,可以通过环境变量或数据卷挂载进行暴露
- ConfigMap
-
其他
- Role
- RoleBinding
将角色(Role 或 ClusterRole)与用户、组或服务账户绑定到命名空间
三、对象规约和状态
1、规约(Spec)
- 可理解为期望状态,当创建k8s对象时,必须规定你期望的对象的状态
2、状态(Status)
- 可理解为正常状态,

被折叠的 条评论
为什么被折叠?



