K8S实战:如何快速在kubernetes集群上部署Mysql?
本文简单记录了本人第一次尝试在k8s集群上部署Mysql项目的过程。相信大家应该都在自己的电脑中使用过mysql,而kubernetes是一个可自动部署、扩缩、管理容器化应用的工具,今天我们就来尝试一下在k8s集群中部署mysql数据库。在kubernetes中部署mysql集群之前,应当有如下准备:已部署完成kubernetes集群中有mysql容器镜像在已经搭建好的k8s集群上部署...
本文简单记录了本人第一次尝试在k8s集群上部署Mysql项目的过程。相信大家应该都在自己的电脑中使用过mysql,而kubernetes是一个可自动部署、扩缩、管理容器化应用的工具,今天我们就来尝试一下在k8s集群中部署mysql数据库。
在kubernetes中部署mysql集群之前,应当有如下准备:
- 已部署完成kubernetes
- 集群中有mysql容器镜像
在已经搭建好的k8s集群上部署mysql服务主要步骤如下:
-
创建一个新的namespace
-
在该namespace下创建一个deployment
-
创建对应Service
-
验证效果
具体操作步骤如下:
1、创建一个新的namespace
我们可以通过命令行直接进行创建。
# kubectl create namespace try
2、在该namespace下创建一个deployment
作者使用yaml文件创建deployment与Service对象。值得一提的是yaml文件中的内容是声明式的,这些声明让kubernetes做你想要它做的事情。声明与命令有所不同,声明是告诉它你的需要是什么,而不涉及具体的实现的步骤。
首先我们要编写deployment的对应yaml文件。
(注意其中的空格一定要严格对齐,并且不能使用Tab键进行缩进操作)
# vim mysql-deployment.yaml
apiVersion: apps/v1 // 描述RC对象的版本是v1
kind: Deployment // 声明Deployment对象
metadata: // metadata中的是对此对象的描述信息
name: mysql-deployment
namespace: try
spec: // spec中是对资源对象的具体描述
replicas: 1 // 创建1个副本
selector: // 选择器,用来选择对象的
matchLabels:
app: mysql
template: // 以下用来描述创建的pod的模版
metadata:
labels: // 给以下打上标签,以供selector来选择
app: mysql
spec: // 对pod模版的具体描述
containers: // 放入pod模版中的容器
- name: mysql
image: mysql:5.6
imagePullPolicy: IfNotPresent
args:
- "--ignore-db-dir=lost+found"
ports:
- containerPort: 3306
env: // 给该容器设置环境变量
- name: MYSQL_ROOT_PASSWORD // env中设置了mysql的root用户的密码为1234
value: "1234"
之后直接创建deployment即可。
# kubectl create -f mysql-deployment.yaml --record
理论上,deployment已经自动为我们部署好了replicaSet和pod。我们执行以下命令可以查看try namespace 下自动部署的replicaSet和pod。
# kubectl get rs -n test
# kubectl get pod -n test
3、创建对应服务
我们还需要一个Service对象来作为入口地址来对创建好的tomcat进行访问,所以,接下来我们的任务就是创建Service对象。
我们需要创建对应的service的yaml文件:mysql-svc.yaml
。其中的重点在于三个端口的区别,容器有端口,Service有端口,node也有真实的端口号。因此需要注意定义type=NodePort,并有对应的nodeport端口号,以便集群外访问该服务。
详细yaml文件如下。
apiVersion: v1
kind: Service
metadata:
name: mysql-svc
namespace: try
labels:
name: mysql-svc
spec:
type: NodePort
ports:
- port: 3306
protocol: TCP
targetPort: 3306
name: http
nodePort: 33306
selector:
app: mysql
之后我们通过命令行就可以创建对应的service了。
# kubectl create -f mysql-svc.yaml --record
4、远程登录验证
我们使用mysql远程工具navicat来验证k8s集群上是否已经正常跑着我们的项目。
其中,以本次项目为例,我们需要输入以下信息。
-
主机:192.168.1.107(service对应的pod所在的node的ip)
-
端口:33306(上面service中的nodeport端口号)
-
密码:1234(deployment文件env中设置的root用户的密码)
如果成功登录,代表该项目已经正常部署并运行。
事实上,我们也可以通过以下代码来查看目前集群的服务情况。
# kubectl get svc
更多推荐
所有评论(0)