参考: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:
selector:
matchLabels:
name: mysql-pod
template:
metadata:
labels:
name: mysql-pod
spec:
containers:
- name: mysql
image: mysql:8.0.
imagePullPolicy: IfNotPresent
env:
- name: MYSQL_ROOT_PASSWORD
value: noc-mysql
ports:
- containerPort:
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:
protocol: TCP
targetPort:
name: http
nodePort:
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。

kubernetes集群部署mysql 8.0的更多相关文章

  1. [Istio]Kubernetes集群部署Istio 1.0

    大部分内容都是可以根据https://istio.io/docs/setup/kubernetes/quick-start/来处理的,这里主要谈部署时一些细节的问题 首先,当我们按照 istio 官方 ...

  2. 基于Kubernetes集群部署skyDNS服务

    目录贴:Kubernetes学习系列 在之前几篇文章的基础,(Centos7部署Kubernetes集群.基于kubernetes集群部署DashBoard.为Kubernetes集群部署本地镜像仓库 ...

  3. kubernetes集群部署

    鉴于Docker如此火爆,Google推出kubernetes管理docker集群,不少人估计会进行尝试.kubernetes得到了很多大公司的支持,kubernetes集群部署工具也集成了gce,c ...

  4. Kubernetes集群部署关键知识总结

    Kubernetes集群部署需要安装的组件东西很多,过程复杂,对服务器环境要求很苛刻,最好是能连外网的环境下安装,有些组件还需要连google服务器下载,这一点一般很难满足,因此最好是能提前下载好准备 ...

  5. Kubernetes 集群部署(2) -- Etcd 集群

    Kubenetes 集群部署规划: 192.168.137.81  Master 192.168.137.82  Node 192.168.137.83  Node 以下在 Master 节点操作. ...

  6. 服网LNMP集群 w/ MySQL PaaS-1.0

    平台: arm 类型: ARM 模板 软件包: haproxy linux mysql nginx application server arm basic software fuwang infra ...

  7. Gitlab CI 集成 Kubernetes 集群部署 Spring Boot 项目

    在上一篇博客中,我们成功将 Gitlab CI 部署到了 Docker 中去,成功创建了 Gitlab CI Pipline 来执行 CI/CD 任务.那么这篇文章我们更进一步,将它集成到 K8s 集 ...

  8. Docker学习-Kubernetes - 集群部署

    Docker学习 Docker学习-VMware Workstation 本地多台虚拟机互通,主机网络互通搭建 Docker学习-Docker搭建Consul集群 Docker学习-简单的私有Dock ...

  9. kubernetes 集群部署

    kubernetes 集群部署 环境JiaoJiao_Centos7-1(152.112) 192.168.152.112JiaoJiao_Centos7-2(152.113) 192.168.152 ...

随机推荐

  1. Ingress 暴露tcp端口

    有一部分应用 需要暴露tcp端口,查看官方文档 https://github.com/kubernetes/ingress-nginx/blob/master/docs/user-guide/expo ...

  2. c++——对象的构造和析构函数、构造函数的分类及调用

    1构造函数和析构函数的概念 有关构造函数 1构造函数定义及调用 1)C++中的类可以定义与类名相同的特殊成员函数,这种与类名相同的成员函数叫做构造函数: 2)构造函数在定义时可以有参数: 3)没有任何 ...

  3. smtp发送html报告与日志附件图片png

    1.非ssl发送: 授权码机制,开启smtp,获取授权码以qq邮箱为例: 附件展示: #!/usr/bin/python3 import os import smtplib from email.mi ...

  4. 使用Android的OpenGL编写视频播放器

    Android自身有MediaPlayer播放器,为什么还要使用OpenGL?因为使用OpenGL可以实现更多的效果,比如对视频翻转一定角度,加任意特效,多视频合并播放等,类似“激萌”的APP应该就是 ...

  5. 关于CodePlex

    CodePlex是微软的开源工程网站,涉及诸多微软最新技术的开源工程. 网址:http://www.codeplex.com/ 应常去看看.

  6. Angular动态表单生成(四)

    ng-dynamic-forms实践篇(下) 我们接着上篇,先把小目标中的所有字段都定义出来 这部分就是苦力活儿了,把KendoUiComponent中的formModel完善即可: formMode ...

  7. java 工作流项目源码 SSM 框架 Activiti-master springmvc 有手机端功能

    即时通讯:支持好友,群组,发图片.文件,消息声音提醒,离线消息,保留聊天记录 (即时聊天功能支持手机端,详情下面有截图) 工作流模块---------------------------------- ...

  8. MySQL数据库初始

    MySQL数据库 本节目录 一 数据库概述 二 MySQL介绍 三 MySQL的下载安装.简单应用及目录介绍 四 root用户密码设置及忘记密码的解决方案 五 修改字符集编码 六 初识sql语句 一 ...

  9. redis未授权访问批量验证脚本编写[python]

    漏洞简介 简单来说,redis是一个数据库.在默认的配置下,redis绑定在0.0.0.0:6379,也就是说,如果服务器有公网ip,可以通过访问其公网ip的6379端口来操作redis.最为致命的是 ...

  10. springMVC第一天——入门、整合与参数绑定

    大纲摘要: 1.Springmvc介绍 2.入门程序 3.Springmvc架构讲解 a) 框架结构 b) 组件说明 4.Springmvc整合mybatis 5.参数绑定 乱码问题解决 a) Spr ...