前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >从无到有基于腾讯云TKE部署Kubernetes全流程(三)

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

原创
作者头像
蒋经纬
修改2020-06-28 15:52:03
8410
修改2020-06-28 15:52:03
举报
文章被收录于专栏:TKE学习分享

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

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

硬盘

只能实现一对一挂载,因为硬盘只支持一次挂载,通过硬盘创建的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。

代码语言:javascript
复制
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文件给大家参考。

代码语言:javascript
复制
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重启。

成功画面
成功画面

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 硬盘
  • 文件存储
  • 对象存储
    • 1、首先创建COS存储桶,并拿到访问相关;
      • 2、向TKE集群添加COS访问的Secret;
        • 3、TKE集群中添加PV;
          • 4、TKE集群通过该PV添加PVC;
            • 5、创建Deployment,关联该PVC;
              • 到这一步难道就结束了吗? 最关键的才刚刚开始,nginx访问报错 403!
              • 问题描述: Pod 正常启动毫无问题,但是访问出现403,日志中也报出403。
              • 发现 nginx,conf 中 user 为nginx,而经过COS挂载的权限为root,经过测试修改文件所属关系没有作用,我们换一个思路,让nginx以root启动,并重启nginx服务。
                • 核心部分就在与 podStart,执行了一串命令,更改了nginx.conf的配置文件,并使得nginx重启。
                相关产品与服务
                对象存储
                对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档