【K8S】Kubernetes架构与原理详解

Kubernetes架构与原理详解

前言

上一篇文章我们学习了 Docker,知道了如何将应用打包成容器。但当容器数量变多、服务器变多时,手动管理就变得不现实了。这时候就需要一个"容器管家"来帮我们自动化管理,它就是 Kubernetes(简称 K8s)。本文将带你深入理解 K8s 的架构和工作原理。

🏠个人主页:你的主页


文章目录


一、为什么需要Kubernetes

1.1 手动管理容器的痛点

假设你是一个运维工程师,负责管理公司的服务器和应用。

场景一:应用挂了

复制代码
凌晨 3 点,手机响了...
"喂?博客服务挂了?好,我马上处理..."

登录服务器 → 查看日志 → 重启服务 → 验证恢复

耗时:30 分钟
睡眠:没了

场景二:流量暴涨

复制代码
双十一活动,流量是平时的 10 倍...

登录服务器1 → 部署新实例
登录服务器2 → 部署新实例
登录服务器3 → 部署新实例
配置负载均衡...

耗时:2 小时
活动已经开始 1 小时了...

场景三:服务器宕机

复制代码
服务器 A 硬盘坏了,上面跑着 5 个服务...

找一台新服务器
把 5 个服务重新部署上去
更新 DNS 和负载均衡配置...

耗时:半天
用户投诉:无数

1.2 我们需要什么

需求 描述
自动重启 服务挂了自动拉起来
自动扩缩容 流量大了自动加实例,流量小了自动减
自动迁移 服务器挂了自动把服务迁到其他服务器
统一管理 不用登录每台服务器,一个地方管理所有服务
声明式配置 写个配置文件,系统自动达到期望状态

Kubernetes 就是为了解决这些问题而生的。


二、Kubernetes是什么

2.1 一句话定义

Kubernetes(K8s)是一个容器编排引擎,用于自动化部署、扩缩容和管理容器化应用。

为什么叫 K8s?

Kubernetes 这个单词太长了(10 个字母),所以取首字母 K 和尾字母 s,中间 8 个字母用数字 8 代替,就成了 K8s。

2.2 K8s 的核心能力

能力 说明
服务发现和负载均衡 自动分配 IP,自动负载均衡
存储编排 自动挂载存储系统
自动部署和回滚 声明式更新,出问题自动回滚
自动装箱 根据资源需求自动调度到合适的节点
自我修复 容器挂了自动重启,节点挂了自动迁移
密钥和配置管理 安全管理敏感信息

2.3 K8s 的定位

复制代码
┌─────────────────────────────────────────────────────────────┐
│                    应用部署演进                              │
└─────────────────────────────────────────────────────────────┘

传统部署时代
├── 直接在物理机上部署应用
├── 无法定义资源边界
└── 应用之间相互影响

        ↓

虚拟化部署时代
├── 在虚拟机上部署应用
├── 资源隔离,安全性好
└── 但虚拟机太重,资源利用率低

        ↓

容器部署时代
├── 在容器中部署应用
├── 轻量、快速、资源利用率高
└── 但容器多了管理困难

        ↓

容器编排时代(K8s)
├── 自动化管理大量容器
├── 声明式配置,自动达到期望状态
└── 自我修复,高可用

三、K8s整体架构

3.1 架构概览

K8s 集群由两部分组成:控制平面(Control Plane)工作节点(Node)

复制代码
┌─────────────────────────────────────────────────────────────┐
│                    Kubernetes 集群                          │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  ┌─────────────────────────────────────────────────────┐   │
│  │              控制平面 (Control Plane)                │   │
│  │                                                     │   │
│  │  ┌───────────┐ ┌───────────┐ ┌───────────────────┐ │   │
│  │  │API Server │ │ Scheduler │ │Controller Manager │ │   │
│  │  └───────────┘ └───────────┘ └───────────────────┘ │   │
│  │                                                     │   │
│  │  ┌─────────────────────────────────────────────┐   │   │
│  │  │                   etcd                       │   │   │
│  │  │              (分布式存储)                     │   │   │
│  │  └─────────────────────────────────────────────┘   │   │
│  └─────────────────────────────────────────────────────┘   │
│                            │                               │
│                            │ 管理                          │
│                            ▼                               │
│  ┌─────────────────────────────────────────────────────┐   │
│  │                工作节点 (Node)                       │   │
│  │                                                     │   │
│  │  ┌─────────┐  ┌─────────┐  ┌─────────┐            │   │
│  │  │  Node1  │  │  Node2  │  │  Node3  │            │   │
│  │  │┌───────┐│  │┌───────┐│  │┌───────┐│            │   │
│  │  ││ Pod A ││  ││ Pod C ││  ││ Pod E ││            │   │
│  │  │└───────┘│  │└───────┘│  │└───────┘│            │   │
│  │  │┌───────┐│  │┌───────┐│  │┌───────┐│            │   │
│  │  ││ Pod B ││  ││ Pod D ││  ││ Pod F ││            │   │
│  │  │└───────┘│  │└───────┘│  │└───────┘│            │   │
│  │  └─────────┘  └─────────┘  └─────────┘            │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
└─────────────────────────────────────────────────────────────┘

