KubeSphere学习笔记:部署nginx
本文首发于 栏轩·阁欢迎访问阅读原文获取更好的阅读体验。一、前言本文在已有 KubeSphere 环境和 K8s 集群的基础上记录如何通过 KubeSphere 部署一个完整的 Nginx 网站。适用场景已在本地通过 Docker Desktop 启用 K8s 集群已安装 KubeSphereks-core希望通过可视化界面 命令行结合的方式管理网站部署本文重点创建配置字典ConfigMap管理 Nginx 配置文件创建持久卷PVC挂载网站静态文件创建工作负载Deployment并配置挂载创建 LoadBalancer 服务暴露到宿主机通过kubectl cp上传 HTML 文件二、整体架构用户访问 → localhost:8888 → envoy 代理容器(LoadBalancer) → K8s NodePort → Pod:80(Nginx) ├── /usr/share/nginx/html (PVC 持久卷) └── /etc/nginx/conf.d/ (ConfigMap 配置)三、创建配置字典ConfigMap3.1 什么是配置字典配置字典ConfigMap是 K8s 中用来存储配置文件的资源对象。这里用来存储 Nginx 的配置文件挂载到 Pod 中后 Nginx 可以直接读取。3.2 创建步骤在 KubeSphere 项目中进入配置 → 配置字典点击创建。3.3 nginx.conf主配置用来控制 Nginx 的全局行为包括工作进程数、日志格式、事件模型等user nginx; worker_processes 1; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main $remote_addr - $remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for; access_log /var/log/nginx/access.log main; sendfile on; keepalive_timeout 65; include /etc/nginx/conf.d/*.conf; }3.4 default.conf站点配置用来配置具体的虚拟主机定义监听端口、站点根目录等server { listen 80; server_name localhost; location / { root /usr/share/nginx/html; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location /50x.html { root /usr/share/nginx/html; } }注意站点根目录root指向/usr/share/nginx/html这就是后面要挂载持久卷的位置。四、创建持久卷PVC持久卷PersistentVolumeClaimPVC用于持久化存储网站静态文件。这样即使 Pod 重启上传的 HTML 文件也不会丢失。在 KubeSphere 中创建进入存储 → 持久卷声明点击创建。容量按需设置本例设为 10Gi访问模式选择单节点读写RWO。存储卷创建后会自动绑定到后端的存储类StorageClass。五、创建应用工作负载5.1 镜像地址docker.1ms.run/library/nginx:latest使用国内镜像源加速拉取。如果使用 Docker Hub 官方镜像地址为nginx:latest。5.2 挂载持久卷将上一步创建的 PVC 挂载到容器内 Nginx 的网页根目录用于存放 HTML 静态文件。字段值挂载路径/usr/share/nginx/html存储卷选择已创建的 PVC读写权限读写5.3 挂载配置字典Nginx 有两个关键配置文件需要挂载涉及多个路径需分别配置存储卷容器内挂载路径子路径Key 名称nginx 配置字典/etc/nginx/nginx.confnginx.confnginx 配置字典/etc/nginx/conf.d/default.confdefault.conf六、两种挂载方式的区别在配置字典挂载时KubeSphere 提供了两种挂载方式理解其区别非常重要6.1 指定子路径subPath适用于精准挂载单个文件。当配置字典包含多个 Key 时直接填写目标Key 名称如nginx.conf挂载路径填写容器内完整文件路径如/etc/nginx/nginx.conf。该方式仅替换指定文件不会清空目标目录原有内容。使用场景只想替换某个配置文件保留 Nginx 镜像自带的其余默认配置。6.2 选择指定键items 模式需先指定挂载路径为容器内的父目录再逐一为配置字典里的每个 Key 单独分配容器内子路径名。该模式会先清空目标父目录再放入指定文件。使用场景需要批量挂载多个配置文件且不关心容器原有默认配置。6.3 使用建议想要保留容器原有文件如 Nginx 原生配置、仅替换个别配置文件优先使用指定子路径。需要批量挂载多个文件、且允许清空目标目录时再使用选择指定键。二者不要同时勾选避免挂载异常。七、创建服务暴露到宿主机7.1 创建 Service工作负载部署完成后需要创建 Service 才能外部访问。在 KubeSphere 中进入服务 → 服务点击创建服务类型LoadBalancer端口映射Pod 端口80→ Service 端口8888或其他你想要的端口注意不需要配置键值对标签Docker Desktop 会自动创建 envoy 代理容器供外部访问。7.2 LoadBalancer 原理说明在 Docker Desktop 的 K8s 环境中Service 改为 LoadBalancer 类型后kind-cloud-provider组件会自动创建一个 envoy 代理容器将宿主机端口映射到集群内部localhost:8888 → envoy 容器:8888 → NodePort → Pod:80⚠️注意如果 Host 端口和已有的 Docker 容器端口冲突如本地已有 Nginx 占用了 80 端口LoadBalancer 会卡在pending状态需要手动指定一个空闲端口。7.3 查看 Service 状态kubectl get svc-n项目名称Expected output:NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE nginx LoadBalancer 10.96.135.68 172.18.0.6 8888:31056/TCP 2hEXTERNAL-IP出现 IP 地址而非pending代表 LoadBalancer 创建成功。八、上传 HTML 文件8.1 403 问题Service 创建成功后访问http://localhost:8888会出现403 Forbidden原因很简单——页面根目录/usr/share/nginx/html是空的Nginx 找不到默认页面。8.2 使用 kubectl cp 上传文件首先查看 Pod 名称kubectl get pods-n项目名称上传本地dist/目录下的文件到 Podkubectlcp./dist/.Pod名称:/usr/share/nginx/html/-n项目名称⚠️ 路径注意./dist/.—— 把dist目录里面的内容上传到目标路径正确./dist/—— 把dist目录本身上传到目标路径会变成html/dist/错误8.3 删除或重新上传如果传错目录结构需要先清理再重新上传kubectlexec-n项目名称Pod名称--rm-rf/usr/share/nginx/html/*⚠️注意rm -rf *通配符在部分 shell 环境中可能不生效改用精确路径更可靠kubectlexec-n项目名称Pod名称--rm-rf/usr/share/nginx/html/dist命令说明kubectl exec可以进入容器内部执行 Linux 命令--后面跟的就是要在容器内执行的命令。8.4 访问验证文件上传后再次访问http://localhost:8888可以看到页面正常显示。九、常用运维命令9.1 查看 Pod 状态和详情# 查看项目下所有 Podkubectl get pods-n项目名称# 查看 Pod 详细信息包括挂载、事件等kubectl describe pod-n项目名称Pod名称9.2 查看配置字典内容kubectl get configmap-n项目名称配置名称-oyaml9.3 查看持久卷PVCkubectl get pvc-n项目名称9.4 查看 Service 和 External-IPkubectl get svc-n项目名称9.5 查看 Pod 内部文件结构kubectlexec-n项目名称Pod名称--ls-la/usr/share/nginx/html/十、总结阶段操作要点配置创建 ConfigMap挂载时注意区分 subPath 和 items 模式存储创建 PVC挂载到/usr/share/nginx/html部署创建 Deployment配置镜像和挂载路径暴露创建 LoadBalancer Service注意端口冲突Docker Desktop 自动创建 envoy 代理上传kubectl cp路径用./dist/.不是./dist/运维kubectl exec进入容器执行命令方便调试和管理通过 KubeSphere 可视化界面结合kubectl命令行可以很方便地在本地 K8s 环境中完成 Nginx 网站部署。理解 ConfigMap 挂载机制和 LoadBalancer 在 Docker Desktop 下的工作原理能帮助我们更快排查问题。

相关新闻

腾讯开源UCL-MPComm通信库,零拷贝传输性能提升30%、非零拷贝最高提升5倍!

腾讯开源UCL-MPComm通信库,零拷贝传输性能提升30%、非零拷贝最高提升5倍!

【导语:腾讯网平团队宣布开源UCL-MPComm通信库,并将其作为transport接入Mooncake TENT。该通信库针对AI Memory池化场景的数据传输需求深度优化,能实现高性能通信,且性能提升显著。】UCL-MPComm接入Mooncake TENT,性能…

2026/8/6 17:32:32 阅读更多 →
基于Rust与CUDA构建高性能大模型推理引擎:从原理到实践

基于Rust与CUDA构建高性能大模型推理引擎:从原理到实践

在实际的大模型推理部署场景中,性能、效率和易用性往往是开发者面临的核心挑战。传统的推理引擎如 llama.cpp 虽然凭借其 C 实现和广泛的社区支持成为了许多项目的起点,但在追求极致性能、现代语言特性支持以及跨平台部署的灵活性时,开发者们…

2026/8/6 17:31:31 阅读更多 →
STM32-S177-交流电压+电流+功率+过载保护+定时开关+时钟+漏电保护+OLED屏+声光报警+按键+(无线方式选择)-21(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_

STM32-S177-交流电压+电流+功率+过载保护+定时开关+时钟+漏电保护+OLED屏+声光报警+按键+(无线方式选择)-21(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_

STM32-S177-交流电压电流功率过载保护定时开关时钟漏电保护OLED屏声光报警按键(无线方式选择)-21(设计源文件万字报告讲解)(支持资料、图片参考_相关定制)_ 产品功能描述: 本系统由STM32F103C8T6单片机核心板、OLED屏、时钟电路、&#xff08…

2026/8/6 17:31:31 阅读更多 →

最新新闻

OSkhQuant:让量化交易像搭积木一样简单

OSkhQuant:让量化交易像搭积木一样简单

OSkhQuant:让量化交易像搭积木一样简单 【免费下载链接】OSkhQuant 看海量化回测系统(看海量化交易系统)开源代码,khQuant框架,实现A股可视化回测,全部开源。 项目地址: https://gitcode.com/gh_mirrors/…

2026/8/6 18:27:56 阅读更多 →
安装 qt 使用清华镜像源

安装 qt 使用清华镜像源

在线安装器下载 链接:https://mirrors.tuna.tsinghua.edu.cn/qt/official_releases/online_installers/ 下载对应的版本 打开系统终端,执行命令进行安装(windows类似)添加可执行权限 chmod x qt-unified-linux-x64-online.run添…

2026/8/6 18:27:56 阅读更多 →
MuseTalk实战指南:从零掌握实时高质量唇语同步技术

MuseTalk实战指南:从零掌握实时高质量唇语同步技术

MuseTalk实战指南:从零掌握实时高质量唇语同步技术 【免费下载链接】MuseTalk MuseTalk: Real-Time High Quality Lip Synchorization with Latent Space Inpainting 项目地址: https://gitcode.com/gh_mirrors/mu/MuseTalk MuseTalk是腾讯音乐娱乐集团Lyra实…

2026/8/6 18:27:56 阅读更多 →
影视仓最新配置接口2026 tvbox源配置地址

影视仓最新配置接口2026 tvbox源配置地址

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录一、软件介绍演变过程实用之道进阶之路二、使用步骤影视仓TV版:★★★分享——整理的仓库接口,以供学习研究★★★一、软件介绍 影视仓是一款…

2026/8/6 18:27:56 阅读更多 →
基于Java的农场农业服务系统(Java+SSM+MySQL)| 计算机毕业设计 附源码论文PPT

基于Java的农场农业服务系统(Java+SSM+MySQL)| 计算机毕业设计 附源码论文PPT

本项目为计算机本科毕业设计,采用 Java SSM(Spring SpringMVC MyBatis) 作为后端框架,Vue.js 作为前端,数据库使用 MySQL。系统涵盖用户管理、种植户管理、农产品及农产品类型管理、农资产品及农资类型管理、农资技…

2026/8/6 18:27:56 阅读更多 →
三个月狂烧1068亿押注AI,市值一夜缩水8772亿:马斯克在给黄仁勋“打工“?

三个月狂烧1068亿押注AI,市值一夜缩水8772亿:马斯克在给黄仁勋“打工“?

SpaceX上市后首份成绩单出炉:营收近乎翻倍,股价却盘后暴跌8%。问题出在哪?8月5日消息,就在今天,SpaceX交出了其上市以来的第一份季度财报。单看营收数字,这份成绩单堪称亮眼:2026年第二季度&…

2026/8/6 18:26:55 阅读更多 →

日新闻

深入解析LimboAI C++内核:架构设计与性能优化实战

深入解析LimboAI C++内核:架构设计与性能优化实战

1. 项目概述:为什么我们需要深入LimboAI的C内核?如果你是一名使用Godot引擎的游戏开发者,尤其是对AI行为逻辑有较高要求的项目,那么LimboAI这个名字你大概率不会陌生。它作为Godot 4生态中一个备受瞩目的行为树与状态机插件&#…

2026/8/6 0:00:06 阅读更多 →
Unity 2D游戏敌人AI系统:基于PlayMaker状态机与2D Toolkit的实战开发

Unity 2D游戏敌人AI系统:基于PlayMaker状态机与2D Toolkit的实战开发

1. 项目概述与核心思路大家好,我是老张,一个在游戏开发一线摸爬滚打了十多年的老码农。今天咱们接着聊《空洞骑士》风格2D动作游戏的Demo制作。上一期我们搭好了基础框架,处理了角色移动和碰撞,这一期,我们要让游戏世界…

2026/8/6 0:00:06 阅读更多 →
被动防火门市场前景发展趋势

被动防火门市场前景发展趋势

被动防火门依靠材质结构、密闭构造阻隔烟火蔓延,无需电控启动,是建筑被动消防系统核心构件,行业依托新规管控、城市更新、工业安全升级迎来稳定扩容,整体朝着合规化、专项化、低碳化、智能化方向发展。现阶段 GB12955‑2024 新版国…

2026/8/6 0:00:06 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/5 15:00:43 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/5 13:13:56 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/5 10:20:36 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/5 23:28:39 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/5 21:00:14 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/5 23:46:51 阅读更多 →