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 只有在所有请求处理完成后才会关闭
热门推荐
白术的种植条件剖析——选择合适的土壤和气候对栽种产生影响
循环生成对抗网络(CycleGAN)详解
银行只能办一张储蓄卡吗
如何培养孩子的数学思维能力?本文希望能帮助到你!
高息高返的五年贷款模式或将叫停,现在买车有必要选这种方式吗?
安全教育制度在企业工厂中的实施
传承书院文化 践行教育家精神
新疆“沙漠之舟”缘何变成“产业之舟”?
投身新能源,未来在何方?这些专业为你打开机遇之门!
雷雨天的线缆安全使用,保护生命与财产的关键
《防山洪、防溺水、防地质灾害》主题班会
探究古代王爷的权力范畴
明太祖朱元璋遗嘱的解读与分析
《维多利亚3》发布印度DLC与1.8免费更新
风筝文化与城市发展
锂离子电池工作原理详解
同样是胃疼可能暗示不同的疾病
我国团队发现肠道菌群是决定人体年龄的重要因素
长期吃面条,对身体有益还是有害?医生说出答案,早看完涨知识了
史上最成功的戒赌动漫——《赌博默示录》
汉堡简笔画活动教程步骤30张收藏
情感分析技术在哪些领域有应用呢
泰国的国家象征:国旗、国徽与国歌
用 DataEase 分析北京近年房价变化
换一样尺寸的轮毂年审
激光打孔设备及工艺的选择
除痣要看哪一科?了解不同醫學專業的角色與建議
揭秘傲澜传销事件:揭示传销组织的真相
重症患者的治疗性血浆置换:技术和适应症
以“未来产业”托举“产业未来” 看“经济第一大省”如何向新突围