1.pv学习mysql-pv.yaml
apiVersion: v1
kind: PersistentVolume #申明资源是pv
metadata:
name: pv-mysql-datadir #pv名称
labels:
pv: mysql-datadir #pv标签,pvc关联的名称
spec:
capacity:
storage: 20Gi #存储大小
accessModes:
- ReadWriteMany #目录权限,可以以读写的方式被多个node挂载
persistentVolumeReclaimPolicy: Retain #pv回收策略,Retain保留,delete删除
hostPath:
path: /data/aibox-common/mysql/datadir #挂载的宿主机目录,或者是nfs的目录
--- #分隔符,可以在此下边写另一个pv,一个yaml文件,多个pv
2.pvc学习mysql-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-mysql-datadir #申明资源是pvc
spec:
accessModes:
- ReadWriteMany #pvc权限,可以以读写的方式被多个pod挂载
resources:
requests:
storage: 20Gi #存储大小
selector:
matchLabels:
pv: mysql-datadir #pvc关联pv的标签
--- #分隔符,可以在此下边写另一个pvc,一个yaml文件,多个pvc
3.configMap学习
#创建一个名为mysql-conf的configmap对象,以文件方式创建
kubectl create cm mysql-conf --from-file=/data/aibox-common/mysql/config/my.cnf
#以目录方式创建
kubectl create cm cm-config --from-file=/data/aibox-common/cm-server/config
4.svc和deployment控制器学习mysql-deployment.yaml
apiVersion: v1
kind: Service #申明资源是svc
metadata:
name: mysql-svc #svc名称
labels:
app: mysql #svc标签
spec:
type: NodePort #配置为NodePort,外部可以访问
ports:
- port: 23306 #容器间,服务调用的端口
targetPort: 23306 #容器暴露的端口,与Dockerfile暴露端口保持一致
nodePort: 23306 #NodePort,外部访问的端口,宿主机开启的端口
selector:
app: mysql #标签选择器
---
apiVersion: apps
kind: Deployment #申明资源是deployment
metadata:
name: mysql-d #控制器的名称,deployment此名称加随机数字,statefulset是此名称加从0开始顺序数字
spec:
replicas: 1 #复制副本1
selector:
matchLabels:
app: mysql #筛选的选择器,如寻找mysql的pvc
template:
metadata:
labels:
app: mysql #标签选择器,给pod定义的标签
spec:
nodeName: k8s-master01 #申明node主机名hostname
containers: #容器信息
- name: mysql #容器名称
image: 172.16.4.17:8090/public/mysql:5.7.29 #容器镜像
imagePullPolicy: IfNotPresent #Always总是拉取镜像 ifNotPresent本地有则使用本地镜像,不拉取 Never 只使用本地镜像,从不拉取,即使本地没有
ports:
- containerPort: 23306 #容器端口
name: myport
env: #环境变量
- name: MYSQL_ROOT_PASSWORD #mysql密码
value: "ytx@1234"
resources:
requests:
memory: 3Gi #运行pod具备的条件,软限制
limits:
memory: 6Gi #最多可以使用多少资源,硬限制
volumeMounts:
- name: my
mountPath: /var/lib/mysql #容器目录
- name: localtime
mountPath: /etc/localtime #容器目录
readOnly: true #只读权限
- name: config-volume
mountPath: /etc/mysql/my.cnf #容器目录
subPath: my.cnf #不加的话,覆盖/etc/mysql整个目录,加上的话只覆盖对应的文件
volumes:
- name: my
persistentVolumeClaim:
claimName: pvc-mysql-datadir #挂在到pvc名称
- name: localtime
hostPath:
path: /etc/localtime #将宿主机的/etc/localtime映射到pod
type: ""
- name: config-volume
configMap:
name: mysql-conf #configMap名称
restartPolicy: Always #pod启动策略,总是重启
---
5.上边就是全部内容,可以根据实际情况修改对应的值,然后就是按照顺序启动就可以了,启动yaml文件命令,kubectl apply -f *.yaml