sc pv pvc pod 之间的关系
yaml 代码 (弄一个mysql 的pod )
# services
apiVersion: v1
kind: Service
metadata:
name: mysql
spec:
ports:
- port: 3306 # service 公开的端口
targetPort: 3306 # 服务所针对的 pod 上要访问的端口号或名称
appProtocol: mysql # 此端口的应用程序协议
selector:
app: mysql
clusterIP: None
---
# deployment
apiVersion: apps/v1
kind: Deployment
metadata:
name: mysql
spec:
selector:
matchLabels:
app: mysql
strategy:
type: Recreate
template:
metadata:
labels:
app: mysql
spec:
containers:
- image: mysql:5.6
name: mysql
env:
# Use secret in real usage
- name: MYSQL_ROOT_PASSWORD
value: "123456"
ports:
- containerPort: 3306
name: mysql
volumeMounts:
- name: mysql-persistent-storage
mountPath: /var/lib/mysql # mysql 容器里面 挂载的路径 (mysql的存储路径 )
volumes:
- name: mysql-persistent-storage
persistentVolumeClaim:
claimName: mysql-pv-claim # mysql 申请 挂载 的 pvc 名
---
# pvc 声名要多大的磁盘
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mysql-pv-claim
spec:
storageClassName: local-storage
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
---
# pv 真正的磁盘 磁盘有多大 ,是什么类型的
apiVersion: v1
kind: PersistentVolume
metadata:
name: mysql-pv-volume
labels:
type: local
spec:
storageClassName: local-storage
capacity:
storage: 10Gi
accessModes: # 卷可以被一个节点以读写方式挂载
- ReadWriteOnce
local: # 节点上面 挂在 pv 的 路径
path: "/mnt/data"
---
# sc 抽象层的磁盘 类型
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: local-storage # sc 名字
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer