语法
apiVersion: v1 #必选,API 版本号
kind: Deployment #必选,Pod 类型:
metadata: #必选,元数据
name: nginx-deployment #必选,符合 RFC1035 规范的 Pod 名称
namespace: web #可选,不指定默认为 default,Pod 所在命名空间
spec: #必选,用于定义详细信息
selector: #标签选择器
matchLabels:
app: nginx
replicas: 2 #必选,Pod 副本数量
template:
metadata: #必选,元数据
labels: #可选,标签选择器,一般用于 Service Selector
app: nginx
spec: #必选,用于定义详细信息
containers: #必选,定义容器
- name: nginx
image: nginx:1.14.2
ports:
- 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/v1beta1
kind: Deployment
metadata:
name: nginx-oss-deploy
spec:
replicas: 1
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx-flexvolume-oss
image: nginx
volumeMounts:
- name: "oss1"
mountPath: "/data"
livenessProbe:
exec:
command:
- sh
- -c
- cd /data
initialDelaySeconds: 30
periodSeconds: 30
volumes:
- 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: v1
kind: PersistentVolume
metadata:
name: pv-oss
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteMany
storageClassName: oss
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"
创建PVC
使用oss-pvc.yaml文件创建PVC。kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: pvc-oss
spec:
storageClassName: oss
accessModes:
- ReadWriteMany
resources:
requests:
storage: 5Gi
创建Pod
使用oss-deploy.yaml创建Pod。
https://help.aliyun.com/document_detail/130911.htmlapiVersion: apps/v1
kind: Deployment
metadata:
name: oss-static
labels:
app: nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
volumeMounts:
- name: pvc-oss
mountPath: "/data"
livenessProbe:
exec:
command:
- sh
- -c
- cd /data
initialDelaySeconds: 30
periodSeconds: 30
volumes:
- name: pvc-oss
persistentVolumeClaim:
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 ```