kubernetes部署mysql5.7(单节点)

创建mysql的命名空间

kubectl create namespace dev-mysql

在这里插入图片描述

创建四个yuml文件

[root@master mysql]# touch mysql-pv.yaml
[root@master mysql]# touch mysql-pvc.yaml
[root@master mysql]# touch mysql-deployment.yaml
[root@master mysql]# touch mysql-service.yaml

在这里插入图片描述
在这里插入图片描述

mysql-pv.yaml

apiVersion: v1
kind: PersistentVolume
metadata:
  name: mypv1
  namespace: dev-mysql
spec:
  capacity:
    storage: 5Gi
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain   # 手动删除 
  storageClassName: local-storage #表明这个pv所属的storageClass
  local:
    path: /k8sVolume/mysqlVolume/mypv1/home/k8s/mysql/k8sVolume/mysqlVolume/mypv1 #节点上卷的完整路径。(必须是存在的路径,不然容器无法创建,deployment会报错)可以是目录或块设备(磁盘、分区…)。
  nodeAffinity: #节点亲和性配置,限制从哪些节点上可以访问此卷
    required:  
      nodeSelectorTerms: #数组类型
      - matchExpressions: #数组类型
        - key: kubernetes.io/hostname   #字符串类型。被标签选择器应用的label key
          operator: In   #字符串类型。表示键与一组值的关系。有效的操作符有In, NotIn, Exists, DoesNotExist。Gt, Lt。
          values: #一个字符串数组,如果操作符为In或NotIn,则values数组必须非空。如果操作符是Exists或DoesNotExist, values数组必须为空。如果操作符为Gt或Lt,则values数组必须只有一个元素,该元素将被解释为整数。
          - master #所在节点的主机名

mysql-pvc.yaml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mypvclocal
  namespace: dev-mysql
spec:
  accessModes: #访问模式 申领在请求具有特定访问模式的存储时,使用与卷相同的访问模式约定。
    - ReadWriteMany
  volumeMode: Filesystem #卷模式
  resources:
    requests:
      storage: 4Gi
  storageClassName: local-storage # 此处须显式设置空字符串或指定值,否则会被设置为默认的 StorageClass

mysql-deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mysql-deployment #指定deployment的名字
  namespace: dev-mysql
  labels:  
    app: mysql-labels-app 
spec: #规约
  replicas: 3 #pod的副本数量,就是希望创建多少个pod的副本.可选字段。它的默认值是1。
  selector:  #selector 字段定义 Deployment 如何查找要管理的 Pods。必须匹配 .spec.template.metadata.labels,否则请求会被 API 拒绝。
    matchLabels:
      app: mysql-pod
  template: #Deployment Pod 模板;它和 Pod 的语法规则完全相同。 只是这里它是嵌套的,因此不需要 apiVersion 或 kind。
    metadata:
      labels:
        app: mysql-pod
    spec: #pod模板规约
      containers: #容器
      - name: mysql #容器的名称
        image: mysql:5.7 #容器使用的镜像
        ports:
        - containerPort: 3306
        volumeMounts: 
        - name: mypv1 #pv的name
          mountPath: /var/lib/mysql #容器内对应的路径。MySQL的数据都在这个里面,需要持久化的也就是这个路径下的内容
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: "123456"
      volumes:
      - name: mypv1 #pv的name
        persistentVolumeClaim:
          claimName: mypvclocal 
      restartPolicy: Always #Deployment 中的 Pod 模板必须指定适当的标签和适当的重新启动策略。只有 .spec.template.spec.restartPolicy 等于 Always 才是被允许的,这也是在没有指定时的默认设置

mysql-service.yaml

apiVersion: v1
kind: Service
metadata:
  name: mysql-service
  namespace: dev-mysql
spec:
  ports:
  - port: 3306
    nodePort: 30060
  selector:
    app: mysql-pod # 该 Service 会将所有具有标签 app: mysql-labels-app暴露到一个抽象的 Service 端口上(targetPort:容器接收流量的端口;port:可任意取值的抽象的 Service 端口,其他 Pod 通过该端口访问 Service
  type: NodePort

更新/创建在yaml中定义的对象

kubectl apply -f mysql-pv.yaml -n dev-mysql

kubectl apply -f mysql-pvc.yaml -n dev-mysql

kubectl apply -f mysql-deployment.yaml -n dev-mysql

kubectl apply -f mysql-service.yaml -n dev-mysql

初始化pod需要一段时间

kubectl get pods -n dev-mysql  -o wide

在这里插入图片描述

初始化完毕查询一下端口

kubectl get svc -n dev-mysql

在这里插入图片描述

链接一下:

注意一下链接的端口号,不是3306.
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值