以下步骤的前提是已部署好storageclass,可参考https://blog.csdn.net/u011943534/article/details/100887530
1、下载mysql(已经下载好)
docker pull mysql:5.7
docker save -o mysql-5.7.tar mysql:5.7
2、导入镜像
将msyql-5.7.tar拷贝至K8s镜像服务器所在的节点
docker load -i mysql-5.7.tar
docker tag mysql:5.7 172.16.10.160:80/mysql:5.7
docker push 172.16.10.160:80/mysql:5.7
3、使用 kubectl apply -f mysql-server.yaml部署
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: mysql
namespace: default
labels:
app: mysql
version: v1
spec:
serviceName: "mysql"
replicas: 1
selector:
matchLabels:
app: mysql
version: v1
template:
metadata:
labels:
app: mysql
version: v1
spec:
containers:
- name: mysql
image: 172.16.10.160:80/mysql:5.7
env:
- name: MYSQL_ROOT_PASSWORD
value: "root"
ports:
- containerPort: 3306
volumeMounts:
- name: mysql-data
mountPath: /var/lib/mysql
volumeClaimTemplates:
- metadata:
name: mysql-data
annotations:
volume.beta.kubernetes.io/storage-class: course-nfs-storage
spec:
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 5Gi
---
apiVersion: v1
kind: Service
metadata:
name: mysql
namespace: default
labels:
app: mysql
service: mysql
spec:
ports:
- port: 3306
protocol: TCP
targetPort: 3306
name: tcp
clusterIP: None
selector:
app: mysql
---
apiVersion: v1
kind: Service
metadata:
name: mysql2
namespace: default
labels:
app: mysql2
service: mysql2
spec:
ports:
- name: tcp
protocol: TCP
targetPort: 3306
port: 3306
nodePort: 31112
type: NodePort
selector:
app: mysql
4、查看pod
5、外部使用31112端口访问
如果无需外部访问,将31112对应的service删除。
内部使用headless的service访问(ClusterIP:None的)