LFS258-LAB-Volumes and Data

创建configmap

1.创建 configmap

student@ubuntu:~/volumes$echo 1 > one
student@ubuntu:~/volumes$echo 2 > two
student@ubuntu:~/volumes$kubectl create configmap cm-config --from-literal=text=number --from-file=./one --from-file=./two 

2.查看configmap

student@ubuntu:~/volumes$kubectl get configmaps 
NAME        DATA   AGE
cm-config   3      65s
student@ubuntu:~/volumes$kubectl get configmaps cm-config  -o yaml
apiVersion: v1
data:
  one: |
    1
  text: number
  two: |
    2
kind: ConfigMap
metadata:
  creationTimestamp: 2018-12-05T02:11:50Z
  name: cm-config
  namespace: default
  resourceVersion: "759323"
  selfLink: /api/v1/namespaces/default/configmaps/cm-config
  uid: 2087d2b4-f833-11e8-9072-52540066b534

3.env使用configmap

student@ubuntu:~/volumes$cat pod.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: test
spec:
  containers:
  - name: nginx
    image: nginx
    env:
    - name: TEXT
      valueFrom:
        configMapKeyRef:
          name: cm-config
          key: text

student@ubuntu:~/volumes$kubectl exec test env
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=test
TEXT=number

4.envFrom 使用configmap

student@ubuntu:~/volumes$cat pod.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: test
spec:
  containers:
  - name: nginx
    image: nginx
    envFrom:
    - configMapRef:
        name: cm-config


student@ubuntu:~/volumes$kubectl exec test env
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=test
one=1

text=number
two=2

5.volume使用configmap

apiVersion: v1
kind: Pod
metadata:
  name: test
spec:
  containers:
  - name: nginx
    image: nginx
    volumeMounts:
    - name: cm-config
      mountPath: /etc/cm/
  volumes:
  - name: cm-config
    configMap:
      name: cm-config

student@ubuntu:~/volumes$kubectl exec test ls /etc/cm/ 
one
text
two

使用PV(NFS)

1.安装nfs

服务端
sudo apt-get install -y nfs-kernel-server

sudo mkdir /opt/sfw
sudo chmod 777 /opt/sfw

student@ubuntu:~/volumes$sudo cat /etc/exports 
/opt/sfw/ *(rw,sync,no_root_squash,subtree_check)

sudo exportfs -av

客户节点
sudo apt-get install -y nfs-commom
  1. 创建pv
apiVersion: v1
kind: PersistentVolume
metadata:
  name: pvvol-1
spec:
  capacity:
    storage: 1Gi
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: ReTain
  nfs:
    path: /opt/sfw
    server: 172.30.81.194
    readOnly: false

student@ubuntu:~/volumes$kubectl create -f pv.yaml 
persistentvolume/pvvol-1 created

student@ubuntu:~/volumes$kubectl get pv
NAME      CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS   REASON   AGE
pvvol-1   1Gi        RWX            Retain           Available                                   3s

3.创建pvc

student@ubuntu:~/volumes$cat pvc.yaml 
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pvc-one
spec:
  accessModes:
  - ReadWriteMany
  resources:
    requests:
      storage: 100Mi

student@ubuntu:~/volumes$kubectl create -f pvc.yaml 
persistentvolumeclaim/pvc-one created

student@ubuntu:~/volumes$kubectl get pvc,pv
NAME                            STATUS   VOLUME    CAPACITY   ACCESS MODES   STORAGECLASS   AGE
persistentvolumeclaim/pvc-one   Bound    pvvol-1   1Gi        RWX                           21s

NAME                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM             STORAGECLASS   REASON   AGE
persistentvolume/pvvol-1   1Gi        RWX            Retain           Bound    default/pvc-one                           104s

4.使用pvc

student@ubuntu:~/volumes$cat nginx-one.yaml 
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: nginx-one
  labels:
    system: secondary
spec:
  replicas: 2
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - image: nginx
        imagePullPolicy: Always
        name: nginx
        ports:
        - containerPort: 80
          protocol: TCP
        volumeMounts:
        - name: pvc
          mountPath: /volumes/
      volumes:
      - name: pvc
        persistentVolumeClaim:
          claimName: pvc-one

