【k8s】存储
@
写在前面
k8s 存储
卷(Volume)
-
临时卷
- emptyDir
- confiMap
- secret
-
持久卷
- 本地存储
hostPath
local
- 网络存储
nfs
- 分布式存储
- 本地存储
-
映射卷
- producted
多个卷映射到同一个目录上
- producted
创建持久卷(PV)
- 静态创建
- 管理员预先手动创建
- 手动创建麻烦、不够灵活(local卷不支持动态创建,必须手动创建PV)
- 资源浪费(例如一个PVC可能匹配到比声明容量大的卷)
- 对自动化工具不够友好
- 动态创建
- 根据用户请求按需创建持久卷,在用户请求时自动创建
- 动态创建需要使用存储类(StorageClass)
- 用户需要在持久卷声明(PVC)中指定存储类来自动创建声明中的卷。
- 如果没有指定存储类,使用集群中默认的存储类。
pv & pvc
pv 持久卷
pvc 持久卷声明
临时卷 configmap 使用
apiVersion: v1
kind: ConfigMap
metadata:
name: v-mysql-config
data:
mysql.cnf: |
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
init-connect='SET NAMES utf8mb4'
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
---
apiVersion: v1
kind: Pod
metadata:
name: mysql-1
spec:
containers:
- name: mysql
image: mysql:latest
volumeMounts:
- mountPath: /var/lib/mysql
name: conf-volume
readOnly: true
volumes:
- name: conf-volume
configMap:
name: v-mysql-config
临时卷 secret
apiVersion: v1
kind: Secret
metadata:
name: mysql-password
type: Opaque
data:
PASSWORD: MTIzNDU2Cg==
---
apiVersion: v1
kind: ConfigMap
metadata:
name: v-mysql-config
data:
mysql.cnf: |
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
init-connect='SET NAMES utf8mb4'
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
---
apiVersion: v1
kind: Pod
metadata:
name: mysql-1
spec:
containers:
- name: mysql
image: mysql:latest
env:
- name: MYSQL_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: mysql-password
key: PASSWORD
optional: false # 此值为默认值;表示secret已经存在了
volumeMounts:
- mountPath: /etc/mysql/conf.d
name: conf-volume
readOnly: true
- mountPath: /var/lib/mysql
name: data-volume
volumes:
- name: conf-volume
configMap:
name: v-mysql-config
- name: data-volume
hostPath:
# directory location on host
path: /home/mysql/data
# this field is optional
type: DirectoryOrCreate
动态创建pvc
- local-path的存储类(StorageClass)
- 它支持动态创建基于hostPath或local的持久卷。
- 创建PVC后,会自动创建PV,不需要再去手动的创建PV。
- 删除PVC,PV也会被自动删除
待定。。。
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: local-path-pvc
namespace: default
spec:
accessModes:
- ReadWriteOnce
storageClassName: local-path
resources:
requests:
storage: 1Gi
---
apiVersion: v1
kind: Pod
metadata:
name: mysql-pod
spec:
containers:
- name: mysql
image: mysql:latest
env:
- name: MYSQL_ROOT_PASSWORD
value: "123456"
ports:
- containerPort: 3306
volumeMounts:
- mountPath: /var/lib/mysql #容器中的目录
name: local-mysql-data
volumes:
- name: local-mysql-data
persistentVolumeClaim:
claimName: local-path-pvc
参考资料
免责声明:
本站提供的资源,都来自网络,版权争议与本站无关,所有内容及软件的文章仅限用于学习和研究目的。不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负,我们不保证内容的长久可用性,通过使用本站内容随之而来的风险与本站无关,您必须在下载后的24个小时之内,从您的电脑/手机中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。侵删请致信