k8s下使用local-path-provisioner进行本地存储

传统的web项目存储文件,图片等,一般都是放站点部署的磁盘中。站点重启后还是能继续访问。
但是在k8s中。无状态pod重启后,都是随机落到一台worker上,这样之前的文件就有可能找不到了。
准备测试项目:

场景一,文件存pod下,重启pod文件还在吗?
参照:使用rancher在k8s上完成第一个CI/CD的项目​​​​​​
创建一个TextController 有两个接口:
SaveText 传入文本,保存一个txt文件在服务器。并返回文件地址。
GetText 传入文件名,下载那个文件下来

using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using System.Text;

namespace K8sStorageDemo.Controllers
{
    [Route("api/[controller]/[action]")]
    [ApiController]
    public class TextController : ControllerBase
    {

        private string basePath = "/home/admin/files";

        [HttpGet]
        public string SaveText(string text)
        {
            return SaveFile(text);
        }
        [HttpGet]
        public ActionResult GetText(string filename)
        {
            var path = basePath + $"/{filename}.txt";
            byte[] byteArr = System.IO.File.ReadAllBytes(path);
            string mimeType = "application/octet-stream";
            return new FileContentResult(byteArr, mimeType)
            {
                FileDownloadName = filename
            };
        }

        private string SaveFile(string text)
        {
            if (!System.IO.Directory.Exists(basePath))
            {

                System.IO.Directory.CreateDirectory(basePath);

            }
            var path = basePath + $"/{Guid.NewGuid().ToString()}.txt";
            if (!System.IO.File.Exists(path))
            {
                // 创建要写入的文件。
                string createText = text + Environment.NewLine;
                System.IO.File.WriteAllText(path, createText, Encoding.UTF8);
            }
            return path;
        }

    }
}

准备好ingress:K8sStorageDemo_ingress.yaml 导入集群。

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: k8sstoragedemo
  namespace: default
spec:
  rules:
  - host: www.k8sstoragedemo.cn
    http:
      paths:
      - path: /
        backend:
          serviceName: k8sstoragedemo
          servicePort: 80

rancher流水线发布完成后,配置本地hosts文件(参照):k8s基于ingress-nginx的服务发现和负载均衡
192.168.21.233  www.k8sstoragedemo.cn
然后请求:http://www.k8sstoragedemo.cn/api/Text/SaveText?text=hello%20k8s'
然后进入容器看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值