k8s部署nginx+sshd實現文件上傳下載

要通過 nginxsshd 實現文件的上傳和下載,通常的做法是結合 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來實現上傳文件

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/64610.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/64610.shtml
英文地址,請注明出處:http://en.pswp.cn/web/64610.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Golang 中 Goroutine 的調度

Golang 中 Goroutine 的調度 Golang 中的 Goroutine 是一種輕量級的線程,由 Go 運行時(runtime)自動管理。Goroutine 的調度基于 M:N 模型,即多個 Goroutine 可以映射到多個操作系統線程上執行。以下是詳細的調度過程和策略&…

clickhouse-backup配置及使用(Linux)

一、下載地址 Releases Altinity/clickhouse-backup GitHub 二、上傳到服務器解壓安裝 自行上傳至服務器,解壓命令: tar xvf clickhouse-backup-linux-amd64.tar.gz 三、創建軟連接 sudo ln -sv build/linux/amd64/clickhouse-backup /usr/local/bin/…

如何在群暉NAS上安裝并配置MySQL與phpMyAdmin遠程管理數據庫

文章目錄 前言1. 安裝MySQL2. 安裝phpMyAdmin3. 修改User表4. 本地測試連接MySQL5. 安裝cpolar內網穿透6. 配置MySQL公網訪問地址7. 配置MySQL固定公網地址8. 配置phpMyAdmin公網地址9. 配置phpmyadmin固定公網地址 前言 大家是不是經常遇到需要隨時隨地訪問自己數據的情況&am…

《向量數據庫指南》——Milvus Cloud 2.5:Sparse-BM25引領全文檢索新時代

Milvus Cloud BM25:重塑全文檢索的未來 在最新的Milvus Cloud 2.5版本中,我們自豪地引入了“全新”的全文檢索能力,這一創新不僅鞏固了Milvus Cloud在向量數據庫領域的領先地位,更為用戶提供了前所未有的靈活性和效率。作為大禹智庫的向量數據庫高級研究員,以及《向量數據…

SQL 總結

SQL 總結 引言 SQL(Structured Query Language,結構化查詢語言)是一種用于管理關系數據庫管理系統(RDBMS)的標準編程語言。自1974年首次提出以來,SQL已成為數據庫領域中不可或缺的一部分。它允許用戶執行各種操作,如查詢、更新、插入和刪除數據庫中的數據。本文旨在提…

ESP32-CAM開發板入門 (下載示例程序)

