K8s是什么

K8s​ ​ 这个名字是 ​​Kubernetes​ ​ 的缩写(K和s之间有8个字母,所以叫K8s)。它是谷歌开源的一个​​容器编排系统​​。

要理解K8s,我们必须先回想一下刚才讲的 ​​Docker​​。

从Docker说起:一个集装箱

Docker就像一个​​集装箱​​,它把每个软件(比如用户服务、订单服务)和它的运行环境打包在一起,保证这个软件在任何地方都能一模一样地运行。

现在问题来了:

  • ∙ 如果你的企业网站很小,只有一两个服务,你手动管理几个Docker容器就足够了。

  • ∙ 但当你的网站变成大型系统(比如淘宝、京东),有​​成百上千个微服务​ ​,每个服务都需要打包成容器,并且需要运行在​​很多台服务器​​上时,麻烦就大了:

    1. ​这么多容器,应该放在哪台服务器上?​
    1. ​某个容器挂了,怎么让它自动重启?​
    1. ​访问流量突然变大,怎么自动增加容器数量来扛住压力?​
    1. ​流量过去后,怎么自动减少容器数量来节省资源?​
    1. ​如何让用户能访问到这一大堆动态创建、动态销毁的容器?​

​手动管理?绝对会累死,而且根本不可靠。​


K8s是什么?集装箱船运的"全球调度总指挥"

如果​​Docker容器是单个集装箱​ ​,那么 ​​K8s就是一艘巨大无比的、全自动化的"集装箱货轮",以及指挥整个船队(集群)的"全球调度中心"​​。

它的核心工作就是​​自动化地管理和调度成千上万的容器​​,让它们按照我们期望的方式去运行。

K8s的核心功能(这个"总指挥"有多能干)

    1. ​自动化部署和伸缩 (Deployment & Scaling)​
    • ∙ ​​你告诉K8s​​:"我需要运行3个'用户服务'的容器实例。"

    • ∙ ​​K8s的工作​ ​:它自动检查集群里哪些服务器(Node)资源充足,然后把容器部署上去。如果某个容器挂了,它会自动重启一个新的,​​永远保证有3个健康实例在运行​​。

    • ∙ ​​流量来了​ ​:你还可以设置规则:"当CPU使用率超过80%,自动再增加2个实例。" 流量高峰过后,它又会自动缩减到3个。这叫​​弹性伸缩​​。

    1. ​服务发现和负载均衡 (Service Discovery & Load Balancing)​
    • ∙ ​​问题​​:容器动不动就重启、扩容、缩容,它的IP地址会变来变去。订单服务怎么才能知道用户服务的最新地址?

    • ∙ ​​K8s的解决方案​ ​:提供一个​​固定的"服务名"(Service)​ ​ 作为访问入口。订单服务只需要访问 http://user-service这个固定地址,K8s会自动将请求​​负载均衡​​到背后所有健康的用户服务容器上,完全屏蔽了容器IP的变化。这就是上图中的"港口码头"。

    1. ​自愈能力 (Self-healing)​
    • ∙ K8s不断检查所有容器的健康状况。如果发现一个容器崩溃了,它会​​毫不犹豫地杀掉它,然后重新启动一个新的​​,整个过程完全自动化,无需人工干预。
    1. ​秘钥和配置管理 (Secrets & Configuration Management)​
    • ∙ 像数据库密码、API密钥这些敏感信息,可以用K8s的 ​​Secret​​ 对象来安全地存储和传递,而不是硬编码在容器里。

    • ∙ 应用程序的配置文件可以用 ​​ConfigMap​​ 来管理,修改配置后可以统一下发,而不需要重新打包整个容器镜像。

总结:Docker 和 K8s 的关系

  • ∙ ​​Docker​ ​:是​​打包和创建容器​ ​的工具。它解决了"​​应用和环境一起搬运​​"的问题。

    • ∙ ​​比喻​ ​:负责​​制造和标准化集装箱​​。
  • ∙ ​​K8s (Kubernetes)​ ​:是​​自动化管理和调度大量容器​ ​的平台。它解决了"​​成千上万个容器如何在集群中高效、可靠地运行​​"的问题。

    • ∙ ​​比喻​ ​:负责​​指挥全球的集装箱货轮舰队​​,决定哪个集装箱放哪艘船、何时出发、如何路由、坏了如何替换。

所以,在你之前了解的企业网站架构中,​​K8s​ ​ 就位于 ​​"支撑与运维层"​ ​,它和 ​​Docker​ ​ 一起,构成了现代化应用​​容器化与编排​ ​的核心基石,是实现​​微服务架构​ ​、​​DevOps​ ​ 和​​云计算​​的关键技术。没有它,大规模微服务的管理将是一场噩梦。

相关推荐
可爱的小小小狼1 小时前
k8s的kube-prosy
云原生·容器·kubernetes
腾讯数据架构师1 小时前
k8s 兼容摩尔线程
人工智能·云原生·容器·kubernetes·cube-studio
可爱的小小小狼1 小时前
k8s中的schedule
云原生·容器·kubernetes
桥边驿语人3 小时前
Docker 容器无法访问外网的问题排查与解决指南
运维·docker·容器
神秘人X7077 小时前
docker安装
docker·容器·eureka
zzz.107 小时前
Calico 网络插件在 K8s 集群的作用
网络·云原生·kubernetes
失因7 小时前
Docker 容器与镜像
java·运维·spring cloud·docker·容器
一个向上的运维者8 小时前
使用 Kubernetes(k8s) 搭建 Redis 3 主 3 从集群教程
redis·容器·kubernetes
2501_920047038 小时前
k8s-pod的资源限制
云原生·容器·kubernetes
K_i1348 小时前
K8s日志架构:Sidecar容器实践指南
云原生·容器·kubernetes