k8s部署nginx+sshd实现文件上传下载
要通过 nginx 和 sshd 实现文件的上传和下载,通常的做法是结合 SSH 协议和 HTTP 协议,使用 nginx 提供 Web 服务器功能,同时使用 sshd(即 SSH 服务)来处理通过 SSH 协议进行的文件传输。
-
SSH 实现文件的上传和下载: 通过
sshd实现文件上传和下载通常使用 SCP 或 SFTP 协议。你可以通过 SSH 客户端将文件上传到服务器,或从服务器下载文件。这个过程不依赖于nginx,但你可以通过nginx提供 Web 界面来管理文件传输。 -
nginx 提供 Web 界面进行文件上传和下载:
nginx本身并不直接处理文件上传功能,但你可以配合一些后端服务(如 PHP、Python、Node.js 等)来实现文件上传和下载的 Web 界面。
一、准备工作
思路
在同个pod部署nginx和sshd服务,然后共享一个存储卷即可
准备nginx和ssd的镜像
docker pull nginx:stable-alpine
docker pull circleci/sshd:0.1
共享目录
/usr/share/nginx/html
示意图

二、配置共享存储
创建一个 PVC 来请求共享存储
[root@node1.local ~]# nginx-ssh-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: shared-pvc
spec:accessModes:- ReadWriteMany # 允许多个容器读写同一存储resources:requests:storage: 5Gi # 存储大小可以根据需要调整
部署 PVC
kubectl apply -f nginx-ssh-pvc.yaml
三、sshd打docker镜像
#查看目录
[root@node1.local sshd]# ll
total 20
drwxr-xr-x 2 root root 4096 Dec 24 13:50 ./
drwx------ 33 root root 4096 Dec 30 16:52 ../
-rw-r--r-- 1 root root 174 Dec 24 12:00 Dockerfile
-rw-r--r-- 1 root root 591 Dec 24 11:48 shadow
-rw-r--r-- 1 root root 140 Dec 24 13:32 sshd_config#生成加密密码
[root@node1.local sshd]# openssl passwd -6
Password:
Verifying - Password:
$6$YiALKQwJcDubTbBn$OEKLYvJfA8vkXAbgCGqTonP.hz5v4/gDcdvDJx0xHGiHlU.Obqpgji0m5tt1vHcTsUlqnFaMSzNiBlnn0USQZ0#设置root密码
[root@node1.local sshd]# cat shadow
root:$6$YiALKQwJcDubTbBn$OEKLYvJfA8vkXAbgCGqTonP.hz5v4/gDcdvDJx0xHGiHlU.Obqpgji0m5tt1vHcTsUlqnFaMSzNiBlnn0USQZ0:20081:0:::::
bin:!::0:::::
...#将配置文件添加到容器
[root@node1.local sshd]# cat sshd_config
UsePAM yes
PasswordAuthentication yes
PermitEmptyPasswords no
ChallengeResponseAuthentication no
PermitRootLogin yes
AllowTcpForwarding yes
编写dockerfile
[root@node1.local sshd]# cat Dockerfile
FROM harbor.cherry.com/sshd/sshd:0.1COPY shadow /etc/shadow
COPY sshd_config /etc/ssh/sshd_configENV TZ=Asia/ShanghaiRUN chmod 640 /etc/shadow
打镜像
docker build -t . sshd:v2
推送harbor仓库
docker tag sshd:v2 harbor.cherry.com/sshd/sshd:2
docker push harbor.cherry.com/sshd/sshd:2
四、部署 Nginx 和 SSH
在同个pod中来运行 Nginx 和 SSH 服务,并使用共享的 PVC 挂载文件存储
[root@node1.local ~]# nginx-ssh-pod.yaml
apiVersion: v1
kind: Pod
metadata:name: nginx-ssh-pod
spec:containers:- name: nginximage: nginx:stable-alpine # 使用官方 Nginx 镜像ports:- containerPort: 80volumeMounts:- name: shared-storagemountPath: /usr/share/nginx/html # 共享目录,用于提供文件下载- name: sshimage: harbor.cherry.com/sshd/sshd:2 # 使用自定义的 SSH 镜像ports:- containerPort: 22volumeMounts:- name: shared-storagemountPath: /usr/share/nginx/html # 共享目录,用于文件上传volumes:- name: shared-storagepersistentVolumeClaim:claimName: shared-pvc # 使用上面创建的 PVC
此配置文件定义了一个包含两个容器的 Pod:
- Nginx 容器:它提供文件下载服务,将
/usr/share/nginx/html目录挂载到共享存储。 - SSH 容器:它提供文件上传服务,将
/usr/share/nginx/html目录挂载到共享存储
部署pod
kubectl apply -f nginx-ssh-pod.yaml
五、暴露 Nginx 和 SSH 服务
创建 Nginx Service
[root@node1.local ~]# nginx-service.yaml
apiVersion: v1
kind: Service
metadata:name: nginx-service
spec:selector:app: nginx-ssh-podports:- protocol: TCPport: 80targetPort: 80type: LoadBalancer
创建 SSH Service
[root@node1.local ~]# ssh-service.yaml
apiVersion: v1
kind: Service
metadata:name: ssh-service
spec:selector:app: nginx-ssh-podports:- protocol: TCPport: 22targetPort: 22type: LoadBalancer
六、访问使用
- 文件下载:可以通过直接访问web界面 http:///files/来下载文件。
- 文件上传:可以通过winscp来实现上传文件
相关文章:
k8s部署nginx+sshd实现文件上传下载
要通过 nginx 和 sshd 实现文件的上传和下载,通常的做法是结合 SSH 协议和 HTTP 协议,使用 nginx 提供 Web 服务器功能,同时使用 sshd(即 SSH 服务)来处理通过 SSH 协议进行的文件传输。 SSH 实现文件的上传和下载&…...
Spring-Mybatis 2.0
前言: 第一点:过于依赖代码生成器或AI,导致基于mybaits的CRUD通通忘了,所以为了找回遗忘的记忆,有了该系列内容。 第二点:通过实践而发现真理,又通过实践而证实真理和发展真理。从感性认识而能…...
Linux 的历史与发展:从诞生到未来
Linux 的历史与发展:从诞生到未来 1. 起源之前:操作系统的历史背景 在 Linux 问世之前,操作系统的发展经历了多个重要阶段,这些阶段为 Linux 的诞生奠定了基础: 1940-1950 年代:计算机初期 早期计算机如 [[…...
SQL Server实现将分组的其他字段数据拼接成一条数据
在 SQL Server 中,可以使用 STRING_AGG 函数(SQL Server 2017 及更高版本支持)将分组的其他字段数据拼接成一条数据。以下是示例代码: 假设有一个表 Orders,结构如下: OrderIDCustomerIDProduct1C001Appl…...
学习笔记 --C#基础其他知识点(同步和异步)
C#中的同步和异步《一》 以下理解借鉴博客:借鉴博客地址1 异步编程(Asynchronous) 允许任务在后台执行,而不会阻塞调用线程。C#使用async和await关键字 async Task AsynchronousMethod() {// 等待异步操作完成await Task.Dela…...
一维、线性卡尔曼滤波的例程(MATLAB)
这段 MATLAB 代码实现了一维线性卡尔曼滤波器的基本功能,用于估计在存在噪声的情况下目标状态的真实值 文章目录 一维线性卡尔曼滤波代码运行代码介绍1. **初始化部分**2. **数据生成**3. **卡尔曼滤波器实现**4. **结果可视化**5. **统计输出**源代码总结一维线性卡尔曼滤波 …...
极品飞车6的游戏手柄设置
极品飞车,既可以用键盘来控制车辆的前进、后退、左转、右转、加速与减速,也可以使用游戏手柄来操作车辆的运行。需要注意的是,极品飞车虽然支持手柄,但是仅支持常见的北通、罗技还有部分Xbox系列的手柄,至于其他的PS4手…...
FreeRTOS Lwip Socket APi TCP Server 1对多
源文件 /********************************************************************************* file lwip_tcp_driver.cpp* brief TCP Server implementation using LwIP******************************************************************************* at…...
逆袭之路(11)——python网络爬虫:原理、应用、风险与应对策略
困厄铸剑心,逆袭展锋芒。 寒苦凝壮志,腾跃绘华章。 我要逆袭。 目录 一、引言 二、网络爬虫的基本原理 (一)网络请求与响应 (二)网页解析 (三)爬行策略 三、网络爬虫的应用领…...
KOI技术-事件驱动编程(Sping后端)
1 “你日渐平庸,甘于平庸,将继续平庸。”——《以自己喜欢的方式过一生》 2. “总是有人要赢的,那为什么不能是我呢?”——科比布莱恩特 3. “你那么憎恨那些人,和他们斗了那么久,最终却要变得和他们一样,…...
LVS 负载均衡原理 | 配置示例
注:本文为 “ LVS 负载均衡原理 | 配置” 相关文章合辑。 部分内容已过时,可以看看原理实现。 未整理去重。 使用 LVS 实现负载均衡原理及安装配置详解 posted on 2017-02-12 14:35 肖邦 linux 负载均衡集群是 load balance 集群的简写,翻…...
Hive分区再分桶表
在Hive中,数据通常是根据分区(partition)来组织的,但是对于大数据集,单层分区可能不够用,因此可以进一步细分为桶(bucket)。桶可以用于提供额外的并行处理和优化查询性能。在这种情况…...
从 Coding (Jenkinsfile) 到 Docker:全流程自动化部署 Spring Boot 实战指南(简化篇)
前言 本文记录使用 Coding (以 Jenkinsfile 为核心) 和 Docker 部署 Springboot 项目的过程,分享设置细节和一些注意问题。 1. 配置服务器环境 在实施此过程前,确保服务器已配置好 Docker、MySQL 和 Redis,可参考下列链接进行操作࿱…...
Linux官文转载-- Linux 内核代码风格
Warning 此文件的目的是为让中文读者更容易阅读和理解,而不是作为一个分支。 因此, 如果您对此文件有任何意见或更新,请先尝试更新原始英文文件。 这是一个简短的文档,描述了 linux 内核的首选代码风格。代码风格是因人而异的&a…...
Qt监控系统放大招/历经十几年迭代完善/多屏幕辅屏预览/多层级设备树/网络登录和回放
一、前言说明 近期对视频监控系统做了比较大的更新升级,主要就是三点,第一点就是增加了辅屏预览,这个也是好多个客户需要的功能,海康的iVMS-4200客户端就有这个功能,方便在多个屏幕打开不同的视频进行查看,…...
【贪心算法】贪心算法七
贪心算法七 1.整数替换2.俄罗斯套娃信封问题3.可被三整除的最大和4.距离相等的条形码5.重构字符串 点赞👍👍收藏🌟🌟关注💖💖 你的支持是对我最大的鼓励,我们一起努力吧!😃…...
LangChain教程 - 表达式语言 (LCEL) -构建智能链
系列文章索引 LangChain教程 - 系列文章 LangChain提供了一种灵活且强大的表达式语言 (LangChain Expression Language, LCEL),用于创建复杂的逻辑链。通过将不同的可运行对象组合起来,LCEL可以实现顺序链、嵌套链、并行链、路由以及动态构建等高级功能…...
使用Locust对Redis进行负载测试
1.安装环境 安装redis brew install redis 开启redis服务 brew services start redis 停止redis服务 brew services stop redis 安装Python库 pip install locust redis 2.编写脚本 loadTest.py # codingutf-8 import json import random import time import redis …...
HIVE数据仓库分层
1:为什么要分层 大多数情况下,我们完成的数据体系却是依赖复杂、层级混乱的。在不知不觉的情况下,我们可能会做出一套表依赖结构混乱,甚至出现循环依赖的数据体系。 我们需要一套行之有效的数据组织和管理方法来让我们的数据体系…...
数据结构与算法之动态规划: LeetCode 2407. 最长递增子序列 II (Ts版)
最长递增子序列 II https://leetcode.cn/problems/longest-increasing-subsequence-ii/description/ 描述 给你一个整数数组 nums 和一个整数 k找到 nums 中满足以下要求的最长子序列: 子序列 严格递增子序列中相邻元素的差值 不超过 k请你返回满足上述要求的 最…...
RVC模型在Claude API生态中的应用探索
RVC模型在Claude API生态中的应用探索 最近和几个做AI应用的朋友聊天,大家不约而同地提到了一个痛点:现在的AI助手,比如Claude,文本对话能力已经很强了,但声音总是冷冰冰的合成音,缺乏个性和温度。能不能让…...
解锁Noria查询重用机制:如何智能复用数据流组件实现应用性能飞跃
解锁Noria查询重用机制:如何智能复用数据流组件实现应用性能飞跃 【免费下载链接】noria Fast web applications through dynamic, partially-stateful dataflow 项目地址: https://gitcode.com/gh_mirrors/no/noria 在现代Web应用开发中,性能优化…...
从零搭建插件化框架:understand-plugin-framework架构设计思路
从零搭建插件化框架:understand-plugin-framework架构设计思路 【免费下载链接】understand-plugin-framework demos to help understand plugin framwork 项目地址: https://gitcode.com/gh_mirrors/un/understand-plugin-framework 插件化框架是Android开发…...
UI-TARS-desktop部署避坑指南:快速解决模型启动问题
UI-TARS-desktop部署避坑指南:快速解决模型启动问题 1. UI-TARS-desktop概述 1.1 核心功能与架构 UI-TARS-desktop是一款基于Qwen3-4B-Instruct-2507模型的多模态AI应用框架,采用vLLM推理引擎提供高效服务。该系统将大语言模型能力与桌面自动化操作相…...
低功耗设计必看:PrimeTime生成.lib文件时PG引脚的正确配置方法(附实例代码)
低功耗设计必看:PrimeTime生成.lib文件时PG引脚的正确配置方法(附实例代码) 在当今数字IC设计中,低功耗已成为与性能、面积同等重要的关键指标。电源管理架构的复杂性使得时序库中的电源地(PG)引脚信息变得…...
开发效率倍增:用快马平台打造你的专属mcp效率工具集
今天想和大家分享一个提升开发效率的实用方案 - 通过MCP协议和InsCode(快马)平台快速构建个人效率工具集。作为一个经常需要处理各种开发任务的程序员,我发现重复性的小工具开发特别浪费时间,而MCP协议正好能解决这个问题。 1. 为什么选择MCP协议 MCP协…...
VSCode高效前端开发:Live Server插件与Chrome浏览器无缝联调指南
1. 为什么你需要Live Server插件 作为前端开发者,最烦人的事情莫过于每次修改代码后都要手动刷新浏览器。我刚开始写前端的时候,经常在HTML、CSS和JavaScript文件之间来回切换,每次保存后都要切到浏览器按F5,效率低得让人抓狂。直…...
论文精读:突破大模型推理瓶颈:为什么“限制自信”反而能让 AI 更聪明?
论文下载地址:https://arxiv.org/pdf/2502.07154 随着 OpenAI o1 等推理模型的爆火,AI 行业正在经历一场深刻的范式转移:从单纯依赖“扩大训练规模(Training-Time Scaling)”,正式步入“扩大测试期计算&am…...
计算机毕业设计:Python智慧交通数据挖掘与预测系统 Flask框架 可视化 Requests爬虫 Arima模型 LSTM 深度学习(建议收藏)✅
1、项目介绍 技术栈:Python语言、Flask框架、Vue前端框架、MySQL数据库、Echarts可视化、requests爬虫技术、Arima算法、LSTM算法。 功能模块: 首页仪表盘:展示核心统计数据、客流量柱状图、城市健康状态占比饼图、客流前十城市趋势折线图…...
Spring Security 2026 最佳实践:构建安全的 Java 应用
Spring Security 2026 最佳实践:构建安全的 Java 应用别叫我大神,叫我 Alex 就好。一、引言 大家好,我是 Alex。Spring Security 作为 Java 生态中最流行的安全框架,一直以其强大的功能和灵活的配置而受到开发者的喜爱。随着 Spri…...
