淘先锋技术网

首页 1 2 3 4 5 6 7

k8s是一个高效的容器编排工具,现在最新版本是k8s1.10。其中,运行mysql数据库也是k8s的一个重要应用场景之一。下面我们来介绍如何在k8s1.10上运行mysql。

首先,我们需要在k8s上创建一个pv(Persistent Volume)和一个pvc(Persistent Volume Claim)。这一步的目的是为了让mysql的数据可以持久化保存,即使docker容器被删除了,数据也不会丢失。以下是创建pv和pvc的yaml文件:

kind: PersistentVolume
apiVersion: v1
metadata:
name: mysql-pv
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
hostPath:
path: /mnt/data/mysql
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: mysql-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi

在这个yaml文件中,我们指定了pv的存储大小为10GB,数据访问模式为ReadWriteOnce(即只能在一个pod中读写数据),以及存储路径为/mnt/data/mysql。同样的,我们也创建了一个pvc,大小和路径与pv保持一致。

接下来,我们需要定义mysql的deployment和service。以下是它们的yaml文件:

apiVersion: apps/v1
kind: Deployment
metadata:
name: mysql
labels:
app: mysql
spec:
replicas: 1
selector:
matchLabels:
app: mysql
template:
metadata:
labels:
app: mysql
spec:
containers:
- name: mysql
image: mysql:5.7
env:
- name: MYSQL_ROOT_PASSWORD
value: password
ports:
- containerPort: 3306
volumeMounts:
- name: mysql-pv
mountPath: /var/lib/mysql
---
apiVersion: v1
kind: Service
metadata:
name: mysql
spec:
selector:
app: mysql
ports:
- port: 3306
targetPort: 3306
protocol: TCP

在这个yaml文件中,我们指定了mysql的deployment和service名称,并且定义了容器镜像、环境变量、端口和持久化挂载路径。我们还为mysql定义了一个service,把容器中的3306端口暴露出来,以便其他应用可以访问。

最后,我们需要使用kubectl命令行工具部署mysql:

kubectl apply -f pv.yaml
kubectl apply -f deployment.yaml
kubectl apply -f service.yaml

当我们部署完成后,可以通过以下命令来检查mysql的状态:

kubectl get deployment,pvc,pv,service

如果mysql的pod状态为Running,且service有一个ClusterIP,那么我们就成功地在k8s1.10上运行了mysql数据库!