问题来了:对于一些业务需要一些持久化的存储,我们一般采用什么方案呢?
硬盘、文件存储、对象存储 ?
硬盘
只能实现一对一挂载,因为硬盘只支持一次挂载,通过硬盘创建的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