参考: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. golang-gorm框架支持mysql json类型

    gorm框架目前不支持Json类型的数据结构 http://gorm.book.jasperxu.com/callbacks.html 如在Mysql中定义了如下的表结构 CREATE TABLE ` ...

  2. golang xorm应用

    github.com/go-xorm/xorm  xorm库 http://www.xorm.io/docs/ 手册 xorm是一个简单而强大的Go语言ORM库. 通过它可以使数据库操作非常简便.xo ...

  3. linux-top命令查看内存CPU

    转自:https://www.cnblogs.com/dragonsuc/p/5512797.html 查看多核CPU命令 mpstat -P ALL  和  sar -P ALL 说明:sar -P ...

  4. composer设置国内镜像

    使用composer时,输入命令执行后半天没有反应,并最后是失败的消息. 如下载项目中的框架文件时: composer install 一直没有反应 [注]添加参数-vvv可尽可能多的输出执行信息,帮 ...

  5. ping不通linux服务器排查

    很久没启动linux了,今天打开试了下 ssh  root@192.168.229.128 ping 一直超时 老规矩挨着来排查 检查网络设备器改为Net 模式 重启网络服务 service netw ...

  6. Kafka设计解析(六)Kafka高性能架构之道

    转载自 技术世界,原文链接 Kafka设计解析(六)- Kafka高性能架构之道 本文从宏观架构层面和微观实现层面分析了Kafka如何实现高性能.包含Kafka如何利用Partition实现并行处理和 ...

  7. 【NodeJs】Nodejs系列安装

    nodejs安装—npm安装—(其他基于这俩项的另写) windows环境 1)nodejs安装 ①下载对应系统版本的Node.js:https://nodejs.org/en/download/ e ...

  8. elasticserach 索引删除 源码分析

    索引的构成 在看IndicesService服务中移除索引的前提,先了解一个Index类的构成,也就是索引的一些基本信息,代码贴图如下:   主要的信息就两个:一个是name,表示索引名称,一个是uu ...

  9. Delphi按名字调用方法高级解决方案

    转帖于https://lfzhs.iteye.com/blog/980200 按名字调用方法似乎一直以来都是大家比较关注的技术,在论坛上有一个经典的答复: type TProcedure = proc ...

  10. JavaWeb基础—监听器Listener

    javaWeb三大组件: servlet listener(用的不多) filter 什么叫监听器: 初次相见:AWT 二次相见:SAX(XML解析时)Bundle 绑定 监听器是一个接口,内容由我们 ...