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作为云原生应用的"分布式操作系统",实现自动化运维和资源优化。如需深入特定概念(如控制器或网络模型),可进一步探讨。

相关推荐
zyplanke8 小时前
Kubernetes(四):Service
云原生·容器·kubernetes·k8s
Nazi617 小时前
sealos部署k8s
运维·kubernetes·k8s
伟大的大威3 天前
K8s基于节点软亲和的高 CPU Pod 扩容与优先调度方案
k8s·cpu
听说唐僧不吃肉4 天前
DevOps篇之通过GitLab CI 流水线实现k8s集群中helm应用发布
k8s·devops
java资料站8 天前
k8s集群1.20.9
k8s·kubelet
退役小学生呀11 天前
十九、云原生分布式存储 CubeFS
分布式·docker·云原生·容器·kubernetes·k8s
久绊A11 天前
Minikube win安装步骤
k8s
照物华14 天前
深入理解Kubernetes核心:标签与标签选择器实战解析
云原生·容器·kubernetes·k8s
裸奔的大金毛14 天前
K8S - NetworkPolicy的使用
容器·kubernetes·k8s
ezreal_pan16 天前
Kubernetes 负载均衡现象解析:为何同一批次请求集中于单个 Pod
运维·云原生·k8s·traefik