Kubernetes教程
Kubernetes 基础
Kubernetes 简介
Kubernetes 架构与组件
Kubernetes 核心概念
Kubernetes 集群搭建与管理
Kubernetes集群管理
Kubernetes 集群搭建
Kubernetes 高级特性
Kubernetes 有状态应用编排
Kubernetes 无状态应用编排
Kubernetes 无状态应用编排
Kubernetes 作业与定时任务
Kubernetes 服务发现与负载均衡
Kubernetes 网络管理
Kubernetes存储管理
Kubernetes 安全性
Kubernetes 生产实践
Kubernetes 持续集成与持续部署(CI/CD)
Kubernetes 监控与日志管理
Kubernetes 高可用集群架构
Kubernetes 资源调度与优化
Kubernetes 扩展与定制
Kubernetes 自定义资源与控制器
Kubernetes的Operator 模式
Kubernetes 插件与扩展点
Kubernetes API 编程
-
+
首页
Kubernetes 核心概念
 ### Kubernetes 核心概念 #### Pod **Pod 的基本概念** - **定义**:Pod 是 Kubernetes 中最小的部署单元,可以包含一个或多个容器。这些容器共享网络命名空间、存储卷等资源。 - **特点**: - **共享资源**:Pod 内的容器共享网络命名空间,可以使用 `localhost` 相互通信。它们还可以共享存储卷,方便数据共享和持久化。 - **生命周期**:Pod 有明确的生命周期,从创建到终止,状态会经历多个阶段。 - **调度单位**:Kubernetes 调度的基本单位是 Pod,调度器会将 Pod 调度到合适的 Node 上运行。 **Pod 的生命周期** - **阶段**: - **Pending**:Pod 已被创建,但容器尚未创建。此阶段可能在等待资源(如 CPU、内存)或在下载容器镜像。 - **Running**:Pod 已经绑定到某个 Node 上,所有容器都已创建并至少有一个容器正在运行、正在启动或正在重启。 - **Succeeded**:Pod 中的所有容器都已成功终止,并且不会重启。 - **Failed**:Pod 中的所有容器都已终止,但至少有一个容器是因为失败而终止的(退出状态非零)。 - **Unknown**:Pod 的状态无法获取,通常是因为与 Pod 所在的 Node 通信失败。 **Init 容器** - **定义**:Init 容器是在 Pod 中的主容器启动之前运行的容器。它们按顺序启动,每个 Init 容器必须成功完成后,下一个 Init 容器才会启动。 - **用途**: - **初始化任务**:用于执行一些初始化任务,如等待某个服务启动、设置配置文件、运行数据库迁移脚本等。 - **依赖管理**:确保主容器在启动时所需的所有依赖都已准备好。 #### 服务(Service) **Service 的类型** - **ClusterIP**(默认类型): - **特点**:提供一个虚拟 IP 地址,仅在集群内部可访问。这个 IP 地址在 Pod 的生命周期内是固定的。 - **用途**:适用于集群内部的服务发现和通信。 - **NodePort**: - **特点**:在每个 Node 上开放一个静态端口,外部可以通过 `<NodeIP>:<NodePort>` 访问服务。 - **用途**:适用于需要从集群外部访问服务的场景,但不推荐在生产环境中使用,因为端口范围有限(30000-32767)。 - **LoadBalancer**: - **特点**:在云服务提供商的负载均衡器上创建一个外部可访问的 IP 地址,将流量转发到后端的 Pod。 - **用途**:适用于需要高可用性和高流量的服务,通常用于生产环境。 - **ExternalName**: - **特点**:通过 CNAME 记录将服务映射到外部名称,不创建虚拟 IP 地址。 - **用途**:适用于需要将服务指向外部系统的情况。 **Service 的负载均衡** - **工作原理**:Service 通过 kube-proxy 实现负载均衡。kube-proxy 会根据 Service 的定义,将请求转发到后端的 Pod。它支持多种负载均衡模式,如轮询、最少连接等。 - **实现方式**: - **iptables**:使用 iptables 规则进行网络转发,性能较高,但灵活性稍差。 - **ipvs**:使用 ipvs 模块进行网络转发,性能更高,支持更多的负载均衡算法。 - **userspace**:使用用户空间代理进行网络转发,灵活性高,但性能稍差。 #### 部署(Deployment) **Deployment 的基本概念** - **定义**:Deployment 是一种控制器,用于管理无状态应用程序的部署和更新。它确保指定数量的 Pod 副本始终运行,并支持滚动更新和回滚。 - **功能**: - **副本管理**:确保指定数量的 Pod 副本始终运行。 - **滚动更新**:支持平滑的滚动更新,逐步替换旧版本的 Pod 为新版本的 Pod。 - **回滚**:如果更新过程中出现问题,可以回滚到之前的版本。 **Deployment 的更新策略** - **RollingUpdate**(默认策略): - **特点**:逐步替换旧版本的 Pod 为新版本的 Pod,确保服务的高可用性。 - **参数**: - `maxSurge`:控制在更新过程中可以超过期望 Pod 数量的最大值。默认值为 1。 - `maxUnavailable`:控制在更新过程中可以不可用的 Pod 数量的最大值。默认值为 1。 - **Recreate**: - **特点**:在创建新版本的 Pod 之前,先删除所有旧版本的 Pod。这会导致服务短暂不可用,适用于对服务可用性要求不高的场景。 #### 配置与存储 **ConfigMap** - **定义**:ConfigMap 是一种存储配置数据的键值对资源,可以用于配置应用程序的参数。 - **用途**: - **配置管理**:将配置文件、环境变量等配置数据存储在 ConfigMap 中,然后在 Pod 中引用。 - **动态更新**:ConfigMap 支持动态更新,当 ConfigMap 更新后,引用它的 Pod 会自动重新加载配置。 **Secret** - **定义**:Secret 是一种存储敏感信息(如密码、密钥、证书等)的资源,可以用于保护应用程序的敏感数据。 - **用途**: - **敏感数据管理**:将敏感信息存储在 Secret 中,然后在 Pod 中引用,确保数据的安全性。 - **自动加密**:Secret 会自动加密存储,防止数据泄露。 **持久卷(Persistent Volume, PV)** - **定义**:PV 是集群中的一块存储资源,由管理员预先配置。PV 是集群资源的一部分,独立于 Pod 的生命周期。 - **特点**: - **持久化存储**:提供持久化存储,即使 Pod 被删除,数据仍然保留。 - **多种存储类型**:支持多种存储类型,如本地存储、云存储(如 AWS EBS、GCP PD)、网络存储(如 NFS、iSCSI)等。 **持久卷声明(Persistent Volume Claim, PVC)** - **定义**:PVC 是用户对存储资源的请求。用户通过 PVC 申请存储资源,Kubernetes 会根据 PVC 的要求分配一个 PV。 - **特点**: - **动态分配**:用户通过 PVC 申请存储资源,Kubernetes 会自动分配一个符合条件的 PV。 - **绑定关系**:PVC 与 PV 之间是一对一的绑定关系,一旦绑定,PVC 就可以使用 PV 提供的存储资源。 - **生命周期管理**:PVC 的生命周期与 Pod 的生命周期独立,即使 Pod 被删除,PVC 仍然存在,存储资源仍然保留。
wwbang
2025年1月10日 17:55
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码