凌文龙
3 years ago
2 changed files with 291 additions and 0 deletions
@ -0,0 +1,290 @@ |
|||||
|
|
||||
|
|
||||
|
`pv` : 是对底层存储的抽象,将存储定义为一种“资源” |
||||
|
|
||||
|
|
||||
|
|
||||
|
`pvc`: 客户端对存储资源的一个“申请” |
||||
|
|
||||
|
|
||||
|
|
||||
|
`storageclass`: 对存储类型的抽象定义,用于标记存储资源的特性和性能, localhost、nfs 、ceph 。。。 |
||||
|
|
||||
|
|
||||
|
|
||||
|
# 持久化 |
||||
|
|
||||
|
|
||||
|
|
||||
|
## 静态供应 |
||||
|
|
||||
|
`pv` 是管理员创建的。 |
||||
|
|
||||
|
|
||||
|
|
||||
|
```yaml |
||||
|
kind: PersistentVolume |
||||
|
apiVersion: v1 |
||||
|
metadata: |
||||
|
name: localhost-pv |
||||
|
labels: |
||||
|
type: local |
||||
|
spec: |
||||
|
storageClassName: localhostpath |
||||
|
capacity: |
||||
|
storage: 15Gi |
||||
|
accessModes: |
||||
|
- ReadWriteOnce |
||||
|
hostPath: |
||||
|
path: "/home/dragon/storage" |
||||
|
--- |
||||
|
apiVersion: v1 |
||||
|
kind: PersistentVolumeClaim |
||||
|
metadata: |
||||
|
name: localhostpath-pvc |
||||
|
namespace: dragon |
||||
|
spec: |
||||
|
volumeMode: Filesystem |
||||
|
accessModes: |
||||
|
- ReadWriteOnce |
||||
|
resources: |
||||
|
requests: |
||||
|
storage: 8Gi |
||||
|
storageClassName: localhostpath |
||||
|
``` |
||||
|
|
||||
|
|
||||
|
|
||||
|
`pv ` 关键的配置 |
||||
|
|
||||
|
- **1、存储能力(Capacity)** |
||||
|
- **2、存储卷模式(Volume Mode)** |
||||
|
- **3、访问模式(Access Modes)** |
||||
|
- **4、存储类别(Class)** |
||||
|
- **5、回收策略(Reclaim Policy)** |
||||
|
|
||||
|
|
||||
|
|
||||
|
### 访问模式: |
||||
|
|
||||
|
◎ ReadWriteOnce(RWO):读写权限,并且只能被单个Node挂载。 |
||||
|
|
||||
|
◎ ReadOnlyMany(ROX):只读权限,允许被多个Node挂载。 |
||||
|
|
||||
|
◎ ReadWriteMany(RWX):读写权限,允许被多个Node挂载。 |
||||
|
|
||||
|
|
||||
|
|
||||
|
### 回收策略 |
||||
|
|
||||
|
通过 __persistentVolumeReclaimPolicy__ 字段设置, |
||||
|
|
||||
|
◎ Retain 保留:保留数据,需要手工处理。 |
||||
|
|
||||
|
◎ Recycle 回收空间:简单清除文件的操作(例如执行rm -rf /thevolume/* 命令)。 |
||||
|
|
||||
|
◎ Delete 删除:与PV相连的后端存储完成Volume的删除操作 |
||||
|
|
||||
|
|
||||
|
|
||||
|
## 动态供应 |
||||
|
|
||||
|
```yaml |
||||
|
apiVersion: v1 |
||||
|
kind: PersistentVolumeClaim |
||||
|
metadata: |
||||
|
name: localhostpath |
||||
|
namespace: dragon |
||||
|
spec: |
||||
|
volumeMode: Filesystem |
||||
|
accessModes: |
||||
|
- ReadWriteMany |
||||
|
resources: |
||||
|
requests: |
||||
|
storage: 8Gi |
||||
|
storageClassName: localhostpath |
||||
|
``` |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
## 使用 |
||||
|
|
||||
|
```yaml |
||||
|
kind: Pod |
||||
|
apiVersion: v1 |
||||
|
metadata: |
||||
|
name: my-app |
||||
|
spec: |
||||
|
containers: |
||||
|
- name: my-frontend |
||||
|
image: busybox |
||||
|
volumeMounts: |
||||
|
- mountPath: "/scratch" |
||||
|
name: scratch-volume |
||||
|
command: [ "sleep", "1000000" ] |
||||
|
volumes: |
||||
|
- name: scratch-volume |
||||
|
persistentVolumeClaim: |
||||
|
claimName: localhostpath |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
|
||||
|
|
||||
|
# Secret |
||||
|
|
||||
|
|
||||
|
|
||||
|
## TLS |
||||
|
|
||||
|
```shell |
||||
|
kubectl create secret tls ${secret_name} --namespace=${namespace} --key=${key} --cert=${cert} |
||||
|
``` |
||||
|
|
||||
|
```yaml |
||||
|
apiVersion: v1 |
||||
|
kind: Secret |
||||
|
metadata: |
||||
|
name: secret-tls |
||||
|
namespace: dragon |
||||
|
type: kubernetes.io/tls |
||||
|
data: |
||||
|
tls.crt: | |
||||
|
<base64 encoded > |
||||
|
tls.key: | |
||||
|
<base64 encoded > |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
```yaml |
||||
|
apiVersion: v1 |
||||
|
kind: Secret |
||||
|
metadata: |
||||
|
name: secret-tls |
||||
|
namespace: dragon |
||||
|
type: kubernetes.io/tls |
||||
|
stringData: |
||||
|
tls.crt: | |
||||
|
"<raw string>" |
||||
|
tls.key: | |
||||
|
"<raw string>" |
||||
|
``` |
||||
|
|
||||
|
### 使用 |
||||
|
|
||||
|
```yaml |
||||
|
kind: Ingress |
||||
|
apiVersion: extensions/v1beta1 |
||||
|
metadata: |
||||
|
name: web-console |
||||
|
namespace: anxincloud |
||||
|
annotations: |
||||
|
kubernetes.io/ingress.class: nginx |
||||
|
nginx.ingress.kubernetes.io/proxy-body-size: 50m |
||||
|
nginx.ingress.kubernetes.io/rewrite-target: / |
||||
|
nginx.org/redirect-to-https: 'true' |
||||
|
spec: |
||||
|
tls: |
||||
|
- hosts: |
||||
|
- console.anxinyun.cn |
||||
|
secretName: anxincloud-root-secret |
||||
|
rules: |
||||
|
- host: console.anxinyun.cn |
||||
|
http: |
||||
|
paths: |
||||
|
- path: / |
||||
|
pathType: Prefix |
||||
|
backend: |
||||
|
serviceName: web-console |
||||
|
servicePort: 9083 |
||||
|
``` |
||||
|
|
||||
|
|
||||
|
|
||||
|
## dockerconfigjson |
||||
|
|
||||
|
```yaml |
||||
|
apiVersion: v1 |
||||
|
kind: Secret |
||||
|
metadata: |
||||
|
name: secret-dockercfg |
||||
|
type: kubernetes.io/dockercfg |
||||
|
data: |
||||
|
.dockercfg: | |
||||
|
"<base64 encoded ~/.dockercfg file>" |
||||
|
``` |
||||
|
|
||||
|
```yaml |
||||
|
apiVersion: v1 |
||||
|
kind: Secret |
||||
|
metadata: |
||||
|
name: secret-dockercfg |
||||
|
type: kubernetes.io/dockercfg |
||||
|
stringData: |
||||
|
.dockercfg: | |
||||
|
{ |
||||
|
"auths": { |
||||
|
"https://registry.cn-hangzhou.aliyuncs.com": { |
||||
|
"username": "hi50040201@aliyun.com", |
||||
|
"password": "V9rtCnt$f", |
||||
|
"email": "huang.li@free-sun.com.cn", |
||||
|
"auth": "aGk1MDA0MDIwMUBhbGl5dW4uY29tOlY5cnRDbnQkZg==" |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
## 使用 |
||||
|
|
||||
|
```yaml |
||||
|
kind: Deployment |
||||
|
apiVersion: apps/v1 |
||||
|
metadata: |
||||
|
name: api-anxincloud |
||||
|
namespace: anxincloud |
||||
|
labels: |
||||
|
app: api-anxincloud |
||||
|
spec: |
||||
|
replicas: 3 |
||||
|
selector: |
||||
|
matchLabels: |
||||
|
app: api-anxincloud |
||||
|
template: |
||||
|
metadata: |
||||
|
labels: |
||||
|
app: api-anxincloud |
||||
|
spec: |
||||
|
containers: |
||||
|
- name: api-anxincloud |
||||
|
image: >- |
||||
|
registry.cn-hangzhou.aliyuncs.com/fs-cloud/anxinyun-web.api:179.21-12-15 |
||||
|
command: |
||||
|
- node |
||||
|
- server.js |
||||
|
ports: |
||||
|
- name: http-8080 |
||||
|
containerPort: 8080 |
||||
|
protocol: TCP |
||||
|
envFrom: |
||||
|
- configMapRef: |
||||
|
name: cm-anxincloud |
||||
|
imagePullPolicy: IfNotPresent |
||||
|
restartPolicy: Always |
||||
|
nodeSelector: |
||||
|
app.type: web |
||||
|
imagePullSecrets: |
||||
|
- name: registry-secret |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
# ConfigMap |
||||
|
|
||||
|
|
||||
|
|
Loading…
Reference in new issue