ESP32-CAM開發板例程使用 1、準備工作1.1、硬件準備1.2、軟件準備 2、選擇示例程序并錄入第一步 1、準備工作 1.1、硬件準備 1.2、軟件準備 Arduino IDE : 編程與寫入(下載地址 https://www.arduino.cc/en/software) 安裝好后將軟件設置到…

企業賦能是什么意思-國際數字影像產業園解讀

在當今競爭激烈的商業環境中,企業賦能已成為推動企業發展、提升競爭力的關鍵策略。國際數字影像產業園作為數字影像產業的重要集聚地,通過一系列創新舉措為入駐園區的我眾多企業賦能。那么,企業賦能究竟是什么意思呢? 企業賦能是…

混合并行訓練框架性能對比

混合并行訓練框架性能對比 1. 框架類型 DeepSpeed、Megatron - LM、Colossal - AI、SageMaker、Merak、FasterMoE、Tutel、Whale、Alpa、DAPPLE、Mesh - TensorFlow 2. 可用并行性(Available parallelisms) DNN framework(深度神經網絡框架)DP(數據并行,Data Parallelis…

客戶案例:基于慧集通集成平臺,打通屠宰管理系統與用友U8C 系統的全攻略

一、引言 本原型客戶成立于2014年,是一家集飼草種植、肉牛養殖、精深加工、冷鏈物流、餐飲服務于一體的大型農牧綜合體。公司下設三個子公司分別涵蓋農業、畜牧業、肉制品加工業與餐飲物流服務業。公司嚴格按照一二三產業融合發展要求,以肉牛產業化為支…

HTML5滑塊(Slider)

HTML5 的滑塊&#xff08;Slider&#xff09;控件允許用戶通過拖動滑塊來選擇數值。以下是如何實現一個簡單的滑塊組件的詳細說明。 HTML5 滑塊組件 1. 基本結構 使用 <input type"range"> 元素可以創建一個滑塊。下面是基本實現的代碼示例&#xff1a; <…

25. C++繼承 1 (繼承的概念與基礎使用, 繼承的復制兼容規則,繼承的作用域)

?上篇模板文章&#xff1a;24. C模板 2 (非類型模板參數&#xff0c;模板的特化與模板的分離編譯)-CSDN博客 ?本篇代碼&#xff1a;c學習 橘子真甜/c-learning-of-yzc - 碼云 - 開源中國 (gitee.com) ?標?是比較重要的部分 目錄 一. 繼承的基礎使用 1.1 繼承的格式 1.2 …

露營小程序搭建有哪些步驟?小程序里面可以找個露營搭子

露營不僅僅是走進大自然的旅程&#xff0c;它也成為了一種社交和體驗式的活動。隨著小程序的普及&#xff0c;露營活動也越來越多地開始在線上開展。通過搭建一個露營小程序&#xff0c;商家不僅可以為用戶提供更多的露營選擇&#xff0c;還可以幫助他們找到合適的露營搭子。那…

XIAO ESP32 S3網絡攝像頭——2視頻獲取

本文主要是使用XIAO Esp32 S3制作網絡攝像頭的第2步,獲取攝像頭圖像。 1、效果如下: 2、所需硬件 3、代碼實現 3.1硬件代碼: #include "WiFi.h" #include "WiFiClient.h" #include "esp_camera.h" #include "camera_pins.h"// 設…

記一次 dockerfile 的循環依賴錯誤

文章目錄 1. 寫在最前面1.1 具體循環依賴的例子 2. 報錯的位置2.1 代碼快速分析2.2 代碼總結2.3 關于 parser 的記錄 3. 碎碎念 1. 寫在最前面 筆者在使用 dockerfile 多階段構建的功能時&#xff0c;寫出了一個「circular dependency detected on stage: xx」的錯誤。 解決方…

AAAI 2025論文分享┆一種接近全監督的無訓練文檔信息抽取方法:SAIL(文中附代碼鏈接)

本推文詳細介紹了一篇上海交通大學樂心怡老師課題組被人工智能頂級會議AAAI 2025錄用的的最新論文《SAIL: Sample-Centric In-Context Learning for Document Information Extraction》。論文的第一作者為張金鈺。該論文提出了一種無需訓練的、以樣本為中心的、基于上下文學習的…

小程序信息收集(小迪網絡安全筆記~

免責聲明&#xff1a;本文章僅用于交流學習&#xff0c;因文章內容而產生的任何違法&未授權行為&#xff0c;與文章作者無關&#xff01;&#xff01;&#xff01; 附&#xff1a;完整筆記目錄~ ps&#xff1a;本人小白&#xff0c;筆記均在個人理解基礎上整理&#xff0c;…

pat 乙級1096 大美數

若正整數 N 可以整除它的 4 個不同正因數之和&#xff0c;則稱這樣的正整數為“大美數”。本題就要求你判斷任一給定的正整數是否是“大美數”。 輸入格式&#xff1a; 輸入在第一行中給出正整數 K&#xff08;≤10&#xff09;&#xff0c;隨后一行給出 K 個待檢測的、不超過…

C#封送類

封送類&#xff08;Marshaling classes&#xff09;在.NET框架中扮演著至關重要的角色&#xff0c;尤其是在托管代碼與非托管代碼之間進行數據交換時。封送過程涉及到將托管環境中的對象轉換為非托管環境中可以理解的形式&#xff0c;并且反之亦然。這一過程確保了兩種不同類型…

計算機體系結構期末考試

1、描述計算機系統性能評估的關鍵指標&#xff0c;并以SPEC CPU benchmark為例&#xff0c;討論如何使用幾何平均數與加權平均數對性能進行量化。此外&#xff0c;描述Amdahl定律并分析該定律的應用場景及其對性能優化的局限性 2、請對比RISC和CISC指令集架構的設計思想及優缺點…

藥片缺陷檢測數據集,8625張圖片,使用YOLO,PASICAL VOC XML,COCO JSON格式標注,可識別藥品是否有缺陷,是否完整

藥片缺陷檢測數據集&#xff0c;8625張圖片&#xff0c;使用YOLO&#xff0c;PASICAL VOC XML&#xff0c;COCO JSON格式標注&#xff0c;可識別藥品是否有缺陷&#xff0c;是否完整 有缺陷的標注信息&#xff1a; 無缺陷的標注信息 數據集下載&#xff1a; yolov11:https://d…