摘要:本文将带你了解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频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号