8、kubernetes之存储卷资源
一、存储卷的类型
- emptyDir:在宿主机上分一块内存空间给pod当做存储空间
- hostPath:在宿主机上分一块磁盘空间给pod当做存储空间
- 网络存储:
- SAN:iSCSI,FC
- NAS:nfs,cifs
- 分布式存储:glusterfs,rbd,cephfs,...
- 云存储:EBS,Azure,Disk
# kubectl explain pods.spec.volumes #查看k8s支持的存储
二、emptyDir
apiVersion: v1
kind: Pod
metadata:name: pod-vol-demonamespace: defaultlabels:app: myapptier: frontendannotations:dongfei.tech/created-by: "cluster admin"
spec:containers:- name: myappimage: dongfeimg/myapp:v1imagePullPolicy: IfNotPresentports:- name: httpcontainerPort: 80volumeMounts:- name: htmlvomumesmountPath: /data/web/html2/volumes:- name: htmlvomumesemptyDir: medium: "" #使用宿主机内存当做磁盘挂载sizeLimit: "1024" #限制使用的内存
三、hostPath
apiVersion: v1
kind: Pod
metadata:name: pod-vol-hostpathnamespace: default
spec:containers:- name: myappimage: dongfeimg/myapp:v1volumeMounts:- name: htmlmountPath: /usr/share/nginx/html/volumes:- name: htmlhostPath:path: /data/pod/volume1 #node节点路径type: DirectoryOrCreate #文件夹不存在则创建
四、nfs
- 搭建/测试nfs-server
# yum install nfs-utils -y
# mkdir /data/volumes/
# vim /etc/exports
/data/volumes 192.168.100.0/24(rw,no_root_squash)
# systemctl start nfs
# systemctl enable nfs# mount -t nfs 192.168.100.1:/data/volumes /mnt/
apiVersion: v1
kind: Pod
metadata:name: pod-vol-nfsnamespace: default
spec:containers:- name: myappimage: dongfeimg/myapp:v1volumeMounts:- name: htmlmountPath: /usr/share/nginx/html/volumes:- name: htmlnfs:path: /data/volumesserver: 192.168.100.1
五、pv和pvc
# kubectl explain pv
# kubectl explain pvc
# kubectl get pv
# kubectl get pvc
1、提前准备PV的方式
- 准备存储空间
# mkdir -p /data/volumes/v{1,2,3,4,5}
# vim /etc/exports
/data/volumes/v1 192.168.100.0/24(rw,no_root_squash)
/data/volumes/v2 192.168.100.0/24(rw,no_root_squash)
/data/volumes/v3 192.168.100.0/24(rw,no_root_squash)
/data/volumes/v4 192.168.100.0/24(rw,no_root_squash)
/data/volumes/v5 192.168.100.0/24(rw,no_root_squash)
# exportfs -arv
# showmount -e
- 创建pv
访问模型(accessModes <[]string>):https://kubernetes.io/docs/concepts/storage/persistent-volumes/#access-modes
apiVersion: v1
kind: PersistentVolume
metadata:name: pv001labels:name: pv001
spec:nfs:path: /data/volumes/v1server: 192.168.100.1accessModes: ["ReadWriteMany","ReadWriteOnce"]capacity:storage: 3Gi
---
apiVersion: v1
kind: PersistentVolume
metadata:name: pv002labels:name: pv002
spec:nfs:path: /data/volumes/v2server: 192.168.100.1accessModes: ["ReadWriteOnce"]capacity:storage: 5Gi
---
apiVersion: v1
kind: PersistentVolume
metadata:name: pv003labels:name: pv003
spec:nfs:path: /data/volumes/v3server: 192.168.100.1accessModes: ["ReadWriteOnce"]capacity:storage: 50Gi
- 创建pvc
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: pvc001namespace: default
spec:accessModes: ["ReadWriteOnce"]resources: requests: storage: 6Gi #要求绑定大于6G的pv
---
apiVersion: v1
kind: Pod
metadata:name: pod-vol-pvcnamespace: default
spec:containers:- name: myappimage: dongfeimg/myapp:v1volumeMounts:- name: htmlmountPath: /usr/share/nginx/html/volumes:- name: htmlpersistentVolumeClaim:claimName: pvc001
2、按pvc需要自动创建pv
- 需要支持resfull风格api的存储来请求动态创建存储,实现动态请求创建pv
六、configmap和secret
- secret和configmap是两个特殊的存储卷,用于用户将集群外的配置注入pod
- secret和configmap的功能相同,configmap以明文存储,secret是用base64编码存放
配置容器化应用的方式:
- 自定义命令行参数:args: []
- 把配置文件直接copy进镜像
- 环境变量加载配置
- cloud native的应用程序一般可通过环境变量加载配置
- 通过entrypoint脚本来预处理变量为配置文件中的配置信息
- 存储卷
# kubectl explain cm
- 命令行直接创建cm
# kubectl create configmap nginx-config --from-literal=nginx_port=80 --from-literal=server_name=myapp.dongfei.tech
# kubectl get cm
# kubectl describe cm nginx-config
- 命令行创建secret
# kubectl create secret generic mysql-root-password --from-literal=password=My@Pass
# kubectl get secret
# kubectl describe secret mysql-root-password
# kubectl get secret mysql-root-password -o yaml
# echo TXlAUGFzcw== |base64 -d #解码
My@Pass
- 将配置文件创建为cm
# cat www.conf
server {server_name myapp.dongfei.tech;listen 80;root /data/web/html;
}
# kubectl create configmap nginx-www --from-file=./www.conf #不指定key则将文件名当做key,文件内容当做value
- 将cm通过环境变量注入pod
apiVersion: v1
kind: Pod
metadata:name: pod-cm-1namespace: defaultlabels:app: myapptier: frontendannotations:dongfei.tech/created-by: "cluster admin"
spec:containers:- name: myappimage: dongfeimg/myapp:v1imagePullPolicy: IfNotPresentports:- name: httpcontainerPort: 80env:- name: NGINX_SERVER_PORTvalueFrom:configMapKeyRef:name: nginx-configkey: nginx_port- name: NGINX_SERVER_NAMEvalueFrom:configMapKeyRef:name: nginx-configkey: server_name
- 将cm通过存储卷方式以文件注入容器
apiVersion: v1
kind: Pod
metadata:name: pod-cm-2namespace: defaultlabels:app: myapptier: frontendannotations:dongfei.tech/created-by: "cluster admin"
spec:containers:- name: myappimage: dongfeimg/myapp:v1imagePullPolicy: IfNotPresentports:- name: httpcontainerPort: 80volumeMounts:- name: nginxconfmountPath: /etc/nginx/conf.d/readOnly: truevolumes:- name: nginxconfconfigMap:name: nginx-www
- 将secret通过环境变量方式注入容器
apiVersion: v1
kind: Pod
metadata:name: pod-secret-1namespace: defaultlabels:app: myapptier: frontendannotations:dongfei.tech/created-by: "cluster admin"
spec:containers:- name: myappimage: dongfeimg/myapp:v1imagePullPolicy: IfNotPresentports:- name: httpcontainerPort: 80env:- name: MYSQL_ROOT_PASSWORDvalueFrom:secretKeyRef:name: mysql-root-passwordkey: password
转载于:https://www.cnblogs.com/L-dongf/p/11439882.html
8、kubernetes之存储卷资源相关推荐
- Kubernetes 本地存储卷 pod volume emptyDir
Volume 本节我们讨论 Kubernetes 的存储模型 Volume,学习如何将各种持久化存储映射到容器. 我们经常会说:容器和 Pod 是短暂的. 其含义是它们的生命周期可能很短,会被频繁地销 ...
- Kubernetes—动态存储卷配置(StorageClass资源)(十二)
StorageClass的介绍 StorageClass是对存储资源的一个抽象定义.与静态模式的存储卷配置(就是集群管理员手动去创建持久卷PV),StorageClass是一种动态模式的存储卷配置 ...
- 资源利用率监控与存储卷(pv/pvc)
官网:https://kubernetes.io/zh/ 一.资源利用率的概述 k8s容器创建的时候是随机分配的,如果随机分配时,有一个节点分配得比较多时,则会出现卡顿等等的事情: 1.metrics ...
- 阿里云Kubernetes CSI实践—NAS动态存储卷使用
1. 前言 NAS存储盘能将nfs(网络文件系统)挂载到你的Pod中,阿里云Kubernetes CSI支持静态存储卷挂载和动态存储卷挂载2种方式, 在静态存储卷挂载的方式中,通常需要手动编辑和创建一 ...
- @kubernetes(k8s)数据持久化Volume存储卷(emptyDir、hostPath、NFS、StorageClass)
文章目录 kubernetes(k8s)数据持久化Volume 一.数据持久化 1.Vlolume概述 2.数据卷的分类 3.常用的四种数据卷 4.Pod使用Volume步骤: 5. volume基本 ...
- kubernetes系列12—二个特色的存储卷configmap和secret
本文收录在容器技术学习系列文章总目录 1.configmap 1.1 认识configmap ConfigMap用于保存配置数据的键值对,可以用来保存单个属性,也可以用来保存配置文件.ConfigMa ...
- kubernetes系列10—存储卷详解
kubernetes系列10-存储卷详解 1.认识存储卷 1.1 背景 默认情况下容器中的磁盘文件是非持久化的,容器中的磁盘的生命周期是短暂的,这就带来了一系列的问题:第一,当一个容器损坏之后,kub ...
- Kubernetes(K8s)基本概念:Volume(存储卷)、Persistent Volume
Kubernetes(K8s)基本概念:Volume(存储卷) 一.Volume(存储卷) Volume是Pod中能够被多个容器访问的共享目录. K8s中的Volume定义在Pod上,然后被一个Pod ...
- 为什么Kubernetes的存储如此艰难?
随着像Kubernetes这样的容器编排工具的大火,应用程序的开发与部署方式正经历着一场巨大的变革.微服务体系结构的兴起,以及从开发人员的角度,将基础架构与应用程序逻辑间相互解耦,使得开发人员越来越关 ...
- 云原生存储详解:容器存储与 K8s 存储卷
作者 | 阚俊宝 阿里云技术专家 导读:云原生存储详解系列文章将从云原生存储服务的概念.特点.需求.原理.使用及案例等方面,和大家一起探讨云原生存储技术新的机遇与挑战.本文为该系列文章的第二篇,会对容 ...
最新文章
- mysql构建镜像时写入密码_用Dockerfile手动创建mysql5.7主从镜像
- mysql5.7.20非安装版_mysql 5.7.20\5.7.21 免安装版安装配置教程
- spring的aop注解配置(了解)
- ​Cookie 从入门到进阶:一文彻底弄懂其原理以及应用
- 按钮开关java代码,Android自定义实现开关按钮代码
- Android实现支持缩放平移图片
- matlab 多重循环在最外层加断点_循环优化之循环分块(loop tiling)
- 升级php7_PHP 5.6 已结束安全支持,你升级到 PHP 7 系列了吗?
- MySQL安装与java配合
- 语音通话视频通话前端_无需互联网即可进行数十亿视频通话
- 数学分析教程(科大)——1.7笔记+习题
- Linux挂载报错:Mount is denied because the NTFS volume is already exclusively opened. The volume may be a
- P32-前端基础-CSS盒子尺寸box-sizing: border-box
- lua搭建ui_[专栏作家] Lua写UI的一些使用心得
- mysql重叠的词_举例说明叠音词,重叠式复合词,词的重叠,三者有何不同?
- Redis上踩过的一些坑-美团
- sql server 函數
- EXCEL表格-系统时间及进度自动记录工具制作
- HowTo create a basic Maphack
- Python爬虫实践(入门篇)——抓取《天使降临到我身边》图片