MySQL
对于单实例有状态应用,会使用PersistentVolume和Deployment。
创建mysql-deployment.yaml
apiVersion: v1
kind: Service
metadata:
name: mysql
spec:
ports:
- port: 3306
selector:
app: mysql
clusterIP: None
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mysql-pv-claim
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 20Gi
---
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:
- 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
创建部署
kubectl create -f mysql-deployment.yaml
查看部署情况
kubectl describe deployment mysql
列出pods
kubectl get pods -l app=mysql
查看PersistentVolumeClaim
kubectl describe pvc mysql-pv-claim
访问MySQL实例
运行MySQL客户端连接server
kubectl run -it --rm --image=mysql:5.6 --restart=Never mysql-client -- mysql -h mysql -ppassword
此时即进入mysql交互界面
mysql> show databases;
更新deployment
Deployment使用的image或其他配置也可以需改,并通过kubectl apply
生效。
但对于有状态的应用,需要注意:
不要scale应用,而本实例中PersistentVolume也仅与一个Pod关联
策略选择为Recreate,从而避免rolling update
删除deployment
kubectl delete deployment,svc mysql
kubectl delete pvc mysql-pv-claim