轻量对象存储----填补Lighthouse云原生存储的重要一环

在腾讯云轻量服务器上构建 Kubernetes 集群和部署云原生应用的过程中,由于低配的轻量服务器无法很好的发挥云原生存储应用的性能,导致共享存储一直是一个避而不谈的话题,这也严重影响了集群中一些有状态应用的故障迁移能力。然而,最近腾讯云轻量对象存储的悄然上线为我们提供了一种新的可能性,很大程度上填补了这一环节的不足。

本文将引导读者使用轻量对象存储作为共享存储,部署一个高可用的 Typecho 博客。

购买轻量对象存储

轻量对象存储 Lighthouse-COS 是腾讯云 Lighthouse 服务基于对象存储 COS 服务提供的分布式存储服务。

值得一提的是,轻量对象存储的计费策略非常简单,购买一个资源包就可以覆盖容量和流量两种计费属性,并且接口请求数是免费的。具体购买方式请参阅购买指南

准备服务器操作环境

1、轻量服务器 Kubernets 集群

如果你还没有可用的集群,可参阅之前的文章快速搭建:腾讯云同地域组建Kubernetes集群

2、挂载轻量对象存储桶到 /srv/lhcos 目录

创建存储桶后,可参阅官方文档挂载存储桶一章,将其挂载到所有k8s节点服务器上。需要注意的是:所有节点上的存储桶挂载目录、服务器挂载目录必须一致,以确保pod迁移后可以恢复之前的状态。

本文中约定,存储桶挂载目录全部填写 /k8s,服务器挂载目录全部填写 /srv/lhcos,两者的命名并没有什么强关联性。

创建 kubernetes 部署文件

使用 OrcaTerm 将下面的代码保存到主节点服务器上,文件路径/srv/myblog.yml,请注意修改配置文件中的域名 myblog.example.org

此部署使用了我为云原生场景定制的 Typechoy 镜像,基于 rehiy/webox:nginx-php8 构建,支持 x86_64 和 arm64 构架;每周日拉取 Typecho 主分支代码更新镜像。

yaml 复制代码
kind: Deployment
apiVersion: apps/v1
metadata:
  name: &name myblog
  labels:
    app: *name
spec:
  selector:
    matchLabels:
      app: *name
  template:
    metadata:
      labels:
        app: *name
    spec:
      containers:
        - name: typecho
          image: rehiy/typecho
          ports:
            - containerPort: 80
            - containerPort: 443
          volumeMounts:
            - name: *name
              subPath: usr
              mountPath: /var/www/default/usr
      volumes:
        - name: *name
          hostPath:
            path: /srv/lhcos/myblog
            type: DirectoryOrCreate
---
kind: Service
apiVersion: v1
metadata:
  name: &name myblog
  labels:
    app: *name
spec:
  selector:
    app: *name
  ports:
    - name: http
      port: 80
      targetPort: 80
    - name: https
      port: 443
      targetPort: 443
---
kind: Ingress
apiVersion: networking.k8s.io/v1
metadata:
  name: &name myblog
  annotations:
    traefik.ingress.kubernetes.io/router.entrypoints: web,websecure
spec:
  rules:
    - host: blog.example.org
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: *name
                port:
                  name: http
  tls:
    - secretName: default

部署 Typecho 服务

使用 OrcaTerm终端,执行以下命令完成部署。

shell 复制代码
kubectl apply -f /srv/myblog.yml

测试和验证

浏览器打开 http://blog.example.org,看到博客初始页面即表示部署成功。为了验证其是否高可用,可以关闭正在运行该服务的节点,观察是否可以自动切换到其他节点继续提供服务。

测试过程中,有些步骤可能需要长时间的等待,这是由于拉取镜像比较耗时导致的,并没有太好的解决办法。大家可以尝试使用一些国内的docker镜像来缓解这个问题。

总结

轻量对象存储简单易用,作为附件存储(即一次写入多次读取的场景)非常合适,可以在一定程度上解决轻量K8s集群的云原生应用带状态迁移难题。

须知 :本文同步自若海の技术写真,如有错漏请到原文下留言反馈。

相关推荐
程序猿追1 天前
深度解码AI之魂:CANN Compiler 核心架构与技术演进
人工智能·架构
逍遥德1 天前
如何学编程之01.理论篇.如何通过阅读代码来提高自己的编程能力?
前端·后端·程序人生·重构·软件构建·代码规范
MX_93591 天前
Spring的bean工厂后处理器和Bean后处理器
java·后端·spring
艾莉丝努力练剑1 天前
跨节点通信优化:使用hixl降低网络延迟的实战
架构·cann
程序猿追1 天前
深度解读 CANN HCCL:揭秘昇腾高性能集体通信的同步机制
神经网络·架构
程序员泠零澪回家种桔子1 天前
Spring AI框架全方位详解
java·人工智能·后端·spring·ai·架构
GIOTTO情1 天前
舆情监测系统选型与技术落地:Infoseek 字节探索全栈架构解析与实战
架构
源代码•宸1 天前
大厂技术岗面试之谈薪资
经验分享·后端·面试·职场和发展·golang·大厂·职级水平的薪资
island13141 天前
CANN ops-nn 算子库深度解析:神经网络计算引擎的底层架构、硬件映射与融合优化机制
人工智能·神经网络·架构
C澒1 天前
前端整洁架构(Clean Architecture)实战解析:从理论到 Todo 项目落地
前端·架构·系统架构·前端框架