大家好,又来给大家分享Java的学习文章了,今天分享的是使用k8s部署MySQL并支持远程访问。
今天的代码封装使用的是Go,不过这个并不影响大家学Java,因为思想是相通的。
项目代码可以从我的Github获取,地址是:https://github.com/zhangdapeng520/zdpgo_k8s
昨天的文章中,已经和大家分享了使用yaml部署的基本操作,今天这篇文章,带大家具体实战一下。
在真实的开发中,MySQL一般建议是单独部署的,作者个人的开发生涯中,之前用的最多的是PostgreSQL,当时采用的是Docker容器化部署,并没有遇到特别棘手的问题。将MySQL使用K8S进行容器化部署,个人还没有深入调研过。不过既然已经进入了云原生时代,像阿里这样的企业已经实现了全容器化部署,那么,使用K8S管理MySQL,应该也是一种趋势。
另一个方面,即使大家不会真的在工作中使用k8s部署MySQL,也可以将这篇文章作为一个k8s的练习。
废话不多说,进入今天的正题。
在k8s中,我们要部署一个服务,最关键的就是要创建RC和Service。RC叫做副本控制器,是用来创建Pod的,Service是服务,是用来在k8s集群中,和其他服务相互通信的。
在k8s中,要使得外部能够访问集群中的服务,最关键的就是要将Service的Type改为NodePort,表示要对外暴露端口。
以上两点非常的关键,是大家能否彻底掌握今天这个实践案例的关键。
今天这个案例,我们采用yaml配置文件的方式来部署MySQL。
首先,创建mysql-rc.yaml
apiVersion: v1
kind: ReplicationController # 副本控制器RC
metadata:
name: mysql # RC的名称,全局唯一
spec:
type: NodePort # 指定可以通过外网访问
replicas: 1 # Pod副本的期待数量
selector:
app: mysql # 符合目标的Pod拥有此标签
template: # 根据此模板创建Pod的副本,也就是实例
metadata:
labels:
app: mysql # Pod副本拥有的标签,对应RC的selector
spec:
containers: # Pod内容器的定义部分
name: mysql
image: mysql
ports:
containerPort: 3306 # 容器监听的端口号
env:
name: MYSQL_ROOT_PASSWORD
value: "root" # 自定义MySQL的root用户密码
我们使用以下命令创建一个RC:
kubectl create -f mysql-rc.yaml
然后,我们创建mysql-svc.yaml
apiVersion: v1
kind: Service # 表名是Kubernetes Service
metadata:
name: mysql # Service的全局唯一名称
spec:
ports:
port: 3306 # Service提供服务的端口号
selector:
app: mysql # Service对应的Pod拥有这里定义的标签
我们实现以下命令来创建一个Service:
kubectl create -f mysql-svc.yaml
然后,我们可以使用以下命令来查看创建结果:
kubectl get svc
以上就是一个实践案例,是不是特别简单?比起Docker部署来说,实际上稍微复杂了一点,但是k8s的优势是可以轻松创建集群,轻松扩容和收缩,自动部署和运维,这些都是Docker不具备的。
为了方便大家使用,当然我自己也经常用,所以封装了一个k8s的库,是用Go语言开发的,支持一键部署。
比如,我们要创建一个支持远程访问的MySQL服务,使用以下代码:
package main
import (
"github.com/zhangdapeng520/zdpgo_k8s"
"github.com/zhangdapeng520/zdpgo_log"
"github.com/zhangdapeng520/zdpgo_ssh"
)
/*
@Time : 2022/6/26 14:43
@Author : 张大鹏
@File : main
@Software: Goland2021.3.1
@Description: 部署Redis实例
*/
func main() {
// 创建k8s对象
k := zdpgo_k8s.NewWithConfig(&zdpgo_k8s.Config{Ssh: &zdpgo_ssh.Config{
Host: "192.168.33.10",
Port: 22,
Username: "zhangdapeng",
Password: "zhangdapeng",
}}, zdpgo_log.Tmp)
// 创建MySQL RC
k.CreateMysqlRc()
// 创建MySQL SVC
k.CreateMysqlSvc()
}
然后使用IDEA连接测试:
怎么样,是不是特别简单?
这个代码是开源的,大家可以从以下地址获取:
https://github.com/zhangdapeng520/zdpgo_k8s
最后打一个小广告哈,是关于游戏的,不喜欢玩游戏的可以不用继续往下看了哈,如果你稍微喜欢玩游戏,则强烈推荐你下载看看,这个App真的不错,我自己用了五六年了,非常好用,里面经常会更新一些送Vip送红包送元宝的福利游戏。
为啥推荐呢?
都有什么游戏呢?
下载地址:https://www.tsyule.cn/index.php/index/index/appid/7/tgid/ca0000500
通过这个地址下载一个手机App,苹果手机和安卓手机都可以下载哈。下载以后安装,然后注册一个账号登录就行了。里面有几千款游戏,特别是那种BT游戏,特别多。BT游戏就是只要你玩游戏,就会自动送你VIP,送你元宝,送你钻石的那种。打怪掉宝的几率也特别高,喜欢玩游戏的可以自行下载体会哈。
文章评论