K8s 启动mysql
温馨提示:
本文最后更新于 2025年05月30日,已超过 379 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我。
创建名称空间
kubectl create namespace dev 创建 文件挂载地址
mkdir -p /nfs/data/01 编写mysql-pv.yaml文件
# 定义持久卷信息
apiVersion: v1
kind: PersistentVolume
metadata:
# pv是没有namespace属性的,它是一种跨namespace的共享资源
name: pv-1gi
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteMany
# 存储类,具有相同存储类名称的pv和pvc才能进行绑定
storageClassName: nfs
nfs:
path: /nfs/data/01
server: 123.207.64.127 # 写自己的IP 创建该PV对象
kubectl create -f mysql-pv.yaml 查看创建结果
kubectl describe pv pv-1gi [root@master ~]# kubectl describe pv pv-1gi
Name: pv-1gi
Labels:
Annotations: pv.kubernetes.io/bound-by-controller: yes
Finalizers: [kubernetes.io/pv-protection]
StorageClass: nfs
Status: Bound
Claim: dev/mysql-pvc
Reclaim Policy: Retain
Access Modes: RWX
VolumeMode: Filesystem
Capacity: 1Gi
Node Affinity:
Message:
Source:
Type: NFS (an NFS mount that lasts the lifetime of a pod)
Server: 123.207.64.127
Path: /nfs/data/01
ReadOnly: false
Events: 创建持久券PVC
编写mysql-pvc.yaml文件
# 定义mysql的持久卷声明信息
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mysql-pvc
namespace: dev
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Gi
# 存储类,具有相同存储类名称的pv和pvc才能进行绑定
storageClassName: nfs 创建该PVC对象
kubectl create -f mysql-pvc.yaml 查看创建结果
kubectl get pvc -n dev
kubectl describe pvc mysql-pvc -n dev
如下 ,Status: Bound ,即为 绑定
[root@master ~]# kubectl get pvc -n dev
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
mysql-pvc Bound pv-1gi 1Gi RWX nfs 53m
[root@master ~]# kubectl describe pvc mysql-pvc -n dev
Name: mysql-pvc
Namespace: dev
StorageClass: nfs
Status: Bound
Volume: pv-1gi
Labels:
Annotations: pv.kubernetes.io/bind-completed: yes
pv.kubernetes.io/bound-by-controller: yes
Finalizers: [kubernetes.io/pvc-protection]
Capacity: 1Gi
Access Modes: RWX
VolumeMode: Filesystem
Used By: mysql-7ddc4488d5-b9k6g
mysql-7ddc4488d5-wnxss
Events: 创建Secret对象,保存mysql的root密码
kubectl create secret generic mysql-root-password --from-literal=password=123456 -n dev
查看创建结果
kubectl get secret -n dev
kubectl get secret mysql-root-password -o yaml -n dev 如下
[root@master ~]# kubectl get secret -n dev
NAME TYPE DATA AGE
default-token-qvlzm kubernetes.io/service-account-token 3 71m
mysql-root-password Opaque 1 56m
[root@master ~]# kubectl get secret mysql-root-password -o yaml -n dev
apiVersion: v1
data:
password: TGl1bGlhbjY=
kind: Secret
metadata:
creationTimestamp: "2025-05-29T19:20:31Z"
name: mysql-root-password
namespace: dev
resourceVersion: "188056"
uid: d4ef6541-eed1-41b6-a2ee-78f6e3e7b6a5
type: Opaque 创建deployment和service
编辑mysql-svc.yaml文件 ,,,
需要注意:
volumeMounts:
- name: mysqlvolume
mountPath: /var/lib/mysql
这些参数是 不要的。 # 定义mysql的Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: mysql
name: mysql
namespace: dev
spec:
selector:
matchLabels:
app: mysql
template:
metadata:
labels:
app: mysql
spec:
containers:
- image: mysql:5.7
name: mysql
env:
- name: MYSQL_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: mysql-root-password
key: password
# 如果你不想使用secret对象保存mysql登录密码,可以直接使用下面的方式指定,简单粗暴未尝不可
#value: "123456"
ports:
- containerPort: 3306
volumes:
- name: mysqlvolume
# 使用pvc
persistentVolumeClaim:
claimName: mysql-pvc
---
#定义mysql的Service
apiVersion: v1
kind: Service
metadata:
labels:
app: svc-mysql
name: svc-mysql
namespace: dev
spec:
selector:
app: mysql
type: NodePort
ports:
- port: 3306
protocol: TCP
targetPort: 3306
nodePort: 31234 执行创建deployment和service命令
kubectl create -f mysql-svc.yaml 查看创建结果
如下
[root@master ~]# kubectl get pod,svc -n dev
NAME READY STATUS RESTARTS AGE
pod/mysql-7ddc4488d5-b9k6g 1/1 Running 0 16m
pod/mysql-7ddc4488d5-wnxss 1/1 Running 0 32m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/svc-mysql NodePort 10.10.154.169 3306:31234/TCP 49m 使用数据库工具连接,密码就是123456, 后续 可以去更改;端口 固定 31234
正文到此结束
- 本文标签: Java
- 本文链接: http://119.91.109.247:8443//article/75
- 版权声明: 本文由张亚东原创发布,转载请遵循《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权