四、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的定义或者容器镜像中更加安全和灵活

 

 

 

posted @ 2023-04-05 16:17  good-good-luck  阅读(34)  评论(0)    收藏  举报