WEBAPP开发之从一个例子开始认识Kubernetes
白羽 2019-01-08 来源 :网络 阅读 675 评论 0

摘要:本文将带你了解WEBAPP开发从一个例子开始认识Kubernetes,希望本文对大家学WEBAPP有所帮助。

    本文将带你了解WEBAPP开发从一个例子开始认识Kubernetes,希望本文对大家学WEBAPP有所帮助。


               

 

  对于绝大多数刚刚接触Kubernetes的人来说,很难顺利的上手和实践。所以我们从一个例子开始初步的对Kubernetes有一个了解:JSP页面通过JDBC直接访问MySQL数据库并展示数据。

   这个例子中我们需要启动连个容器:WebApp容器和MySQL容器。

  废话不多说,我们现在开始。。。

第一步:环境准备

  这一步我们就不在这里赘述了,网上教程一搜一大把。。。

  关闭防火墙、swap、SELinux,安装Docker、etcd和Kubernetes组件等等。。。

  下载MySQL和Tomcat镜像:

1 ]# docker pull mysql:5.52 ]# docker pull   kubeguide/tomcat-app:v1

  也可以参考我之前的文章:《Kubernetes的基本术语和概念》

第二步:启动MySQL服务

  首先我们要为MySQL服务创建一个RC定义文件:mysql-rc.yaml,代码内容如下:

1 apiVersion: v1 2 kind: ReplicationController        ##   副本控制器RC 3 metadata: 4     name: mysql      ##   RC的名称,全局唯一 5 spec:   6   replicas: 1      ## Pod副本期待数量 7     selector:   8     app: mysql       ##   符合目标的Pod拥有此标签 9   template:      ##   根据此模板创建Pod实例10       metadata:11         labels:12           app: mysql      ##   副本Pod拥有的标签对应RC的selector13       spec:14         containers:          ##   Pod内容器定义部分15       - name:   mysql           ##   容器的名称16         image:   mysql:5.5       ## 容器的镜像17           ports:18         -   containerPort: 3306    ##   容器暴露的端口号19         env:                 ##   注入容器的环境变量20         - name:   MYSQL_ROOT_PASSWORD21             value:   "123456"

   创建好mysql-rc.yaml文件后,将它发布到Kubernetes集群中。

1 ]# kubectl create -f   mysql-rc.yaml

  接下来查看下创建的RC以及Pod的情况:

1 ]# kubectl get rc2 NAME        DESIRED   CURRENT   READY       AGE3   mysql     1           1         1         1h4 ]# kubectl get po5 NAME                      READY     STATUS      RESTARTS     AGE6 mysql-px9th               1/1       Running   0            1h

  上述创建没有问题后,我们再创建一个与之关联的mysql的service文件:mysql-svc.yaml。代码内容如下:

1 apiVersion: v12 kind: Service      ## 声明是Kubernetes的service文件3 metadata:4     name: mysql    ##   service的全局唯一名称5 spec:6     ports:7     - port: 3306  ## 服务暴露的端口号8     selector:       ##   service对应的Pod标签名称9       app:   mysql

  运行kubectl命令创建service:

1 ]# kubectl create -f   mysql-scv.yaml

  查看创建的service:

]#   kubectl get svcNAME         TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGEmysql        ClusterIP   10.107.188.209   <none>        3306/TCP         1h
注:CLUSTER-IP是在service创建时由Kubernetes自动创建的。
  是一个虚地址,随后Kubernetes集群中其他新创建的Pod就可以通过Service的ClusterIP+端口号6379来连接和访问它。
  根据Service的唯一名字,容器可以从环境变量中获取到Service对应的ClusterIP地址和端口,从而发起TCP/IP连接请求了。

第三步:启动Tomcat应用

  创建Tomcat的rc文件:tomcat-rc.yaml,代码内容如下:

1 apiVersion: v1 2 kind: ReplicationController 3 metadata: 4     name: myweb   5 spec: 6   replicas: 1     #   spec.selector与spec.template.metadata.labels,这两个字段必须相同,否则下一步创建RC会失败。 7     selector:   8     app: myweb 9     template:10       metadata:11       labels:12           app: myweb13     spec:    14         containers:15         - name:   myweb    16             image: kubeguide/tomcat-app:v1     17           ports:         18             - containerPort: 808019           env:       20           - name:   MYSQL_SERVICE_HOST21             value:   ‘mysql‘22           - name:   MYSQL_SERVICE_PORT23               value: ‘3306‘

  创建RC:

1 ]# kubectl create -f   myweb-rc.yaml

  查看Tomcat   RC是否创建成功:

1 ]# kubectl get rc2 NAME        DESIRED   CURRENT   READY       AGE3 mysql     1         1         1         1h4 myweb       2         2         2         1h5 ]# kubectl get po  6 NAME                        READY     STATUS    RESTARTS     AGE7 mysql-px9th                 1/1       Running   0            1h8 myweb-fxq9s               1/1       Running   0            1h9 myweb-tt5sd               1/1       Running   0            1h

  创建Tomcat的service文件tomcat-svc.yaml,内容如下:

1 apiVersion: v1 2 kind: Service 3 metadata:    4     name: myweb 5 spec: 6     type: NodePort 7     ports:   8     - port: 8080 9         nodePort: 3000110     selector:11       app: myweb

注: type: NodePort和nodePort: 30001   这两个属性,表明service开启了外网访问模式。

   创建并查看创建的service状态:

1 ]# kubectl create -f tomcat-svc.yaml2 ]# kubectl get svc3 NAME         TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE4 mysql        ClusterIP   10.107.188.209   <none>        3306/TCP         1h5 myweb        NodePort    10.109.40.205    <none>          8080:30001/TCP     1h

第四步:通过浏览器访问页面

  在浏览器打开,地址   //虚拟机IP:30001/demo/ 

  点击页面上的add增加一条数据,刷新页面,数据成功入库,到这里我们这个应用服务就完成了!

从一个例子开始认识Kubernetes



                 

                 

                

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之WebApp频道!

本文由 @白羽 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程