K8S-pod管理与控制器管理
虚拟机配置实验 1加载并推送实验镜像到 Harbor 仓库目的将本地实验镜像 myapp:v1 和 myapp:v2 上传到私有 Harbor 仓库的 library 项目供集群拉取。docker load -i myapp.tar.gz # 加载本地镜像包 docker tag timinglee/myapp:v1 reg.timinglee.org/library/myapp:v1 # 打标签 docker push reg.timinglee.org/library/myapp:v1 # 推送到 Harbor docker tag timinglee/myapp:v2 reg.timinglee.org/library/myapp:v2 docker push reg.timinglee.org/library/myapp:v2实验 2创建 Deployment命令式目的使用命令式方式创建 Deployment 控制器管理 2 个 Pod 副本kubectl create deployment webcluster --replicas 2 --image myapp:v1 kubectl get deployments.apps # 查看 Deployment 状态 kubectl get pods -o wide # 查看 Pod 详情实验 3暴露 ServiceClusterIP 类型目的为 Deployment 创建内部 ClusterIP Service供集群内其他服务访问。kubectl expose deployment webcluster --port 80 --target-port 80 kubectl get service webcluster kubectl describe svc webcluster # 查看 Endpoints curl ClusterIP/hostname.html # 测试访问实验 4扩缩容scale目的动态调整 Deployment 的 Pod 副本数。kubectl scale deployment webcluster --replicas 3 kubectl get pods # 观察新增 Pod实验 5进入容器执行命令execkubectl exec -it pod-name -- /bin/sh ps # 查看容器内进程 exit目的进入容器内部进行调试或查看进程。实验 6查看 Pod 日志logs​ kubectl logs deployment/webcluster # 自动选择第一个 Pod kubectl logs pod-name # 指定 Pod ​目的查看 Deployment 下 Pod 的日志输出。实验 7添加标签labelkubectl label pods pod-name versionv1 kubectl get pods --show-labels # 查看标签目的为 Pod 添加自定义标签用于筛选或识别。实验 8更新镜像版本set imagekubectl set image deployment webcluster myappnew-image kubectl rollout status deployment webcluster # 查看更新进度目的触发 Deployment 的滚动更新将镜像从 v1 升级到 v2。实验 9查看 rollout 历史kubectl rollout history deployment webcluster kubectl rollout history deployment webcluster --revision1 # 查看特定版本详情目的查看 Deployment 的历史版本记录revision实验 10版本回滚rollout undokubectl rollout undo deployment webcluster --to-revision1 kubectl rollout status deployment webcluster curl NodeIP:NodePort # 验证版本回退目的将 Deployment 回滚到指定的历史版本v1实验 11创建 NodePort 类型 Servicekubectl delete service webcluster kubectl expose deployment webcluster --port 80 --target-port 80 --type NodePort kubectl get svc webcluster # 查看分配的 NodePort curl http://NodeIP:NodePort/hostname.html目的使应用能够从集群外部通过节点 IP 和端口访问。实验 12多容器 PodYAML 声明kubectl run testpod --image myapp:v1 --dry-runclient -o yaml testpod.yaml vim testpod.yaml # 添加第二个容器 busybox并设置 command: sleep 10000 kubectl apply -f testpod.yaml kubectl exec -it testpod -c busybox -- /bin/sh # 进入 busybox 容器 curl 127.0.0.1 # 访问 myapp1 的服务共享 localhost目的演示如何在 Pod 中运行多个容器并共享网络命名空间。实验 13hostPort 端口映射vim mysql.yml # 在 ports 下添加 hostPort: 8080 kubectl apply -f mysql.yml kubectl get pods -o wide # 查看 Pod 所在节点 curl http://NodeIP:8080/hostname.html目的将容器端口映射到宿主机端口使外部可直接通过宿主机 IP:port 访问。实验 14环境变量注入envenv: - name: MYSQL_ROOT_PASSWORD value: lee kubectl apply -f mysql.yml kubectl exec -it mysql -c mysql8 -- env # 查看环境变量目的通过环境变量向容器传递配置信息。实验 15节点选择器nodeSelectornodeSelector: kubernetes.io/hostname: node1 kubectl get nodes --show-labels # 查看节点标签 kubectl apply -f mysql.yml kubectl get pods -o wide # 确认 NODE 为 node1目的将 Pod 调度到指定标签的节点如 node1实验 16共享宿主机网络hostNetworkhostNetwork: true kubectl apply -f testpod.yaml kubectl exec -it testpod -- ip addr # 查看 IP 应为宿主机 IP目的使 Pod 直接使用宿主机网络栈IP 与宿主机相同。实验 17资源优先级QoS Classkubectl apply -f qos-best.yaml kubectl describe pod qos-best | grep QoS Class # 输出 BestEffort kubectl apply -f qos-burst.yaml # 设置 requests limits kubectl describe pod qos-burst | grep QoS Class # 输出 Burstable kubectl apply -f qos-guaranteed.yaml # 设置 requests limits kubectl describe pod qos-guaranteed | grep QoS Class # 输出 Guaranteed目的验证不同资源设置对应的 QoS 等级BestEffort、Burstable、Guaranteed实验 18容器重启规则restartPolicykubectl apply -f restart-always.yaml kubectl get pods -w # 观察容器退出后自动重启 kubectl apply -f restart-onfailure.yaml # 非正常退出才重启 kubectl apply -f restart-never.yaml # 退出后不重启目的验证不同 restartPolicy 下容器退出后的行为。实验 19Init 容器kubectl apply -f init-example.yml kubectl get pods -w # 状态为 Init:0/1 kubectl exec -it webserver -c init-busybox -- /bin/sh touch /testfile # 创建文件触发 Init 容器完成 exit # Pod 变为 Running目的演示 Init 容器在主容器启动前执行必须成功完成主容器才启动。实验 20Liveness 探针# 无探针 kubectl apply -f liveness-no-probe.yml kubectl exec -it webserver -- /bin/sh -c nginx -s stop kubectl describe pod webserver | grep Restart Count # 0Pod 仍 Running # 有探针 kubectl apply -f liveness-with-probe.yml kubectl exec -it webserver -- /bin/sh -c nginx -s stop kubectl get pods # 观察 Restarts 增加目的对比有无存活探针时容器异常后的恢复能力实验 21Readiness 探针# 无探针删除 index.html 后 Endpoints 仍然存在 kubectl describe svc webserver | grep Endpoints # 有 IP # 有探针删除 index.html 后 Endpoints 变为空 kubectl describe svc webserver | grep Endpoints # 空 # 恢复 index.html 后 Endpoints 重新出现目的对比有无就绪探针时 Service Endpoints 的变化。实验 22Deployment 滚动更新策略配置strategy: rollingUpdate: maxSurge: 1 maxUnavailable: 0 kubectl apply -f dep.yml kubectl describe deploy webcluster | grep -A5 RollingUpdateStrategy # 输出0 max unavailable, 1 max surge目的自定义滚动更新参数实现零停机更新实验 23更新暂停与恢复pause/resumekubectl rollout pause deployment webcluster # 暂停更新 kubectl set image deployment webcluster myappmyapp:v2 # 修改镜像不触发更新 kubectl rollout history deployment webcluster # 没有新 revision kubectl rollout resume deployment webcluster # 恢复更新 kubectl rollout history deployment webcluster # 出现新 revision目的控制更新过程实现金丝雀发布。

