最新消息
2024 年 6 月,Kubernetes 1.30 版本正式发布,引入了对带外数据(OOB)管理的初步支持,旨在改善节点通信的可靠性。同时,社区统计显示,过去一年中生产环境使用 K8s 的企业比例增长了 15%。
K8s 到底是个啥?
简单来说,Kubernetes(常简称为 K8s)是一个用来管理很多个容器的系统。你可以把它想象成一个非常智能的容器管家。以前,你可能只在几台机器上运行几个应用,手动管管还行。但当应用越来越多,机器成百上千时,怎么部署、怎么保证它们不挂掉、怎么更新就成了大麻烦。K8s 就是来解决这些麻烦的。它帮你自动安排容器在哪台机器上运行,自动重启挂掉的容器,自动调整容器数量来应对流量变化,让你能轻松管理大规模的应用。
核心组件都是干什么的?
要理解 K8s,得先知道它里面几个关键部分是怎么分工合作的。首先是控制中心,也叫控制平面。它就像公司的大脑,由几个部分组成:一个是调度器,负责决定把新来的容器任务放到哪台合适的机器上;一个是控制器管理器,里面有很多小经理,时刻关注着系统的状态,比如确保始终有指定数量的容器在运行,如果少了就命令去新建;还有一个是键值存储库,用来保存整个集群的所有重要信息,比如谁在运行、在哪里运行。然后是数据平面,也就是真正干活的机器们,叫做节点。每个节点上都有两个关键角色:一个是代理,它负责跟大脑沟通,接收指令并确保本机上的容器按照指令运行;另一个是容器运行时,就是真正负责启动和运行容器的软件,比如 Docker。最后还有一个很重要的部分叫 API 服务器,它是整个系统对外的唯一窗口,所有指令、所有状态查看,都必须通过它。你发的命令,它先处理,然后再通知其他组件。
运维中的关键概念
光知道组件还不够,日常运维中经常打交道的是几个抽象概念。第一个是 Pod,它是 K8s 里最小的管理单位。一个 Pod 里面可以有一个或多个紧密相关的容器,它们共享网络和存储,就像一个小团队。第二个是 Deployment,它用来描述你希望某个应用保持什么样的状态,比如“我要运行 3 个这样的 Pod”。它会帮你监控着,如果 Pod 挂了或者机器坏了,它会自动创建新的来维持这个数量,滚动更新应用版本也靠它。第三个是 Service,因为 Pod 可能会被销毁重建,IP 地址会变,Service 就给一组提供相同服务的 Pod 一个固定的访问入口和名字,让其他应用能找到它们。第四个是 ConfigMap 和 Secret,用来把配置信息和敏感数据(比如密码)从容器镜像里分离出来,这样改配置就不用重新做镜像了。
进阶运维要关注什么?
当基本功能用熟后,要确保系统稳定高效,还得关注几个方面。一个是资源管理,你需要给容器设定它需要多少 CPU 和内存,以及最多能用多少,防止某个应用吃光资源拖垮整个机器。一个是健康检查,K8s 可以定期检查容器是否还健康,不健康的就重启或替换。还有一个是存储,容器里的数据默认是临时的,Pod 一删就没了。需要持久化的数据,比如数据库文件,要通过“持久卷”挂载到容器里。最后是网络,K8s 要求集群内所有 Pod 无论在哪台机器上,都能直接通过 IP 相互访问,这通常需要额外的网络插件来实现。
参考来源
本文内容综合参考了 Kubernetes 官方文档(kubernetes.io/docs)、CNCF(云原生计算基金会)发布的年度调查报告、以及技术社区如 Stack Overflow 和知乎上关于 K8s 运维实践的常见讨论与分享。