Kubernetes(简称 K8s) 是一个开源的容器编排平台,最初由 Google 开发,后来捐赠给 Cloud Native Computing Foundation。

简单理解:

Docker 解决“如何运行一个容器”,Kubernetes 解决“如何管理成千上万个容器”。


为什么需要 Kubernetes

假设你的电商系统有:

  • 用户服务(user-service)
  • 订单服务(order-service)
  • 商品服务(product-service)
  • 支付服务(payment-service)

每个服务运行多个 Docker 容器:

user-service
 ├── container1
 ├── container2
 └── container3

order-service
 ├── container1
 ├── container2
 └── container3

如果:

  • 某个容器挂了
  • 流量暴涨需要扩容
  • 服务器宕机
  • 发布新版本

靠人工管理几乎不可能。

于是 Kubernetes 出现了。


Kubernetes 能做什么

1. 自动部署

你只需要告诉 K8s:

我要运行3个订单服务实例

K8s 自动创建:

order-service
 ├── pod1
 ├── pod2
 └── pod3

2. 自动扩容

双十一来了

原来:
3个订单服务

流量暴涨:
20个订单服务

K8s 自动扩容:

order-service
 ├── pod1
 ├── pod2
 ...
 └── pod20

3. 自动故障恢复

如果:

pod5 挂了

K8s发现后:

删除pod5
创建新的pod5

整个过程自动完成。


4. 服务发现

例如订单服务调用用户服务:

http://user-service/getUser

不需要关心:

10.0.1.1
10.0.1.2
10.0.1.3

K8s自动负载均衡。


5. 滚动发布

发布新版本:

v1 -> v2

K8s会:

删除一个v1
启动一个v2

删除一个v1
启动一个v2

直到全部升级完成。

用户几乎无感知。


Kubernetes 核心架构

Master(控制平面)

相当于大脑。

负责:

  • 调度
  • 监控
  • 管理集群

核心组件:

API Server
Scheduler
Controller Manager
etcd

Worker Node(工作节点)

真正运行业务。

Node1
Node2
Node3

每台机器运行:

Docker/containerd
Kubelet
Kube-Proxy

最重要的概念:Pod

很多人误以为 K8s 管理 Docker。

实际上:

K8s
 ↓
Pod
 ↓
Container

关系:

Pod
 ├── nginx容器
 └── sidecar容器

Pod 是 Kubernetes 的最小调度单位。


常见对象

Pod

运行容器。

Pod
 └── Container

Deployment

管理 Pod。

例如:

replicas: 3

表示:

始终保持3个Pod

如果挂一个:

3 -> 2

Deployment 自动补:

2 -> 3

Service

服务发现和负载均衡。

订单服务
 ↓
Service
 ↓
Pod1
Pod2
Pod3

调用:

http://order-service

即可。


Ingress

外部流量入口。

例如:

www.xxx.com/user

转发到:

user-service

和 Spring Cloud 的关系

很多面试官喜欢问:

Kubernetes 会取代 Spring Cloud 吗?

实际上:

Spring Cloud 解决

应用层治理:

  • OpenFeign
  • Gateway
  • Sentinel
  • Config
  • Sleuth

Kubernetes 解决

基础设施治理:

  • 调度
  • 扩容
  • 服务发现
  • 负载均衡

现代微服务架构经常是:

Spring Boot
      ↓
Docker
      ↓
Kubernetes

或者:

Spring Cloud Alibaba
         ↓
Kubernetes

面试一句话回答

Kubernetes(K8s)是一个开源的容器编排平台,用于自动部署、扩容、负载均衡和管理容器化应用。它以 Pod 为最小调度单元,通过 Deployment 管理副本,通过 Service 实现服务发现,通过控制平面统一调度整个集群,是当前云原生架构的核心基础设施。

如果你是 Java 后端开发,可以把 Kubernetes 理解成:

单机时代:
Spring Boot

↓

微服务时代:
Spring Cloud

↓

云原生时代:
Spring Boot + Docker + Kubernetes

而 K8s 面试最常考的一条主线是:

Pod
 ↓
Deployment
 ↓
Service
 ↓
Ingress
 ↓
Scheduler
 ↓
etcd

把这条链路搞懂,基本就掌握了 Kubernetes 的核心原理

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