student@ubuntu:~/volumes$kubectl exec -it nginx-one-7bc6c4dc6f-n5jgh bash
root@nginx-one-7bc6c4dc6f-n5jgh:/# df -ah|grep volumes
172.30.81.194:/opt/sfw        38G  8.2G   28G  23% /volumes

使用resourcequota限制pvc

1.创建storagequota

student@ubuntu:~/volumes$cat storage-quota.yaml 
apiVersion: v1
kind: ResourceQuota
metadata:
  name: storage-quota
  namespace: default
spec:
  hard:
    persistentvolumeclaims: "2"
    requests.storage: "100Mi"

2.查看resourcequota

student@ubuntu:~/volumes$kubectl describe ns default 
Name:         default
Labels:       
Annotations:  
Status:       Active

Resource Quotas
 Name:                   storage-quota
 Resource                Used  Hard
 --------                ---   ---
 persistentvolumeclaims  0     2
 requests.storage        0     100Mi

student@ubuntu:~/volumes$kubectl get resourcequotas 
NAME            CREATED AT
storage-quota   2018-12-04T07:16:13Z

3.创建pv,pvc查看resourcequota的变化

student@ubuntu:~/volumes$kubectl create -f pv.yaml 
persistentvolume/pvvol-1 created
student@ubuntu:~/volumes$kubectl create -f pvc.yaml 
persistentvolumeclaim/pvc-one created
student@ubuntu:~/volumes$kubectl describe ns default 
Name:         default
Labels:       
Annotations:  
Status:       Active

Resource Quotas
 Name:                   storage-quota
 Resource                Used   Hard
 --------                ---    ---
 persistentvolumeclaims  1      2
 requests.storage        100Mi  100Mi

4.deployment里面使用,查看resourcequota的变化

student@ubuntu:~/volumes$kubectl exec -it nginx-one-7bc6c4dc6f-gxglq bash
root@nginx-one-7bc6c4dc6f-gxglq:/# cd /volumes/
root@nginx-one-7bc6c4dc6f-gxglq:/volumes# dd if=/dev/zero of=test bs=1M count=150
150+0 records in
150+0 records out
157286400 bytes (157 MB, 150 MiB) copied, 5.2506 s, 30.0 MB/s
root@nginx-one-7bc6c4dc6f-gxglq:/volumes# 
root@nginx-one-7bc6c4dc6f-gxglq:/volumes# exit 
exit
student@ubuntu:~/volumes$kubectl describe ns default 
Name:         default
Labels:       
Annotations:  
Status:       Active

Resource Quotas
 Name:                   storage-quota
 Resource                Used   Hard
 --------                ---    ---
 persistentvolumeclaims  1      2
 requests.storage        100Mi  100Mi

5.创建pvc大于resourcequota限制的容量

student@ubuntu:~/volumes$cat storage-quota.yaml 
apiVersion: v1
kind: ResourceQuota
metadata:
  name: storage-quota
  namespace: default
spec:
  hard:
    persistentvolumeclaims: "2"
    requests.storage: "100Mi"
student@ubuntu:~/volumes$cat pvc.yaml 
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pvc-one
spec:
  accessModes:
  - ReadWriteMany
  resources:
    requests:
      storage: 150Mi

student@ubuntu:~/volumes$kubectl create -f pvc.yaml 
Error from server (Forbidden): error when creating "pvc.yaml": persistentvolumeclaims "pvc-one" is forbidden: exceeded quota: storage-quota, requested: requests.storage=150Mi, used: requests.storage=0, limited: requests.storage=100Mi

persistentVolumeReclaimPolicy

1.Retain 数据保留

student@ubuntu:~/volumes$kubectl create -f pv.yaml 
persistentvolume/pvvol-1 created
student@ubuntu:~/volumes$kubectl get pv
NAME      CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS   REASON   AGE
pvvol-1   1Gi        RWX            Retain           Available 
student@ubuntu:~/volumes$kubectl create -f pvc.yaml 
persistentvolumeclaim/pvc-one created
student@ubuntu:~/volumes$kubectl get pv,pvc
NAME                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM             STORAGECLASS   REASON   AGE
persistentvolume/pvvol-1   1Gi        RWX            Retain           Bound    default/pvc-one                           31s

