Kubernetes 核心功能实战指南:部署、访问、扩缩容与滚动更新
创作时间:
作者:
@小白创作中心
Kubernetes 核心功能实战指南:部署、访问、扩缩容与滚动更新
引用
CSDN
1.
https://m.blog.csdn.net/yj11290301/article/details/145624835
Kubernetes(k8s)是容器编排领域的“操作系统”,它让应用部署和管理变得像搭积木一样简单。本文用具体案例+实操命令,带你快速掌握四大核心功能!
一、应用部署:从零启动一个服务
(1)部署在哪里?
很多新手第一次用 k8s 都会困惑:我部署的服务到底跑在哪台机器上了?是 Master 节点还是 Node 节点?先说结论:默认情况下,你的服务会装在 Node 节点上!下面用实操演示告诉你为什么。
想象 Kubernetes 集群像一个公司:
- Master 节点:老板(负责指挥调度,不干具体活)
- Node 节点:员工(真正干活运行服务的地方)
默认安全规则:老板(Master)不亲自搬砖(运行 Pod),防止业务影响管理功能!
(2)部署服务时,如何查看装在哪?
关键命令:
kubectl get pods -o wide
实战步骤:
(1)创建 Deployment(以 Nginx 为例):
kubectl create deployment my-demo --image=nginx --replicas=2
核心概念:
- Deployment:定义应用的副本数量、镜像版本等,自动管理 Pod 的生命周期。
- Pod:最小部署单元,一个 Pod 可包含多个容器(通常 1:1)。
(2)查看 Pod 所在节点:
kubectl get pods -o wide
NAME READY STATUS NODE IP AGE
my-demo-5dbf6f49ff-abcde 1/1 Running node-01 10.244.1.2 1m
my-demo-5dbf6f49ff-fghij 1/1 Running node-02 10.244.2.3 1m
重点看 NODE 列:这里显示的是 Node 节点名称(如 node-01),绝对不可能是 master!
(3)查看部署状态:
kubectl get deployments # 显示 READY 状态
kubectl get pods -o wide # 查看 Pod 的 IP 和所在节点
NAME READY UP-TO-DATE AVAILABLE
my-web 2/2 2 2
二、服务访问:给用户开个访问入口
原理:用 Service 创建一个「门牌号」,流量自动分发到所有 Pod
(1)创建 NodePort 类型 Service(开个大门):
kubectl expose deployment my-website --type=NodePort --port=80
(2)获取访问地址:
kubectl get service my-website
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S)
my-website NodePort 10.96.123.45 <none> 80:31789/TCP # 重点看 31789
- 访问方式:
- 本地测试(如 Minikube):
minikube service my-website - 云服务器:用任意 Node 节点的 IP + 31789 端口(如
http://192.168.1.100:31789
)
测试访问:
curl http://<Node节点IP>:31789 # 看到 Nginx 欢迎页即成功!
三、弹性扩缩容:应对流量高峰
口诀:老板一声令下,员工(Pod)立刻增减!
核心场景:
- 促销期间扩容 → 增加 Pod 副本数
- 夜间流量低谷 → 减少 Pod 节省资源
(1)扩容到 5 个副本(应对双十一):
kubectl scale deployment my-website --replicas=5
(2)缩容到 2 个副本(半夜省资源):
kubectl scale deployment my-website --replicas=2
(3)实时监控变化:
watch kubectl get pods
四、滚动更新:无缝升级不宕机
原理:逐个替换旧 Pod,用户无感知!
核心优势:
- 逐个替换旧 Pod,确保服务始终可用
- 支持回滚到历史版本
(1)升级到 Nginx 1.21 版本:
kubectl set image deployment/my-website nginx=nginx:1.21
(2)查看更新进度:
kubectl rollout status deployment/my-website
(3)紧急回滚(发现新版本有 Bug):
kubectl rollout undo deployment/my-website # 瞬间回到上一个版本!
技术原理揭秘
功能 | 核心原理 | 关键命令 |
|---|---|---|
部署 | Deployment 创建 Pod → 调度到 Node 节点 | kubectl create deployment |
访问 | Service 创建虚拟 IP → 流量转发到所有 Pod | kubectl expose |
扩缩容 | 修改副本数 → K8S 自动创建/删除 Pod | kubectl scale |
滚动更新 | 新 Pod 启动 → 旧 Pod 终止(分批替换) | kubectl set image |
常见问题解答
Q1:为什么访问 Service 的端口是 3 万多的数字?
A:NodePort 默认端口范围 30000-32767,防止和常用端口冲突
Q2:缩容会不会导致服务中断?
A:不会!K8S 会先让 Pod 停止接收新流量,再终止它
Q3:滚动更新时旧版本请求会丢失吗?
A:不会!旧 Pod 只有在所有请求处理完成后才会关闭
热门推荐
显示器突然无法使用的原因及解决方法
雍和宫:皇家寺院的历史与文化之旅
在高速上,真的车速越快越省油吗?
烧伤后如何快速补液
诗韵清明 春满华夏 《我们的节日•清明赏春诗会》大型融媒体直播即将启幕
孕妇吃话梅致畸吗?专家解读话梅食用指南
当被邀请参加同事的私人聚会时,应该遵循哪些职场礼仪
心理所有权效应:解锁消费者购买欲望的魔法钥匙,构建品牌忠诚度的秘密武器
一万元理财攻略:如何实现资产增值?
乐曲里的阴森旋律——《Dies irae》圣歌的恐怖魔力
何首乌的毒性有多大
这些特色“一件事” 可以更好办
汽车天窗遮阳帘材料耐光照老化和机械磨损可靠性测试办理后续维护要点
老房子拆迁问题全解析:不想拆怎么办?土地使用权归谁?房改受阻如何应对?
低代码平台技术选型:企业关注的12个关键问题
无米炒饭(老豆腐炒饭)
缺土怎么补:探讨土壤健康与农业发展的重要性
信阳:山水为底红铸魂
科研级金相显微镜的样品制备技巧
纯金项链怎么清洗 纯金项链怎么保养?
如何在升级到 iOS 18 之前备份 iPhone
鱼缸除藻排名及鱼缸除藻生物排行榜:选择最适合的方法生物方法
解密番茄家族:圣女果与西红柿的前世今生,它们有何不同?
农村房屋过户问题解析,土地使用证是否足够?
上海十大经典名菜:从红烧肉到八宝鸭,品味海派美食文化
如何在关系中减少依赖性?
温州周边自驾游全攻略:雁荡山、楠溪江、洞头岛美食美景一网打尽
行李箱规格尺寸对照表:轻松选款攻略
网络工程师的职业规划
安居水站:奥威尔《1984》我们如何警惕!