相关新闻

iOS国密静态库构建:arm64+bitcode兼容性实战指南

iOS国密静态库构建:arm64+bitcode兼容性实战指南

简介:静态库是iOS原生开发中集成C语言加密库(如国密算法实现)的核心载体,其本质是Mach-O格式的目标文件归档。理解静态库的架构切片(arm64)、符号表结构、bitcode嵌入机制及链接行为,是解决Xcod…

2026/11/5 21:36:55 阅读更多 →
静态住宅IP账号迁移、换IP必翻车?Shopip教您零风险更换与迁移运维技巧

静态住宅IP账号迁移、换IP必翻车?Shopip教您零风险更换与迁移运维技巧

在跨境社媒账号矩阵运维过程中,静态住宅IP是绑定账号权重、维持账号稳定运营的核心资产。长期稳定的固定网络环境,是平台判定账号为真实自然人使用、积累正常权重的关键。 但在实际运维工作中,难免会遇到各类网络环境变动场景:IP到…

2026/10/25 20:42:52 阅读更多 →
微软如何交付企业级Agent

微软如何交付企业级Agent

azure.microsoft.com/products/ai-foundry 微软的业务规模极为庞大。Foundry平台是微软用于构建、部署、运行 Agent的专用平台 微软自研的各类copilot产品均运行在该平台之上,其中Microsoft 365 Copilot就服务超2000万用户,原生智能体的月活跃使用量今年…

2026/10/25 23:36:31 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/6 15:21:35 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/6 9:29:27 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/6 22:01:11 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/6 22:01:11 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/6 8:08:42 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/6 22:01:09 阅读更多 →

日新闻

周新闻

月新闻