打个比方

  • 控制平面 = 公司总部(决策层)
  • Node = 各地分公司(执行层)
  • Pod = 具体的员工(干活的)

3.2 控制平面 vs 工作节点

角色 职责 类比
控制平面 决策、调度、管理 老板
工作节点 运行容器、执行任务 打工人

四、控制平面组件详解

4.1 API Server

职责:K8s 的"前台接待",所有操作都要通过它。

复制代码
┌─────────────────────────────────────────────────────────────┐
│                      API Server                             │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  kubectl ──────────────┐                                   │
│                        │                                   │
│  Dashboard ────────────┼──────► API Server ──────► etcd   │
│                        │              │                    │
│  其他客户端 ───────────┘              │                    │
│                                       ▼                    │
│                              Scheduler / Controller        │
│                                                             │
└─────────────────────────────────────────────────────────────┘

核心功能

  • 提供 RESTful API 接口
  • 认证、授权、准入控制
  • 数据校验
  • 与 etcd 交互

4.2 etcd

职责:K8s 的"数据库",存储所有集群数据。

存储内容

  • 集群配置信息
  • 节点信息
  • Pod 信息
  • Service 信息
  • Secret、ConfigMap 等

特点

  • 分布式键值存储
  • 强一致性(Raft 协议)
  • 高可用

4.3 Scheduler

职责:K8s 的"调度员",决定 Pod 运行在哪个 Node 上。

调度流程

复制代码
新 Pod 创建请求
      │
      ▼
Scheduler 获取 Pod 信息
      │
      ▼
过滤不满足条件的 Node
├── 资源不足的 Node
├── 有污点的 Node
└── 不满足亲和性的 Node
      │
      ▼
对剩余 Node 打分
├── 资源均衡度
├── 亲和性匹配度
└── 其他策略
      │
      ▼
选择得分最高的 Node
      │
      ▼
绑定 Pod 到 Node

调度策略示例

yaml 复制代码
# 指定 Pod 只能调度到有 SSD 的节点
spec:
  nodeSelector:
    disk: ssd

# 指定 Pod 尽量和某些 Pod 在一起
spec:
  affinity:
    podAffinity:
      preferredDuringSchedulingIgnoredDuringExecution:
        - weight: 100
          podAffinityTerm:
            labelSelector:
              matchLabels:
                app: cache

4.4 Controller Manager

职责:K8s 的"管理者",确保集群状态符合期望。

包含多个控制器

控制器 职责
Deployment Controller 管理 Deployment,确保 Pod 数量正确
ReplicaSet Controller 管理 ReplicaSet,维护 Pod 副本数
Node Controller 监控 Node 状态,处理节点故障
Service Controller 管理 Service,配置负载均衡
Endpoint Controller 管理 Endpoint,关联 Service 和 Pod

控制循环(Reconcile Loop)

复制代码
┌─────────────────────────────────────────────────────────────┐
│                    控制器工作原理                            │
└─────────────────────────────────────────────────────────────┘

        ┌──────────────────────────────────────┐
        │                                      │
        ▼                                      │
┌───────────────┐    ┌───────────────┐        │
│  期望状态     │    │  当前状态     │        │
│  (Desired)    │    │  (Current)    │        │
│               │    │               │        │
│  副本数: 3    │    │  副本数: 2    │        │
└───────┬───────┘    └───────┬───────┘        │
        │                    │                │
        └────────┬───────────┘                │
                 │                            │
                 ▼                            │
        ┌───────────────┐                     │
        │    比较差异    │                     │
        └───────┬───────┘                     │
                │                            │
                ▼                            │
        ┌───────────────┐                     │
        │  执行操作     │                     │
        │  (创建1个Pod) │                     │
        └───────┬───────┘                     │
                │                            │
                └────────────────────────────┘
                      持续循环

