k8s实战四创建单实例的有状态应⽤
创建单实例的有状态应⽤
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
---mysql下载app
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

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。