NAME                            STATUS   VOLUME    CAPACITY   ACCESS MODES   STORAGECLASS   AGE
persistentvolumeclaim/pvc-one   Bound    pvvol-1   1Gi        RWX                           4s
student@ubuntu:~/volumes$kubectl delete -f pvc.yaml 
persistentvolumeclaim "pvc-one" deleted
student@ubuntu:~/volumes$kubectl get pv
NAME      CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS     CLAIM             STORAGECLASS   REASON   AGE
pvvol-1   1Gi        RWX            Retain           Released   default/pvc-one                           68s
student@ubuntu:~/volumes$kubectl create -f pvc.yaml 
persistentvolumeclaim/pvc-one created
student@ubuntu:~/volumes$kubectl get pvc,pv
NAME                            STATUS    VOLUME   CAPACITY   ACCESS MODES   STORAGECLASS   AGE
persistentvolumeclaim/pvc-one   Pending                                                     5s

NAME                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS     CLAIM             STORAGECLASS   REASON   AGE
persistentvolume/pvvol-1   1Gi        RWX            Retain           Released   default/pvc-one                           88s

2.Delete (volume插件获取失败,无法删除数据)

student@ubuntu:~/volumes$kubectl create -f pv.yaml 
persistentvolume/pvvol-1 created
student@ubuntu:~/volumes$kubectl get pv
NAME      CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS   REASON   AGE
pvvol-1   1Gi        RWX            Delete           Available                                   5s
student@ubuntu:~/volumes$kubectl create -f pvc.yaml 
persistentvolumeclaim/pvc-one created
student@ubuntu:~/volumes$kubectl get pv,pvc
NAME                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM             STORAGECLASS   REASON   AGE
persistentvolume/pvvol-1   1Gi        RWX            Delete           Bound    default/pvc-one                           22s

NAME                            STATUS   VOLUME    CAPACITY   ACCESS MODES   STORAGECLASS   AGE
persistentvolumeclaim/pvc-one   Bound    pvvol-1   1Gi        RWX 
student@ubuntu:~/volumes$kubectl delete -f pvc.yaml 
persistentvolumeclaim "pvc-one" deleted
student@ubuntu:~/volumes$kubectl get pv,pvc
NAME                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM             STORAGECLASS   REASON   AGE
persistentvolume/pvvol-1   1Gi        RWX            Delete           Failed   default/pvc-one                           54s
student@ubuntu:~/volumes$kubectl create -f pvc.yaml 
persistentvolumeclaim/pvc-one created
student@ubuntu:~/volumes$kubectl get pv,pvc
NAME                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM             STORAGECLASS   REASON   AGE
persistentvolume/pvvol-1   1Gi        RWX            Delete           Failed   default/pvc-one                           83s

NAME                            STATUS    VOLUME   CAPACITY   ACCESS MODES   STORAGECLASS   AGE
persistentvolumeclaim/pvc-one   Pending                                                     5s

3.Recycle 数据会被删除

student@ubuntu:~/volumes$kubectl create -f pv.yaml 
persistentvolume/pvvol-1 created
student@ubuntu:~/volumes$kubectl get pv
NAME      CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS   REASON   AGE
pvvol-1   1Gi        RWX            Recycle          Available                                   3s

student@ubuntu:~/volumes$

student@ubuntu:~/volumes$kubectl create -f pvc.yaml 
persistentvolumeclaim/pvc-one created
student@ubuntu:~/volumes$kubectl get pv,pvc
NAME                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM             STORAGECLASS   REASON   AGE
persistentvolume/pvvol-1   1Gi        RWX            Recycle          Bound    default/pvc-one                           26s

NAME                            STATUS   VOLUME    CAPACITY   ACCESS MODES   STORAGECLASS   AGE
persistentvolumeclaim/pvc-one   Bound    pvvol-1   1Gi        RWX                           4s
student@ubuntu:~/volumes$kubectl delete -f pvc.yaml 

student@ubuntu:~/volumes$kubectl get pv,pvc
NAME                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS   REASON   AGE
persistentvolume/pvvol-1   1Gi        RWX            Recycle          Available                                   68s

你可能感兴趣的:(LFS258-LAB-Volumes and Data)