k8s核心资源存储对象

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

一、简介

和docker类似k8s也需要存储数据比如redis和mysql都需要外部存储对象要不然重新拉起pod在其他机器上数据会消失。

二、NFS共享存储

NFS这个文件系统提供了远程挂载共享数据我们可以利用这个文件系统来做数据共享。

1、下载文件系统

需要共享的机器都下载

apt-get install nfs-kernel-server

2、配置服务端

# 对外暴露共享目录 /data是服务端的文件夹

echo "/nfs/data/ *(insecure,rw,sync,no_root_squash)" > /etc/exports

 *是所有机器都可以访问我们的共享资源。如果写ip地址的话就指定特定的ip.

# 在主共享机器创建/nfs/data/目录

mkdir -p /nfs/data

# 重启NFS服务

service nfs-kernel-server restart

# 查看暴露服务信息

exportfs -v

 说明服务端配置成功

3、配置客户端

# 查看服务端那些目录可被挂载

showmount -e 192.168.211.11

# 挂载 

mount -t nfs4 -o noac  192.168.211.11:/nfs/data /nfs/data

# 查看挂载是否成功,最后一行

df -h

注意执行挂载命令的时候不要再/nfs/data里执行否则挂载后创建的文件不共享

4、部署一个nginx

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: nginx-pv
  name: nginx-pv
spec :
  replicas: 2
  selector:
    matchLabels:
      app: nginx-pv
  template:
    metadata :
      labels:
        app: nginx-pv
    spec:
      containers :
      - image: nginx
        name: nginx
        volumeMounts :
        - name: html
          mountPath: /usr/share/nginx/html
      volumes :
      - name: html
        nfs:
          server: 192.168.211.11
          path: /nfs/data/nginx-pv

kubectl apply -f mount.yaml

首先部署之前需要创建好/nfs/data/nginx-pv要不然会不成功。测试ok。

三、PV&PVC

静态供应

PV持久卷

PVC持久卷声明

用法提前创建好持久卷比如100M,5G100G大小的持久卷然后再使用声明PVC,最后在创建项目的时候应用申明即可。

1、创建PV

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv01-10m
spec:
  capacity:
    storage: 10M
  accessModes :
    - ReadWriteMany
  storageClassName: nfs
  nfs:
    path: /nfs/data/01
    server: 192.168.211.11
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv02-1gi
spec:
  capacity:
    storage: 1Gi
  accessModes :
    - ReadWriteMany
  storageClassName: nfs
  nfs:
    path: /nfs/data/02
    server: 192.168.211.11

kubectl apply -f pv.yaml

查看创建状态

kubectl get persistentvolume

kubectl get pv

 2、声明PVC

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: nginx-pvc
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests :
      storage: 200Mi
  storageClassName: nfs

注意声明中的nfs要和上面创建PV中的storageClassName: nfs里的nfs对应。

kubectl apply -f pvc.yaml

 可以看到1G空间已经绑定了。

查看声明

kubectl get pvc

3、项目中应用

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

claimName: nginx-pvc就是声明里的名字

此处部署的nginx和上面《三》部署的nginx区别就是一个直接挂载一个直接用的声明。

四、ConfigMap抽取配置文件

正在整理

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: k8s