五、Node节点组件详解

5.1 kubelet

职责:Node 上的"代理人",负责管理 Pod 生命周期。

核心功能

  • 接收 API Server 的指令

  • 创建、启动、停止容器

  • 监控 Pod 和容器状态

  • 上报节点和 Pod 状态

    ┌─────────────────────────────────────────────────────────────┐
    │ Node │
    ├─────────────────────────────────────────────────────────────┤
    │ │
    │ API Server ◄────────────────► kubelet │
    │ │ │
    │ │ 管理 │
    │ ▼ │
    │ Container Runtime │
    │ (containerd/Docker) │
    │ │ │
    │ │ 创建 │
    │ ▼ │
    │ ┌─────────────────────────┐ │
    │ │ Pod │ │
    │ │ ┌─────┐ ┌─────┐ │ │
    │ │ │容器A│ │容器B│ │ │
    │ │ └─────┘ └─────┘ │ │
    │ └─────────────────────────┘ │
    │ │
    └─────────────────────────────────────────────────────────────┘

5.2 kube-proxy

职责:Node 上的"网络管家",负责网络代理和负载均衡。

核心功能

  • 维护网络规则(iptables/ipvs)

  • 实现 Service 的负载均衡

  • 转发请求到正确的 Pod

    外部请求


    ┌─────────────────┐
    │ Service IP │
    │ 10.96.0.100 │
    └────────┬────────┘

    │ kube-proxy 转发

    ┌─────────────────────────────────────┐
    │ │
    │ ┌─────────┐ ┌─────────┐ ┌─────────┐
    │ │ Pod A │ │ Pod B │ │ Pod C │
    │ │10.1.1.1 │ │10.1.1.2 │ │10.1.1.3 │
    │ └─────────┘ └─────────┘ └─────────┘
    │ │
    │ 负载均衡到其中一个 Pod │
    └─────────────────────────────────────┘

5.3 Container Runtime

职责:实际运行容器的组件。

常见的容器运行时

运行时 说明
containerd Docker 拆分出来的,K8s 默认推荐
CRI-O 专为 K8s 设计的轻量级运行时
Docker 早期默认,现在需要通过 dockershim

注意:K8s 1.24 版本后移除了对 Docker 的直接支持,但 Docker 构建的镜像仍然可以在 K8s 中运行。


六、核心资源对象

6.1 Pod

Pod 是什么:K8s 中最小的调度单位,包含一个或多个容器。

为什么不直接调度容器?

因为有些场景需要多个容器紧密协作:

复制代码
┌─────────────────────────────────────────────────────────────┐
│                          Pod                                │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  ┌─────────────────┐  ┌─────────────────┐                  │
│  │   应用容器       │  │   日志收集容器   │                  │
│  │   (Java App)    │  │   (Filebeat)    │                  │
│  │                 │  │                 │                  │
│  │  写日志到       │  │  读取日志       │                  │
│  │  /var/log/app  ─┼──┼─ /var/log/app  │                  │
│  │                 │  │                 │                  │
│  └─────────────────┘  └─────────────────┘                  │
│                                                             │
│  共享网络命名空间(同一个 IP)                               │
│  共享存储卷(可以访问同一个目录)                            │
│                                                             │
└─────────────────────────────────────────────────────────────┘

Pod 的特点

  • 同一 Pod 内的容器共享网络和存储
  • Pod 是临时的,随时可能被销毁重建
  • Pod 有唯一的 IP 地址

6.2 Deployment

Deployment 是什么:管理 Pod 的"上级",负责 Pod 的创建、更新、回滚。

为什么需要 Deployment?

直接创建 Pod 的问题:

  • Pod 挂了不会自动重建
  • 无法方便地扩缩容
  • 无法滚动更新

Deployment 的能力

yaml 复制代码
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 3  # 期望 3 个副本
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.20
        ports:
        - containerPort: 80

Deployment 的工作

复制代码
Deployment (nginx-deployment)
    │
    │ 管理
    ▼
ReplicaSet (nginx-deployment-abc123)
    │
    │ 管理
    ▼
