并查看describe pod的详情信息 [[emailprotected] happylau]# kubectl ap
标签:
写在前面上一篇文章中kubernetes系列教程(八)Pod健康查抄机制介绍了kubernetes中Pod健康查抄机制,通过实战介绍了kubernetes中两种健康查抄探针:livenessProbe存活查抄,readinessProbe就绪查抄,存活查抄用于查抄应用的可用性,就绪查抄用于查抄容器是否筹备接受流量,健康查抄包罗三种探测的要领:exec命令行探测,tcpSocket端口检测,httpGet请求检测,分袂适用于差别场景下的健康查抄。接下来介绍kubernetes系列教程pod的存储打点。
kubernetes存储打点凭据成长的历程,涉及到有Volume,PV(Persistent Volume)和PVC(PersistentVolumeClaims),和StorageClass,Volume是最早提出的存储卷,主要解决容器和数据存储的依赖关系,抽象底层驱动以撑持差此外存储类型;使用Volume需要了解底层存储细节,因此提出了PV,Persistent Volume是由k8s打点员界说的存储单元,应用端使用PersistentVolumeClaims声明去挪用PV存储,进一步抽象了底层存储;跟着PV数量的增加,打点员需要不竭的界说PV的数量,衍生了通过StorageClass动态生成PV,StorageClass通过PVC中声明存储的容量,会挪用底层的供给商生成PV。本文介绍Volume的使用,下篇文章介绍PV,PVC和StorageClass。
Volume 存储卷,独立于容器,后端和差此外存储驱动对接
PV Persistent Volume长期化存储卷,和node类似,是一种集群资源,由打点员界说,对接差此外存储
PVC PersistentVolumeClaims长期化存储声明,和pod类似,作为PV的使用者
StorageClass 动态存储类型,分为静态和动态两种类型,通过在PVC中界说存储类型,自动创建所需PV
1. kubernetes存储打点 1.1 存储概述kubernetes容器中的数据是姑且的,即当重启重启或crash后容器的数据将会丢掉,别的容器之间有共享存储的需求,所以kubernetes中供给了volume存储的抽象,volume后端能够撑持多种差此外plugin驱动,通过.spec.volumes中界说一个存储,然后在容器中.spec.containers.volumeMounts挪用,最终在容器内部以目录的形式泛起。
kubernetes内置能撑持多种差此外驱动类型,梗概上可以分为四种类型:1. 公/私有云驱动接口,如awsElasticBlockStore实现与aws EBS集成,2. 开源存储驱动接口,如ceph rbd,实现与ceph rb块存储对接,3. 本地姑且存储,如hostPath,4. kubernetes东西API驱动接口,实现其他东西挪用,如configmap,每种存储撑持差此外驱动,如下介绍:
公/私有云驱动接口
awsElasticBlockStore AWS的EBS云盘
azureDisk 微软azure云盘
azureFile 微软NAS存储
gcePersistentDisk google云盘
cinder openstack cinder云盘
vsphereVolume VMware的VMFS存储
scaleIO EMC漫衍式存储
开源存储驱动接口
ceph rbd ceph块存储
cephfs ceph文件存储
glusterfs glusterfs存储
nfs nfs文件
iscsi
flexvolume
csi 社区标准化驱动
flocker
本地姑且存储
hostpath 宿主机文件
emptyDir 姑且目录
kubernetes东西API驱动接口
configMap 挪用configmap东西,注入配置文件
secrets 挪用secrets东西,注入秘文配置文件
persistentVolumeClaim 通过pvc挪用存储
downloadAPI 下载URL
projected
1.2 emptyDir姑且存储emptyDir是一种姑且存储,pod创建的时候会在node节点上为容器申请一个姑且的目录,跟从容器的生命周期,如容器删除,emptyDir界说的姑且存储空间也会随之删除,容器产生不测crash则不受影响,同时如果容器产生了迁移,其上的数据也会丢掉,emptyDir一般用于测试,或者缓存场景。
界说一个emptyDir存储巨细为1G,将其挂载到redis的/data目录中
[[email protected] happylau]# cat emptydir-redis.yaml apiVersion: v1 kind: Pod metadata: name: emptydir-redis labels: volume: emptydir annotations: kubernetes.io/storage: emptyDir spec: containers: - name: emptydir-redis image: redis:latest imagePullPolicy: IfNotPresent ports: - name: redis-6379-port protocol: TCP containerPort: 6379 volumeMounts: #将界说的驱动emptydir-redis挂载到容器的/data目录,通过名字方法关联 - name: emptydir-redis mountPath: /data volumes: #界说一个存储,驱动类型为emptyDir,巨细1G - name: emptydir-redis emptyDir: sizeLimit: 1Gi生成redis pod,并检察describe pod的详情信息
[[email protected] happylau]# kubectl apply -f emptydir-redis.yaml pod/emptydir-redis created 执行kubectl describe pods emptydir-redis检察容器的存储挂载信息 Containers: emptydir-redis: Container ID: docker://dddd9f3d0e395d784c08b712631d2b0c259bfdb30b0c655a0fc8021492f1ecf9 Image: redis:latest Image ID: docker-pullable://[email protected]:cb379e1a076fcd3d3f09e10d7b47ca631fb98fb33149ab559fa02c1b11436345 Port: 6379/TCP Host Port: 0/TCP State: Running Started: Tue, 01 Oct 2019 11:04:30 +0800 Ready: True Restart Count: 0 Environment: <none> Mounts: #挂载信息,将emptydir-redis挂载到/data目录,且是rw读写状态 /data from emptydir-redis (rw) /var/run/secrets/kubernetes.io/serviceaccount from default-token-5qwmc (ro) Conditions: Type Status Initialized True Ready True ContainersReady True PodScheduled True Volumes: #界说了一个EmptyDir类型的存储,巨细为1Gi emptydir-redis: Type: EmptyDir (a temporary directory that shares a pod‘s lifetime) Medium: SizeLimit: 1Gi default-token-5qwmc: Type: Secret (a volume populated by a Secret) SecretName: default-token-5qwmc Optional: false温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/30808.html