语法
apiVersion: v1 #必选,API 版本号kind: Deployment #必选,Pod 类型:metadata: #必选,元数据name: nginx-deployment #必选,符合 RFC1035 规范的 Pod 名称namespace: web #可选,不指定默认为 default,Pod 所在命名空间spec: #必选,用于定义详细信息selector: #标签选择器matchLabels:app: nginxreplicas: 2 #必选,Pod 副本数量template:metadata: #必选,元数据labels: #可选,标签选择器,一般用于 Service Selectorapp: nginxspec: #必选,用于定义详细信息containers: #必选,定义容器- name: nginximage: nginx:1.14.2ports:- containerPort: 80
Pod
存储
使用 OSS 静态存储卷
https://help.aliyun.com/document_detail/86543.html
使用说明
配置OSS静态存储卷的说明如下:
- OSS为共享存储,可以同时为多个Pod提供共享存储服务。
- bucket:目前只支持挂载存储空间Bucket,不支持挂载Bucket下面的子目录或文件。
- url:OSS的Endpoint,挂载OSS的接入域名,挂载节点和存储空间的地域相同时,可使用内网地址。
- akId:您的AccessKey ID值。
- akSecret:您的AccessKey Secret值。
- otherOpts:挂载OSS时支持定制化参数输入,格式为:
-o *** -o ***。 - 您在使用OSS数据卷时,不要使用subpath的配置。
-
注意事项
OSS数据卷是使用OSSFS文件进行挂载的FUSE文件系统,适合于读文件场景。例如:读配置文件、视频、图片文件等场景。
- OSSFS不擅长于写文件的应用场景。如果您的业务是将文件写入存储的场景,推荐使用NAS存储卷服务。
- 内核态文件系统相较于用户态模拟的文件系统,在稳定性、性能上更具有优势,生产环境中推荐您使用NAS文件存储,而不推荐OSS文件系统
- OSSFS可以通过调整配置参数的方式,优化其在缓存、权限等方面的表现,请参见常见问题、ossfs/README-CN.md、FAQ。
直接使用volumes挂载的方式
创建并复制以下内容到oss-deploy.yaml中。
执行以下命令,创建Pod。apiVersion: extensions/v1beta1kind: Deploymentmetadata:name: nginx-oss-deployspec:replicas: 1template:metadata:labels:app: nginxspec:containers:- name: nginx-flexvolume-ossimage: nginxvolumeMounts:- name: "oss1"mountPath: "/data"livenessProbe:exec:command:- sh- -c- cd /datainitialDelaySeconds: 30periodSeconds: 30volumes:- name: "oss1"flexVolume:driver: "alicloud/oss"options:bucket: "docker"url: "oss-cn-hangzhou.aliyuncs.com"akId: ***akSecret: ***otherOpts: "-o max_stat_cache_size=0 -o allow_other"
kubectl apply -f oss-deploy.yaml
使用创建PV和PVC的方式
您可以使用YAML文件或者通过容器服务控制台界面创建PV。创建PV
使用oss-pv.yaml文件创建PV。apiVersion: v1kind: PersistentVolumemetadata:name: pv-ossspec:capacity:storage: 5GiaccessModes:- ReadWriteManystorageClassName: ossflexVolume:driver: "alicloud/oss"options:bucket: "docker"url: "oss-cn-hangzhou.aliyuncs.com"akId: ***akSecret: ***otherOpts: "-o max_stat_cache_size=0 -o allow_other"
创建PVC
使用oss-pvc.yaml文件创建PVC。kind: PersistentVolumeClaimapiVersion: v1metadata:name: pvc-ossspec:storageClassName: ossaccessModes:- ReadWriteManyresources:requests:storage: 5Gi
创建Pod
使用oss-deploy.yaml创建Pod。
https://help.aliyun.com/document_detail/130911.htmlapiVersion: apps/v1kind: Deploymentmetadata:name: oss-staticlabels:app: nginxspec:replicas: 1selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginxports:- containerPort: 80volumeMounts:- name: pvc-ossmountPath: "/data"livenessProbe:exec:command:- sh- -c- cd /datainitialDelaySeconds: 30periodSeconds: 30volumes:- name: pvc-osspersistentVolumeClaim:claimName: pvc-oss
使用 NAS 动态存储卷
创建动态 NAS 卷
配置 StorageClass。
配置示例如下: ```yaml apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: alicloud-nas mountOptions: - nolock,tcp,noresvport
vers=3 parameters: server: “23a9649583-iaq37.cn-shenzhen.nas.aliyuncs.com:/nasroot1/“ driver: flexvolume provisioner: alicloud/nas reclaimPolicy: Delete ``` 说明
mountOptions:表示生成的PV options配置,挂载NAS卷时使用这个options挂载。
- server:表示生成目标PV所使用NAS挂载点列表。格式为 nfsurl1:/path1,nfsurl2:/path2;当配置多个server时,通过此StorageClass创建的PV会轮询使用上述server作为配置参数;极速NAS配置路径需要以/share开头。
- driver:支持Flexvolume、NFS两种驱动,默认为NFS。
- reclaimPolicy:PV的回收策略,建议配置为Retain。
apiVersion: apps/v1 kind: StatefulSet metadata: name: web spec: serviceName: “nginx” replicas: 5 volumeClaimTemplates:
- metadata:
name: html
spec:
accessModes:
storageClassName: alicloud-nas resources:- ReadWriteOnce
template: metadata: labels:requests:storage: 2Gi
spec: containers:app: nginx
- name: nginx
image: nginx:alpine
volumeMounts:
- mountPath: “/data” name: html ```