┌─────────┐  ┌─────────┐  ┌─────────┐
│  Pod 1  │  │  Pod 2  │  │  Pod 3  │
└─────────┘  └─────────┘  └─────────┘

6.3 Service

Service 是什么:为 Pod 提供稳定的访问入口。

为什么需要 Service?

Pod 的 IP 是不固定的:

  • Pod 重建后 IP 会变
  • 多个 Pod 副本有多个 IP
  • 调用方不知道该访问哪个 IP

Service 的作用

复制代码
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│  调用方                                                     │
│    │                                                        │
│    │ 访问 Service IP: 10.96.0.100                          │
│    ▼                                                        │
│  ┌─────────────────────────────────────────────────────┐   │
│  │                    Service                          │   │
│  │                 (nginx-service)                     │   │
│  │                                                     │   │
│  │  ClusterIP: 10.96.0.100                            │   │
│  │  Port: 80                                          │   │
│  └──────────────────────┬──────────────────────────────┘   │
│                         │                                   │
│           ┌─────────────┼─────────────┐                    │
│           ▼             ▼             ▼                    │
│     ┌─────────┐   ┌─────────┐   ┌─────────┐               │
│     │  Pod 1  │   │  Pod 2  │   │  Pod 3  │               │
│     │10.1.1.1 │   │10.1.1.2 │   │10.1.1.3 │               │
│     └─────────┘   └─────────┘   └─────────┘               │
│                                                             │
│  Service 自动发现 Pod,负载均衡                             │
│                                                             │
└─────────────────────────────────────────────────────────────┘

Service 类型

类型 说明 使用场景
ClusterIP 集群内部访问 内部服务间调用
NodePort 通过节点端口暴露 开发测试
LoadBalancer 云厂商负载均衡器 生产环境对外暴露
ExternalName 映射外部服务 访问集群外服务

6.4 Ingress

Ingress 是什么:集群的"入口网关",管理外部访问。

复制代码
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│  外部用户                                                   │
│    │                                                        │
│    │ https://api.example.com/users                         │
│    │ https://api.example.com/orders                        │
│    ▼                                                        │
│  ┌─────────────────────────────────────────────────────┐   │
│  │              Ingress Controller                     │   │
│  │                 (Nginx/Traefik)                     │   │
│  └──────────────────────┬──────────────────────────────┘   │
│                         │                                   │
│         ┌───────────────┼───────────────┐                  │
│         │               │               │                  │
│         ▼               ▼               ▼                  │
│  ┌─────────────┐ ┌─────────────┐ ┌─────────────┐          │
│  │ /users      │ │ /orders     │ │ /products   │          │
│  │ user-svc    │ │ order-svc   │ │ product-svc │          │
│  └─────────────┘ └─────────────┘ └─────────────┘          │
│                                                             │
└─────────────────────────────────────────────────────────────┘

6.5 ConfigMap 和 Secret

ConfigMap:存储非敏感配置信息

yaml 复制代码
apiVersion: v1
kind: ConfigMap
metadata:
  name: app-config
data:
  database_host: "mysql.default.svc.cluster.local"
  database_port: "3306"
  log_level: "INFO"

Secret:存储敏感信息(Base64 编码)

yaml 复制代码
apiVersion: v1
kind: Secret
metadata:
  name: db-secret
type: Opaque
data:
  username: YWRtaW4=      # admin
  password: cGFzc3dvcmQ=  # password

6.6 资源对象关系图

复制代码
┌─────────────────────────────────────────────────────────────┐
│                    K8s 资源对象关系                          │
└─────────────────────────────────────────────────────────────┘

                    Ingress
                       │
                       │ 路由到
                       ▼
                    Service
                       │
                       │ 选择
                       ▼
                   Deployment
                       │
                       │ 管理
                       ▼
                   ReplicaSet
                       │
                       │ 管理
                       ▼
                      Pod ◄──── ConfigMap / Secret
                       │
                       │ 包含
                       ▼
                   Container

七、K8s工作流程详解

7.1 部署应用的完整流程

复制代码
┌─────────────────────────────────────────────────────────────┐
│                    部署应用流程                              │
└─────────────────────────────────────────────────────────────┘

1. 用户执行 kubectl apply -f deployment.yaml
                │
                ▼
2. kubectl 将请求发送给 API Server
                │
                ▼
3. API Server 验证请求,存储到 etcd
                │
                ▼
