为啥全世界都在聊 K8s?
在没 K8s 的洪荒年代,我们怎么部署应用?
可能是在一台物理机上,java -jar app.jar
跑起来,祈祷它别崩。后来有了虚拟机,高级了点,但还是笨重。再后来,Docker 横空出世,集装箱技术改变了一切。轻量、标准、隔离,简直完美!
于是你美滋滋地把所有应用都打成了 Docker 镜像,跑在一堆机器上。然后问题来了:
-
A 服务挂了,你半夜三点爬起来手动重启?
-
流量高峰来了,怎么快速扩容出10个 B 服务实例?手动
docker run
十次? -
服务更新,怎么做到不中断业务,平滑地一个一个替换?
-
这么多容器,它们之间网络怎么通?IP 地址咋管理?
当你被这些问题折磨得快秃头时,救世主就来了。Kubernetes,简称 K8s(因为 K 和 s 之间有8个字母,程序员的烂梗),就是那个“包工头”,专门来解决上面所有问题的。
它的核心思想就一句话:你别管过程,告诉我你想要啥样的“最终状态”就行,剩下的我来搞定。
一:K8s 的世界关—— 几个基本概念
想玩转 K8s,得先懂它的“黑话”。别怕,咱用大白话给你翻译。
-
Pod:这是 K8s 里最小的部署单元。你可以把它想象成一个“豆荚”,里面可以装一个或多个紧密相关的容器(豆子)。这些容器共享网络和存储空间,能通过
localhost
互相访问。记住,K8s 不直接管理容器,它管理的是 Pod。 -
Node:节点,就是一台实实在在的机器,可以是物理机也可以是虚拟机。它是 Pod 的“家”,负责跑 Pod。
-
Cluster:集群,就是一堆 Node 凑在一起,形成一个资源池。你所有的应用就跑在这个大池子里。
它们的关系很简单:
<