专栏首页TKE学习分享从无到有基于腾讯云TKE部署Kubernetes全流程(三)
原创

从无到有基于腾讯云TKE部署Kubernetes全流程(三)

问题来了:对于一些业务需要一些持久化的存储,我们一般采用什么方案呢?

硬盘、文件存储、对象存储 ?

硬盘

只能实现一对一挂载,因为硬盘只支持一次挂载,通过硬盘创建的PVC为RWO,单机读写。

文件存储

支持 ReadWriteMany ,PVC类型为多机读写。

对象存储

支持 ReadWriteMany ,PVC类型为多机读写。

这里贴一个各个存储的比较图

这里我们就通过腾讯云COS演示,多个服务需要共享一个内容文件如何实现。

1、首先创建COS存储桶,并拿到访问相关;

2、向TKE集群添加COS访问的Secret;

注意写错了,不能在控制台删,可以修改yaml文件,但是变量值是base64转码后的值,可以命令行删除sercret,重建即可。

3、TKE集群中添加PV;

注意如果提示不能使用CFS、COS联系客服,开启即可。

4、TKE集群通过该PV添加PVC;

5、创建Deployment,关联该PVC;

到这一步难道就结束了吗? 最关键的才刚刚开始,nginx访问报错 403!

问题描述: Pod 正常启动毫无问题,但是访问出现403,日志中也报出403。

2020/06/28 03:11:05 [error] 28#28: *1 "/usr/share/nginx/html/index.html" is forbidden (13: Permission denied), client: 10.0.0.7, server: localhost, request: "GET / HTTP/1.1", host: "172.16.0.34"

发现 nginx,conf 中 user 为nginx,而经过COS挂载的权限为root,经过测试修改文件所属关系没有作用,我们换一个思路,让nginx以root启动,并重启nginx服务。

这里我们直接通过命令行修改该deployment文件即可,由于在控制台修改个人也得修改yaml文件,不方便,所以这里我贴一份成功的deployment文件给大家参考。

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  labels:
    k8s-app: nginx-deploy
    qcloud-app: nginx-deploy
  name: nginx-deploy
  namespace: default
spec:
  progressDeadlineSeconds: 600
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      k8s-app: nginx-deploy
      qcloud-app: nginx-deploy
  strategy:
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 0
    type: RollingUpdate
  template:
    metadata:
      creationTimestamp: null
      labels:
        k8s-app: nginx-deploy
        qcloud-app: nginx-deploy
    spec:
      containers:
      - image: nginx
        imagePullPolicy: Always
        lifecycle:
          postStart:
            exec:
              command:
              - /bin/sh
              - -c
              - sed -i 's#nginx;#root;#g'  /etc/nginx/nginx.conf;
              - nginx
              - -s
              - reload
        name: nginx-deploy-pod
        resources:
          limits:
            cpu: 500m
            memory: 1Gi
          requests:
            cpu: 250m
            memory: 256Mi
        securityContext:
          privileged: false
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
        volumeMounts:
        - mountPath: /usr/share/nginx/html
          name: cos
      dnsPolicy: ClusterFirst
      imagePullSecrets:
      - name: qcloudregistrykey
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      terminationGracePeriodSeconds: 30
      volumes:
      - name: cos
        persistentVolumeClaim:
          claimName: cq-cos-pvc

核心部分就在与 podStart,执行了一串命令,更改了nginx.conf的配置文件,并使得nginx重启。

成功画面

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 从无到有基于腾讯云TKE部署Kubernetes全流程(四)

    前面的TKE集群工作都有所完成了,现在我们尝试通过这一系列工具使得,流程完全自动化。

    蒋经纬
  • 从无到有基于腾讯云TKE部署Kubernetes全流程(一)

    这里我们希望的是,提供一个腾讯云TKE中部署整个基础环境,以及对部分服务的一个示例。

    蒋经纬
  • TKE镜像仓库使用

    如果您不需要自动化构建的过程,目前就可以使用了,您只需要将您的镜像,打一个tag ,然后login、push到该命名空间下即可!

    蒋经纬
  • 基于Excel2013的数据转换和清洗

    数字可以被设成的格式有12种:常规、数值、货币、会计专用、日期、时间、百分比、分数、科学记数、文本、特殊、自定义

    潇洒坤
  • CentOs 6.6 在VMware安装并修改静态网卡

    搭建环境 | 系统:centos 6.6 | VMware Workstation Pro 12

    Antler
  • 从无到有基于腾讯云TKE部署Kubernetes全流程(四)

    前面的TKE集群工作都有所完成了,现在我们尝试通过这一系列工具使得,流程完全自动化。

    蒋经纬
  • burpsuite 无法获取本地数据

    当Firefox和burpsuite设置代理地址127.0.0.1,端口:80内容可以显示在firefox网页而无法在burpsuite显示,求教是什么原因?

    用户7446386
  • Unity3D基础项目(三):花费一天做个小游戏水果忍者

    最近看了很多教程,代码方面大同小异,主要看思路,即编程思想。所以仿照着做了一款水果忍者,一天就够了。 开发工具:Unity3D(本人使用5.4版本),VS20...

    雷潮
  • 如何在 Pycharm 中高效使用 R 语言 (图文详解)

    相信大家学习生信的时候,都会或多或少使用 R 语言来处理生信问题。而几乎提到 R,就会用到 Rstudio 作为开发工具。

    生信菜鸟团
  • spring-boot-lll-starter自动化框架介绍

    spring-boot-lll-starter框架是经由我企业实战总结的一套,适用于项目起始构建的框架,适配了管理后台和微服务项目两种方案的代码生成

    老梁

扫码关注云+社区

领取腾讯云代金券