4. Controller Manager 检测到新的 Deployment
                │
                ▼
5. Deployment Controller 创建 ReplicaSet
                │
                ▼
6. ReplicaSet Controller 创建 Pod(状态:Pending)
                │
                ▼
7. Scheduler 检测到未调度的 Pod
                │
                ▼
8. Scheduler 选择合适的 Node,绑定 Pod
                │
                ▼
9. 目标 Node 的 kubelet 检测到新 Pod
                │
                ▼
10. kubelet 调用 Container Runtime 创建容器
                │
                ▼
11. 容器启动,Pod 状态变为 Running
                │
                ▼
12. kubelet 持续上报 Pod 状态给 API Server

7.2 服务调用流程

复制代码
┌─────────────────────────────────────────────────────────────┐
│                    服务调用流程                              │
└─────────────────────────────────────────────────────────────┘

1. 外部用户访问 https://api.example.com/users
                │
                ▼
2. 请求到达 Ingress Controller
                │
                ▼
3. Ingress Controller 根据规则转发到 user-service
                │
                ▼
4. kube-proxy 将请求负载均衡到某个 Pod
                │
                ▼
5. Pod 中的容器处理请求
                │
                ▼
6. 响应原路返回

7.3 自动扩缩容流程

复制代码
┌─────────────────────────────────────────────────────────────┐
│                    自动扩缩容流程                            │
└─────────────────────────────────────────────────────────────┘

1. Metrics Server 收集 Pod 的 CPU/内存使用率
                │
                ▼
2. HPA (Horizontal Pod Autoscaler) 获取指标
                │
                ▼
3. HPA 发现 CPU 使用率 > 80%(超过阈值)
                │
                ▼
4. HPA 计算需要的 Pod 数量(比如从 3 扩到 5)
                │
                ▼
5. HPA 更新 Deployment 的 replicas 字段
                │
                ▼
6. Deployment Controller 创建新的 Pod
                │
                ▼
7. 新 Pod 被调度、启动
                │
                ▼
8. 流量被分摊到更多 Pod,CPU 使用率下降

7.4 故障自愈流程

复制代码
┌─────────────────────────────────────────────────────────────┐
│                    故障自愈流程                              │
└─────────────────────────────────────────────────────────────┘

场景:Node2 宕机,上面有 Pod-B 和 Pod-C

1. kubelet 停止上报心跳
                │
                ▼
2. Node Controller 检测到 Node2 失联
                │
                ▼
3. 等待超时后,标记 Node2 为 NotReady
                │
                ▼
4. Pod-B 和 Pod-C 被标记为 Unknown
                │
                ▼
5. ReplicaSet Controller 发现副本数不足
                │
                ▼
6. 创建新的 Pod 替代
                │
                ▼
7. Scheduler 将新 Pod 调度到其他健康 Node
                │
                ▼
8. 服务恢复正常

八、实战入门

8.1 安装 kubectl

bash 复制代码
# macOS
brew install kubectl

# Linux
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
chmod +x kubectl
sudo mv kubectl /usr/local/bin/

# 验证
kubectl version --client

8.2 常用命令

集群信息

bash 复制代码
# 查看集群信息
kubectl cluster-info

# 查看节点
kubectl get nodes

# 查看所有命名空间
kubectl get namespaces

Pod 操作

bash 复制代码
# 查看 Pod
kubectl get pods
kubectl get pods -o wide  # 显示更多信息
kubectl get pods -n kube-system  # 指定命名空间

# 查看 Pod 详情
kubectl describe pod <pod-name>

# 查看 Pod 日志
kubectl logs <pod-name>
kubectl logs -f <pod-name>  # 实时日志

# 进入 Pod
kubectl exec -it <pod-name> -- /bin/bash

# 删除 Pod
kubectl delete pod <pod-name>

Deployment 操作

bash 复制代码
# 创建 Deployment
kubectl apply -f deployment.yaml

# 查看 Deployment
kubectl get deployments

# 扩缩容
kubectl scale deployment <name> --replicas=5

# 更新镜像
kubectl set image deployment/<name> <container>=<image>:<tag>

# 查看滚动更新状态
kubectl rollout status deployment/<name>

# 回滚
kubectl rollout undo deployment/<name>

# 查看历史版本
kubectl rollout history deployment/<name>

Service 操作

bash 复制代码
# 查看 Service
kubectl get services
kubectl get svc

# 暴露 Deployment 为 Service
kubectl expose deployment <name> --port=80 --type=NodePort

8.3 部署一个 Java 应用

步骤一:创建 Deployment

yaml 复制代码
# java-app-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: java-app
  labels:
    app: java-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: java-app
  template:
    metadata:
      labels:
        app: java-app
    spec:
      containers:
      - name: java-app
        image: your-registry/java-app:v1
        ports:
        - containerPort: 8080
        resources:
          requests:
            memory: "256Mi"
            cpu: "250m"
          limits:
            memory: "512Mi"
            cpu: "500m"
        env:
        - name: SPRING_PROFILES_ACTIVE
          value: "prod"
        - name: DB_HOST
          valueFrom:
            configMapKeyRef:
              name: app-config
              key: database_host
        livenessProbe:
          httpGet:
            path: /actuator/health
            port: 8080
          initialDelaySeconds: 30
          periodSeconds: 10
        readinessProbe:
          httpGet:
            path: /actuator/health
            port: 8080
          initialDelaySeconds: 5
          periodSeconds: 5

步骤二:创建 Service

yaml 复制代码
# java-app-service.yaml
apiVersion: v1
kind: Service
metadata:
  name: java-app-service
spec:
  selector:
    app: java-app
  ports:
  - port: 80
    targetPort: 8080
  type: ClusterIP

步骤三:创建 Ingress

yaml 复制代码
# java-app-ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: java-app-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - host: api.example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: java-app-service
            port:
              number: 80

步骤四:部署

bash 复制代码
kubectl apply -f java-app-deployment.yaml
kubectl apply -f java-app-service.yaml
kubectl apply -f java-app-ingress.yaml

# 查看状态
kubectl get pods -l app=java-app
kubectl get svc java-app-service
kubectl get ingress java-app-ingress

九、总结

9.1 核心概念速查

概念 说明
Cluster K8s 集群,包含控制平面和工作节点
Node 工作节点,运行 Pod 的服务器
Pod 最小调度单位,包含一个或多个容器
Deployment 管理 Pod 的副本和更新
Service 为 Pod 提供稳定的访问入口
Ingress 集群入口网关,管理外部访问
ConfigMap 存储配置信息
Secret 存储敏感信息

9.2 控制平面组件

组件 职责
API Server 提供 API 接口,集群入口
etcd 存储集群数据
Scheduler 调度 Pod 到合适的 Node
Controller Manager 确保集群状态符合期望

9.3 Node 组件

组件 职责
kubelet 管理 Pod 生命周期
kube-proxy 网络代理和负载均衡
Container Runtime 运行容器

9.4 K8s 的核心价值

能力 价值
自动化部署 一条命令部署整个应用
自动扩缩容 根据负载自动调整实例数
自我修复 故障自动恢复
滚动更新 零停机更新应用
服务发现 自动注册和发现服务

一句话总结:K8s 是容器时代的"操作系统",让你用声明式的方式管理大规模容器化应用。


热门专栏推荐

等等等还有许多优秀的合集在主页等着大家的光顾,感谢大家的支持

文章到这里就结束了,如果有什么疑问的地方请指出,诸佬们一起来评论区一起讨论😊

希望能和诸佬们一起努力,今后我们一起观看感谢您的阅读🙏

如果帮助到您不妨3连支持一下,创造不易您们的支持是我的动力🌟

相关推荐
lpfasd1232 小时前
一次 IDE Agent 死循环问题的架构复盘
ide·架构
Coder个人博客2 小时前
Apollo 9.0.0 自动驾驶系统整体架构分析
人工智能·架构·自动驾驶
小陈运维2 小时前
升级二进制kubernetes集群(小版本升级)
kubernetes
小陈运维2 小时前
二进制安装Kubernetes(k8s)v1.35.0
kubernetes
山沐与山2 小时前
【Docker】Docker容器技术详解
运维·docker·容器
互联网哪些事情2 小时前
Docker 容器化部署宝塔 Linux 面板
linux·docker·容器·宝塔云服务器
坚定信念,勇往无前3 小时前
docker安装mongodb
mongodb·docker·容器
Destiny_where3 小时前
k8s常用指令集合
linux·docker·kubernetes
叮咚侠3 小时前
将已创建的Elasticsearch 8.12.0的docker容器中的数据挂载到宿主机操作步骤
运维·elasticsearch·docker·容器·kibana