k8s mysql重启,k8s系列文章5: k8s运行第一个应用

本示例应用是一个java web的应用,结构比较简单,是一个运行在Tomcat里的Web app。为了演示简单,只要程序正确连接了数据库,就会自动完成对应的Table创建和初始化数据库的工作。在浏览器中访问此应用,就会显示一个表格的页面。

此应用需要启动两个容器:web App容器和Mysql容器,并且Web App容器需要访问Mysql容器。

1. 环境准备

2. 启动Mysql服务

首先,为Mysql服务创建一个RC定义文件mysql-rc.yaml:

apiVersion: v1

kind: ReplicationController #该文件是一个副本控制器

metadata:

name: mysql #副本的名称,全局唯一

spec:

replicas: 1 #pod副本的期望数量

selector:

app: mysql #符合目标的pod拥有此标签

template: #根据此模版创建pod副本

metadata:

labels:

app: mysql #pod副本拥有的标签,对应RC的Selector

spec:

containers: #pod内容器的定义部分

- name: mysql

image: mysql:5.7 #此处书上《kubernetes权威指南》没有5.7,若不指定版本,将报错。

ports:

- containerPort: 3306

env:

- name: MYSQL_ROOT_PASSWORD

value: "123456"

这里需要注意一点,spec.template.metadata.labels必须匹配之前的spec.selector.否则RC会一直创建无法匹配的pod,陷入恶性循环,直到将节点撑爆。

创建好RC后,将其发布到集群中,在Master节点执行命令:

kubectl create -f mysql-rc.yaml # replicationcontroller "mysql" created

查看刚刚创建的RC:

kubectl get rc

4b3d5f551020

WechatIMG12.png

运行下面的命令查看pod的创建情况:

kubectl get pods

通过docker ps在Node上查看,会发现已经有了docker容器在运行。

最后,创建一个与之关联k8s Service--Mysql的定义文件(文件名为mysql-svc.yaml),完整定义内容如下:

apiVersion: v1

kind: Service #表明这是k8s Service

metadata:

name: mysql #Service的全局唯一名称

spec:

ports:

- port: 3306

selector:

app: mysql

运行命令,创建service:

kubectl create -f mysql-svc.yaml

运行命令查看刚刚创建的Service:

kubectl get svc

4b3d5f551020

svc.png

可以发现,mysql已经被分配了一个集群地址10.103.225.236。在集群中的其他pod就能直接通过这个地址访问mysql服务。

3. 启动Tomcat应用

和创建mysql服务rc类似,启动tomcat,首先创建tomcat的RC文件:

apiVersion: v1

kind: ReplicationController

metadata:

name: myweb

spec:

replicas: 2

selector:

app: myweb

template:

metadata:

labels:

app: myweb

spec:

containers:

- name: myweb

images: kubeguide/tomcat-app:v1

ports:

- containerPort: 8090

env:

- name: MYSQL_SERVICE_HOST

value: 10.103.225.236

创建tomcat对应的Service文件,以下是完整的yaml定义文件:

apiVersion: v1

kind: Service

metadata:

name: myweb

spec:

type: NodePort

ports:

-port: 8080

nodePort: 30001

selector:

app: myweb

创建service:

kubectl create -f myweb-svc.yaml

至此,第一个应用就部署到k8s中了。通过浏览器可以直接访问。通过集群的Master节点+ip/demo访问即可。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值