四、kubernetes-存储抽象
1.先搭建nfs服务器
2.每台节点都挂载nfs目录文件夹
3.使用原生方式挂载的nfs数据,在pod删除后数据不会删除
服务器原生方式挂载,将 /usr/share/nginx/html挂载到nfs文件夹下
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: nginx-pv-demo
name: nginx-pv-demo
spec:
replicas: 2
selector:
matchLabels:
app: nginx-pv-demo
template:
metadata:
labels:
app: nginx-pv-demo
spec:
containers:
- image: nginx
name: nginx
volumeMounts:
- name: html
mountPath: /usr/share/nginx/html
volumes:
- name: html
nfs:
server: 192.168.1.20
path: /nfs/data/nginx-pv
PV与PVC
pv:持久卷(persistent volume),将应用需要持久化的数据保存到指定位置
pvc:持久卷申明(persistent volume claim),申请需要使用的持久卷规格
1.创建PV池
mkdir -p /data/nfs/01
mkdir -p /data/nfs/02
mkdir -p /data/nfs/03
创建PV
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv01-10m
spec:
capacity:
storage: 10M
accessModes:
- ReadWriteMany
storageClassName: nfs
nfs:
path: /data/nfs/01
server: 192.168.1.20
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv02-1gi
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteMany
storageClassName: nfs
nfs:
path: /data/nfs/02
server: 192.168.1.20
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv03-3gi
spec:
capacity:
storage: 3Gi
accessModes:
- ReadWriteMany
storageClassName: nfs
nfs:
path: /data/nfs/03
server: 192.168.1.20
2.PVC创建与绑定
创建PVC
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: nginx-pvc
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 200Mi
storageClassName: nfs
创建PVC与pod绑定
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: nginx-deploy-pvc
name: nginx-deploy-pvc
spec:
replicas: 2
selector:
matchLabels:
app: nginx-deploy-pvc
template:
metadata:
labels:
app: nginx-deploy-pvc
spec:
containers:
- image: nginx
name: nginx
volumeMounts:
- name: html
mountPath: /usr/share/nginx/html
volumes:
- name: html
persistentVolumeClaim:
claimName: nginx-pvc
ConfigMap
抽取应用配置,并且可以自动更新
1、redis实例
把之前的配置文件创建为配置集
redis.conf配置文件先添加appendonly yes # 创建配置,redis保存到k8s的etcd; kubectl create cm redis-conf --from-file=redis.conf
#创建yaml文件
apiVersion: v1
data: #data是所有真正的数据,key:默认是文件名 value:配置文件的内容
redis.conf: |
appendonly yes
kind: ConfigMap
metadata:
name: redis-conf
namespace: default
创建redis的pod
apiVersion: v1
kind: Pod
metadata:
name: redis
spec:
containers:
- name: redis
image: redis
command:
- redis-server
- "/redis-master/redis.conf" #指的是redis容器内部的位置
ports:
- containerPort: 6379
volumeMounts:
- mountPath: /data
name: data
- mountPath: /redis-master
name: config
volumes:
- name: data
emptyDir: {}
- name: config
configMap:
name: redis-conf
items:
- key: redis.conf
path: redis.conf
Secreth
secret对象类型用来保存敏感信息,例如密码、OAuth令牌、ssh密钥。将这些信息放在secret中比放在pod的定义或者容器镜像中更加安全和灵活

浙公网安备 33010602011771号