zoukankan      html  css  js  c++  java
  • kubernetes集群部署mysql 8.0

    参考:https://blog.csdn.net/sealir/article/details/81177747?utm_source=blogxgwz1

    集群内安装mysql并添加相应存储(PVC)

     新建mysql-pvc.yaml、mysql-deploy.yaml和mysql-svc.yaml,分别如下:

     先找出当前k8s集群下的storageClass的name,用来创建PVC!!

         kubectl get storageclasses --all-namespaces

        mysql-pvc.yaml

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: mysql-pvc
      namespace: kube-system
      labels:
        app: mysql-pvc
    spec:
      accessModes:
      - ReadWriteMany
      resources:
        requests:
          storage: 2Gi
      storageClassName: default
    storageClassName: default 中的default即为查找出来的storageClass

        mysql-deploy.yaml:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: mysql-deploy
      namespace: kube-system
    spec:
      replicas: 1
      selector:
        matchLabels:
          name: mysql-pod
      template:
        metadata:
          labels: 
            name: mysql-pod
        spec:
          containers:
            - name: mysql
              image: mysql:8.0.12
              imagePullPolicy: IfNotPresent
              env:
              - name: MYSQL_ROOT_PASSWORD
                value: noc-mysql
              ports:
                - containerPort: 3306
              volumeMounts:
                - name: mysql-persistent-storage
                  mountPath: "/var/lib/mysql"
          volumes:
            - name: mysql-persistent-storage
              persistentVolumeClaim:
                claimName: mysql-pvc

        mysql-svc.yaml

    apiVersion: v1
    kind: Service
    metadata:
      name: mysql-svc
      namespace: kube-system
      labels: 
        name: mysql-svc
    spec:
      type: NodePort
      ports:
      - port: 3306
        protocol: TCP
        targetPort: 3306
        name: http
        nodePort: 32306
      selector:
        name: mysql-pod

    在mysql-deploy.yaml中,image参数可以指定mysql的版本,如8.0.11、5.7.22等。若省略了,表示用latest。另外,可以指定镜像库,这里使用阿里云镜像库,在安装docker时进行了配置。env参数指定了mysql的root密码。

    在mysql-svc.yaml中,targetPort表示mysql pod中mysql窗口的目标端口,默认为3306,type类型为NodePort,表示将映射到本地端口,本地端口为nodePort: 32306。

    接下来启动PVC、Deployment和Service,执行以下命令:

         kubectl create -f mysql-pvc.yaml
         kubectl create -f mysql-deploy.yaml
         kubectl create -f mysql-svc.yaml

    启动后可以查看mysql部署在了哪个node上,执行以下命令可以查看:

         kubectl get pod -o wide

    输出如下,可以看到部署在了192.168.56.28 node中,这里在部署kubernetes时用ip表示node的名称。

    远程连接mysql8.0时可能会报一些错误,如navicat连接。

    注:出现这个原因是mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password, 解决问题方法有两种,一种是升级navicat驱动,一种是把mysql用户登录密码加密规则还原成mysql_native_password】

    这里对mysql8.0作一些设置。

        (1)、登录到192.168.56.28node中。 

        (2)、执行docker ps查看mysql容器。如下所示:

       (3)、进入mysql容器,执行以下命令进入容器,这里container_id为458bb493e233

      docker exec -it container_id /bin/bash

       (4)、在容器内登录mysql。执行以下命令,-h为ip,容器内ip为127.0.0.1,-u为用户名,-p为密码,在mysql-rc中设置的密码。

           mysql -h 127.0.0.1 -uroot -pmysql

       (5)、对mysql进行如下设置。

          alter user 'root'@'%' identified with mysql_native_password by'root';
          alter  user 'root'@'%' identified by 'mysql';

       (6)、退出mysql和容器,执行quit退出mysql,按ctrl+p后,再按ctrl+q从容器中返回node主机。

        设置好mysql后,可以远程连接node中的mysql,node的ip为192.168.56.28,映射的端口为32306,可以用navicat工具连接到这个myql。

  • 相关阅读:
    配置eclipse链接hadoop
    hdfs命令总结
    hadoop环境搭建之分布式的建立6
    win10任务视图的时间线历史记录无法删除
    Flask——server.py引入其他python文件
    《架构即未来》阅读笔记3
    msi文件无文件关联,右键打开方式找不到Windows® 安装程序
    bat文件无文件关联,双击无法启动,但可拖进dos窗口运行
    软件无法安装,每次打开安装包都是显示释放安装文件,然后就无反应了
    开始菜单右键打不开,win+x键无反应
  • 原文地址:https://www.cnblogs.com/guyeshanrenshiwoshifu/p/9843499.html
Copyright © 2011-2022 走看看