k8s实战四 创建单实例的有状态应用
创建单实例的有状态应用PersistentVolume (PV) 是由管理员提供的集群中的一段存储。它是集群中的资源,就像节点是集群资源一样。PV与Volumes一样,是卷插件,但是具有独立于使用PV的任何单个pod的生命周期。这个API对象捕获了存储实现的细节,无论是NFS、iSCSI还是云提供者特定的存储系统。PersistentVolumeClaim (PVC) 是用户对存储的请求...
·
创建单实例的有状态应用
PersistentVolume (PV) 是由管理员提供的集群中的一段存储。它是集群中的资源,就像节点是集群资源一样。PV与Volumes一样,是卷插件,但是具有独立于使用PV的任何单个pod的生命周期。这个API对象捕获了存储实现的细节,无论是NFS、iSCSI还是云提供者特定的存储系统。
PersistentVolumeClaim (PVC) 是用户对存储的请求。它类似于豆荚。Pods消耗节点资源,PVC消耗PV资源。Pod可以请求特定级别的资源(CPU和内存)。
1 部署mysql
创建 mysql-deployment.yaml
这里service 和deployment在一起
# 解释下Service的yaml
apiVersion: v1 # 版本v1
kind: Service # 类型 sevice
metadata: # metadata 元数据 分级
name: mysql # 名字就是mysql
spec: # 具体
ports: # 端口
- port: 3306 # 端口
selector: # label app=mysql
app: mysql
clusterIP: None
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: mysql
spec:
selector:
matchLabels:
app: mysql
strategy: # 指定新的Pod替换旧的Pod的策略
type: Recreate # ==Recreate时,在创建出新的Pod之前会先杀掉所有已存在的Pod 还有一个默认的RollingUpdate
template: # template就是个schame spec下必须有他
metadata:
labels:
app: mysql
spec:
containers:
- image: mysql:5.6
name: mysql
env:
# Use secret in real usage
- name: MYSQL_ROOT_PASSWORD # 容器的环境变量
value: password
ports:
- containerPort: 3306
name: mysql
volumeMounts: ## 挂载的卷
- name: mysql-persistent-storage
mountPath: /var/lib/mysql
volumes: # 挂载卷
- name: mysql-persistent-storage
persistentVolumeClaim: # 用来挂载持久化磁盘
claimName: mysql-pv-claim # 类型为persistentVolumeClaim的持久卷的名字
添加mysql-pv.yaml
kind: PersistentVolume #PersistentVolume是用户在不知道特定云环境的细节的情况下,实现持久化存储(如GCE PersistentDisk或iSCSI卷)的一种方式。
apiVersion: v1
metadata:
name: mysql-pv-volume
labels:
type: local
spec:
storageClassName: manual
capacity:
storage: 20Gi
accessModes:
- ReadWriteOnce
hostPath:
path: "/mnt/data"
---
apiVersion: v1
kind: PersistentVolumeClaim # PersistentVolumeClaim用来挂载持久化磁盘
metadata:
name: mysql-pv-claim
spec:
storageClassName: manual
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 20Gi
部署 PV and PVC
kubectl create -f mysql-pv.yaml
部署deployment
kubectl create -f mysql-deployment.yaml
查看详情信息
kubectl describe deployment mysql
查看mysql的pod
kubectl get pods -l app=mysql
查看pvc
kubectl describe pvc mysql-pv-claim
运行一个mysql client来链接mysql pod
kubectl run -it --rm --image=mysql:5.6 --restart=Never mysql-client -- mysql -h mysql -ppassword
删除测试的deployment
kubectl delete deployment,svc mysql #svc 就是service的意思
kubectl delete pvc mysql-pv-claim
kubectl delete pv mysql-pv-volume
更多推荐
已为社区贡献5条内容
所有评论(0)