容器编排

第三章:飞升上界 · 云原生与K8s

韩门已成气候,需飞升云上仙境,领悟Kubernetes的天道意志

楔子:韩门的困境

建立韩门后,韩立在源界中声名鹊起。他的微服务架构稳定可靠,能够处理大量的业务请求,赢得了众多客户的信任。

然而,随着业务规模的不断扩大,韩立发现了一个严重的问题:服务的管理和运维变得越来越困难。

每当流量增加时,韩立需要手动增加服务器,部署新的服务实例。这个过程需要:

  1. 购买或申请新的服务器
  2. 安装操作系统和依赖
  3. 部署Docker和配置网络
  4. 部署服务并配置监控
  5. 更新负载均衡配置

整个过程需要数小时甚至数天,响应速度太慢。而且,当流量减少时,服务器资源闲置,造成巨大的浪费。

更糟糕的是,当某个服务实例崩溃时,需要人工介入才能恢复。如果是在深夜,可能几个小时都无法恢复,严重影响业务。

“这样下去不行…“韩立看着运维团队疲惫的身影,心中涌起一股无力感。

他听说,在源界的高层,有一个叫做"云上仙境"的地方。那里有一种叫做"Kubernetes"的天道意志,可以自动调度资源、管理服务、实现扩缩容和自愈。

“我一定要飞升上界,掌握Kubernetes!“韩立下定了决心。


第一节:初入云上仙境

经过数月的准备,韩立终于踏上了飞升之路。他带着韩门的所有服务,来到了云上仙境。

云上仙境,是一个由无数服务器组成的巨大集群。这里的服务器被称为"节点”(Node),分为两种:

  • Master节点:控制节点,负责整个集群的管理和调度
  • Worker节点:工作节点,负责运行实际的业务服务

韩立刚进入云上仙境,就感受到了一股强大的意志——这就是Kubernetes,云上仙境的天道意志。

Kubernetes(简称K8s)是一个容器编排系统,它的核心思想是"声明式API”——你只需要告诉它你想要的状态,它会自动帮你实现。

比如,你想要3个用户服务的实例运行,你只需要声明:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: user-service
spec:
  replicas: 3  # 我想要3个实例
  selector:
    matchLabels:
      app: user-service
  template:
    metadata:
      labels:
        app: user-service
    spec:
      containers:
      - name: user-service
        image: user-service:1.0.0
        ports:
        - containerPort: 8080

Kubernetes会自动:

  1. 检查当前有多少个实例在运行
  2. 如果少于3个,创建新的实例
  3. 如果多于3个,删除多余的实例
  4. 如果某个实例崩溃,自动重启或创建新的实例

这就是"言出法随”——你只需要声明想要的状态,Kubernetes会自动帮你达成。


第二节:洞天法宝——Pod

在Kubernetes中,最小的部署单元是Pod。Pod就像源界中的"洞天法宝”,是一个独立的运行环境,可以包含一个或多个容器。

韩立创建了他的第一个Pod:

apiVersion: v1
kind: Pod
metadata:
  name: user-service-pod
spec:
  containers:
  - name: user-service
    image: user-service:1.0.0
    ports:
    - containerPort: 8080
    resources:
      requests:
        memory: "256Mi"
        cpu: "100m"
      limits:
        memory: "512Mi"
        cpu: "500m"

Pod的特点: