第6章将磁盘挂载到容器

网友投稿 290 2022-10-29

第6章将磁盘挂载到容器

通过卷在容器间共享数据

emptyDir:当pod删除时卷也被删除,用于存放临时数据

pod实例fortune.yaml

apiVersion: v1

kind: Pod

metadata:

name: fortune

spec:

containers:

- image: luksa/fortune

name: html-generator

volumeMounts:

- name: html

mountPath: /var/htdocs

- image: nginx:alpine

name: web-server

volumeMounts:

- name: html

mountPath: /usr/share/nginx/html

readOnly: true

ports:

- containerPort: 80

protocol: TCP

volumes:

- name: html

emptyDir: {}

kubectl create -f fortune.yaml

kubectl logs fortune html-generator

kubectl logs fortune web-server

kubectl exec -it fortune -c web-server  /bin/sh

hostPath:指向节点文件系统的特定目录

[root@mes2 k8study]# kubectl get pods --namespace kube-system

[root@mes2 k8study]# kubectl describe pods kube-addon-manager-minikube --namespace kube-system

Name:         kube-addon-manager-minikube

Namespace:    kube-system

Priority:     0

Node:         minikube/172.27.14.222

Start Time:   Fri, 23 Aug 2019 05:37:36 -0400

Labels:       component=kube-addon-manager

kubernetes.io/minikube-addons=addon-manager

version=v9.0

Annotations:  kubernetes.io/config.hash: 5327162914655af67829868f3ab76393

kubernetes.io/config.mirror: 5327162914655af67829868f3ab76393

kubernetes.io/config.seen: 2019-08-23T05:37:15.210580764-04:00

kubernetes.io/config.source: file

Status:       Running

IP:           172.27.14.222

Containers:

kube-addon-manager:

Container ID:   docker://0069f20fe82b89a890f89b13e6f812dca78d81d83ecec0534dc9aaded79a7fd3

Image:          registry.cn-hangzhou.aliyuncs.com/google_containers/kube-addon-manager:v9.0

Image ID:       docker-pullable://registry.cn-hangzhou.aliyuncs.com/google_containers/kube-addon-manager@sha256:672794ee3582521eb8bc4f257d0f70c92893f1989f39a200f9c84bcfe1aea7c9

Port:           

Host Port:     

State:          Running

Started:      Tue, 17 Mar 2020 23:23:17 -0400

Last State:     Terminated

Reason:       Error

Exit Code:    137

Started:      Fri, 23 Aug 2019 05:37:37 -0400

Finished:     Tue, 17 Mar 2020 23:23:11 -0400

Ready:          True

Restart Count:  1

Requests:

cpu:     5m

memory:  50Mi

Environment:

KUBECONFIG:  /var/lib/minikube/kubeconfig

Mounts:

/etc/kubernetes/ from addons (ro)

/var/lib/minikube/ from kubeconfig (ro)

Conditions:

Type              Status

Initialized       True

Ready             True

ContainersReady   True

PodScheduled      True

Volumes:

addons:

Type:          HostPath (bare host directory volume)

Path:          /etc/kubernetes/

HostPathType:

kubeconfig:

Type:          HostPath (bare host directory volume)

Path:          /var/lib/minikube/

HostPathType:

QoS Class:         Burstable

Node-Selectors:   

Tolerations:       :NoExecute

Events:           

使用持久存储

[root@mes2 k8study]# cat mongonhostpath_pod.yaml

apiVersion: v1

kind: Pod

metadata:

name: mongodb

spec:

volumes:

- name: mongodb-data

hostPath:

path: /data/nfs

type: Directory

containers:

- image: mongo

name: mongodb

volumeMounts:

- name: mongodb-data

mountPath: /data/db

ports:

- containerPort: 27017

protocol: TCP

通过底层持久化存储使用其它类型存储nfs卷

[root@mes2 k8study]# cat mongonfs_pod.yaml

