k8s 基本架构

基于Kubernetes(K8s)的核心设计,以下是其关键基本概念的详细解析。这些概念构成了K8s容器编排系统的基石,用于自动化部署、扩展和管理容器化应用。

一、K8s核心概念概览

K8s的核心对象围绕容器生命周期管理、资源调度和服务发现展开,主要包括:

  1. **Pod**
  • **定义**:K8s最小调度单元,封装一个或多个紧密关联的容器(如主应用容器+辅助sidecar容器)。

  • **特性**:

  • 共享网络命名空间(同一IP地址)和存储卷(Volumes)。

  • 原子调度:Pod内容器始终部署在同一节点,同生共死。

  • 生命周期短暂:故障后会被重建,但IP可能变化。

  • **示例**:一个Web应用Pod可能包含Nginx容器和日志收集容器。

  1. **容器(Container)**
  • **定义**:轻量级、可移植的运行环境,打包应用代码、依赖库和配置文件。

  • **特性**:

  • 基于Linux命名空间和cgroup实现资源隔离(CPU、内存)。

  • 快速部署:秒级启动,比虚拟机更轻量。

  • 环境一致性:确保开发、测试、生产环境相同。

  • **示例**:Docker容器运行Python Flask应用,包含Python解释器和代码。

  1. **节点(Node)**
  • **定义**:K8s集群的计算单元,可以是物理机或虚拟机。

  • **类型**:

  • **Master Node**:运行控制平面组件(如API Server、Scheduler)。

  • **Worker Node**:运行应用容器,核心组件包括:

  • **Kubelet**:代理程序,管理Pod和容器生命周期。

  • **Kube-proxy**:处理网络路由和负载均衡。

  • **容器运行时**(如Docker或Containerd):负责拉取镜像、启动容器。

  1. **控制器(Controllers)**
  • **定义**:通过API Server监控资源状态,确保实际状态与期望状态一致。

  • **常见类型**:

  • **Deployment**:管理无状态应用,支持滚动更新和扩缩容。

  • **StatefulSet**:管理有状态应用(如数据库),保证Pod顺序和身份。

  • **DaemonSet**:确保每个节点运行一个Pod副本(如日志收集)。

  • **示例**:控制器自动重启故障Pod或根据负载增加副本数。

  1. **服务(Service)**
  • **定义**:抽象Pod集合,提供稳定的网络访问入口和负载均衡。

  • **特性**:

  • 解耦应用与Pod动态变化(IP漂移)。

  • 支持多种服务类型:

  • **ClusterIP**:内部集群访问。

  • **NodePort**:暴露服务到节点端口。

  • **LoadBalancer**:云提供商负载均衡器。

  1. **命名空间(Namespace)**
  • **定义**:虚拟划分集群资源,用于多团队或环境隔离(如开发、测试)。

  • **特性**:资源配额和访问控制(RBAC)可作用于命名空间。

二、核心概念关系图

```mermaid

graph LR

A[应用] --> B(Pod)

B --> C[容器1]

B --> D[容器2]

B --> E[共享存储]

B --> F[共享网络]

G[控制器] --> H[管理Pod状态]

I[Service] --> J[负载均衡Pod流量]

K[Node] --> L[kubelet]

K --> M[kube-proxy]

K --> N[容器运行时]

```

三、关键特性总结

  • **声明式管理**:通过YAML文件定义应用期望状态(如副本数),K8s自动维持一致性。

  • **高可用性**:自动检测故障并重启/迁移Pod。

  • **弹性伸缩**:基于负载动态扩缩容(如Horizontal Pod Autoscaler)。

  • **服务发现**:Service自动更新DNS记录,简化容器间通信。

这些概念共同支撑K8s作为云原生应用的"分布式操作系统",实现自动化运维和资源优化。如需深入特定概念(如控制器或网络模型),可进一步探讨。

相关推荐
Font Tian1 天前
【云计算2025年度总结】汇总和反思
容器·云计算·k8s·openstack·虚拟化
Coder_Boy_1 天前
基于SpringAI的智能AIOps项目:部署相关容器化部署管理技术
人工智能·spring boot·k8s·运维开发
whltaoin4 天前
25年12月26日-福州某科技公司一面面试原题
java·linux·docker·面试·职场和发展·k8s·springboot
汪碧康5 天前
二进制kubenetes-1.34.2安装包快速部署k8s集群
云原生·容器·kubernetes·k8s·etcd·xkube
汪碧康5 天前
【k8s-1.34.2安装部署】六.企业级部署cilium-1.18.4网络插件
网络·云原生·容器·kubernetes·k8s·cilium·xkube
查尔斯-BUG万象集6 天前
解决 OceanBase CE 启动失败:OBD-2002: Failed to start 0.0.0.0 observer
docker·k8s·oceanbase
极客小云6 天前
【Dockerfile 编写最佳实践:优化镜像构建与层缓存】
缓存·docker·k8s
汪碧康7 天前
【k8s-1.34.2安装部署】三.etcd-v3.6.6 TLS版集群安装
容器·kubernetes·k8s·etcd·dashboard·xkube·etcd集群部署
小石潭记丶9 天前
安装/配置Longhorn
k8s
ymf5110 天前
DevOps平台部署K8s容器的Values值配置详解
k8s·devops