K8S学习记录
844 字
4 分钟
K8S学习记录
简介
Kubernetes(k8s)的工作原理是:
你向集群声明应用的期望状态(如部署几个副本、使用什么镜像),控制平面(Control Plane)中的 API Server 接收请求,Scheduler 负责将 Pod 调度到合适的工作节点,Controller Manager 持续监控实际状态并与期望状态比对,若发现偏差则自动调谐(如节点宕机后重新调度 Pod),各 Node 上的 Kubelet 负责执行指令并管理本节点的 Pod 生命周期,从而实现一个自愈、可弹性伸缩的容器编排系统。
大规模部署分布式应用的平台 管理一系列的主机或者服务器:node 节点 每个节点运行若干个pod:pod:可部署的最小执行单元 由中心计算机进行管理:control plane 控制平面
如果容器过多,docker-compose管控还是不够,就需要引入k8s,所以k8s就是容器的调度中心
传统部署的缺点
- 应用挂了无法自动重启
- 访问量突增时无法快速扩容
- 多台服务器部署复杂,环境不一致
- 迁移。升级应用麻烦,容易出错
- 资源利用效率低,服务器浪费严重
k8s解决了什么核心问题?
- 自动故障恢复
应用崩溃,服务器宕机,k8s会自动在其他节点重启容器 - 自动缩扩容
根据访问压力,自动增加 / 减少实例数量,不用人工干预 - 统一调度管理
多台服务器统一管理,就像管理一台机器一样方便 - 服务自愈与高可用
自动检测健康状态,不健康就杀掉重建,保障服务稳定 - 环境一致性
基于容器进行的开发,测试、生产环境完全一致 - 滚动更新与回滚
升级应用不停机,出问题一键回滚,安全可靠
基础组件
k8s 核心组件:Pod / Service / Deployment
Pod
核心定义:
k8s中最小的部署和调度单元不是容器本身,而是容器的”包装”—一个pod里面可以放1个或者多个容器(通常只放一个),这些容器共享同一网络、存储资源
要点:
- k8s不会直接调度容器,只会调度pod(所有容器必须在pod里面才会被k8s调度)
- pod里面的容器“同生共死”,一个容器崩溃异常,k8s会直接重建整个pod
- 每个pod有独立的ip地址,仅在k8s集群内部可用,外部无法直接访问
Service Pod的固定访问入口
核心定义:
解决Pod地址不固定的问题,为一个或多个的Pod提供固定的调用地址
要点:
- Service不运行应用,只转发请求
- Service地址固定,不擅长不变化
Deployment Pod的控制器
核心定义:
管理Pod的控制器,负责Pod的创建、更新、扩容、回滚
要点:
- Deployment不直接运行应用,只负责管理Pod,定义好Pod的数量、版本,Deployment会自动维持这个状态
- 支持滚动更新,升级应用时,不停止旧Pod,先启动新Pod,再删除旧Pod
- 支持回滚,可一键回滚到上一个版本
k8s基本命令
基础格式
官方文档
https://kubernetes.io/docs/reference/kubectl/
kubectl [命令][类型][名称][选项]
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!