apiVersion: v1

kind: Pod

metadata:

name: mongodb

spec:

volumes:

- name: mongodb-data

nfs:

server: 172.27.14.223

path: /root/data

containers:

- image: mongo

name: mongodb

volumeMounts:

- name: mongodb-data

mountPath: /data/db

ports:

- containerPort: 27017

protocol: TCP

持久卷将底层存储与POD解耦

集群管理员将存储卷通过KubenetsAPI服务器创建注册持久卷PV

mongodb-pv-nfs.yaml

apiVersion: v1

kind: PersistentVolume

metadata:

name: mongodb-pv

spec:

capacity:

storage: 1Gi

accessModes:

- ReadWriteOnce

- ReadOnlyMany

persistentVolumeReclaimPolicy: Retain

nfs:

server: 172.27.14.223

path: /root/data

[root@mes2 k8study]# kubectl get pv

NAME         CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                 STORAGECLASS   REASON   AGE

mongodb-pv   1Gi        RWO,ROX        Retain           Bound    default/mongodb-pvc                           8m45s

mongodb-pvc.yaml

apiVersion: v1

kind: PersistentVolumeClaim

metadata:

name: mongodb-pvc

spec:

resources:

requests:

storage: 1Gi

accessModes:

- ReadWriteOnce

storageClassName: ""

[root@mes2 k8study]# kubectl get pvc

NAME          STATUS   VOLUME       CAPACITY   ACCESS MODES   STORAGECLASS   AGE

mongodb-pvc   Bound    mongodb-pv   1Gi        RWO,ROX                       49s

[root@mes2 k8study]# cat mongopv_pod.yaml

apiVersion: v1

kind: Pod

metadata:

name: mongodb

spec:

volumes:

- name: mongodb-data

persistentVolumeClaim:

claimName: mongodb-pvc

containers:

- image: mongo

name: mongodb

volumeMounts:

- name: mongodb-data

mountPath: /data/db

ports:

- containerPort: 27017

protocol: TCP

手动回收持久卷:将persistentVolumeReclaimPolicy设置为Retain

持久卷的动态配置storageclass

storageclass-fast-gcepd.yaml

apiVersion: storage.k8s.io/v1

kind: StorageClass

metadata:

name: fast

provisioner: kubernetes.io/gce-pd

parameters:

type: pd-ssd

zone: europe-west1-b

请求特定存储类的PVC定义

mongodb-pvc-pd.yaml

apiVersion: v1

kind: PersistentVolumeClaim

metadata:

name: mongodb-pvc

spec:

storageClassName: fast

resources:

requests:

storage: 100Mi

accessModes:

- ReadWriteOnce

mongodb-pvc-pd-nostorageclass.yaml

apiVersion: v1

kind: PersistentVolumeClaim

metadata:

name: mongodb-pvc2

spec:

resources:

requests:

storage: 100Mi

accessModes:

- ReadWriteOnce

检查存储类

[root@mes2 ~]# kubectl get sc

NAME                 PROVISIONER                AGE

standard (default)   k8s.io/minikube-hostpath   242d

[root@mes2 ~]# kubectl get sc standard -o yaml

apiVersion: storage.k8s.io/v1

kind: StorageClass

metadata:

annotations:

storageclass.kubernetes.io/is-default-class: "true"

creationTimestamp: "2019-08-23T09:37:55Z"

labels:

addonmanager.kubernetes.io/mode: EnsureExists

name: standard

resourceVersion: "358"

selfLink: /apis/storage.k8s.io/v1/storageclasses/standard

uid: 9d6be323-c93d-44f4-bc05-c068cf0897de

provisioner: k8s.io/minikube-hostpath

reclaimPolicy: Delete

volumeBindingMode: Immediate

参考:

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:基于AT73C260的多种接口USB收发技术
下一篇:springmvc不进入Controller导致404的问题
相关文章

 发表评论

暂时没有评论,来抢沙发吧~