概述
基础环境
系统版本:CentOS Linux release 7.6
kubernetes版本:kubernetes1.14.0
Docker版本: Docker CE 19.03.5
此 Java web项目相对比较简单, 是一个运行在Tomcat里的 Web App, 如下图所示, JSP页面通过 JDBC 直接访问 MySQL 数据库Demo并展示数据。只要正确连接到了数据库,就会自动完成对应的 Table 表的创建与初始化数据的准备工作
启动mysql服务
首先为 MySql 服务创建一个 RC 定义文件 mysql-rc.yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: mysql
spec:
replicas: 1
selector:
app: mysql
template:
metadata:
labels:
app: mysql
spec:
containers:
- name: mysql
image: daocloud.io/library/mysql:5.7
ports:
- containerPort: 3306
env:
- name: MYSQL_ROOT_PASSWORD
value: "123456"
创建好 mysql-rc.yaml 文件后,将他发布到 Kubernetes 集群后,我们在 Master 上执行下列命令:
# kubectl apply -f mysql-rc.yaml replicationcontroller "mysql" created
查看创建的 RC:
# kubectl get rc NAME DESIRED CURRENT READY AGE mysql 1 1 1 103m
查看Pod创建情况
# kubectl get pod NAME READY STATUS RESTARTS AGE mysql-lxt5v 1/1 Running 0 104m
创建 Kubernetes Service - MySql 定义文件 (mysql-svc.yaml)
apiVersion: v1
kind: Service
metadata:
name: mysql
spec:
ports:
- port: 3306
selector:
app: mysql
运行 kubectl 命令,创建 Service
kubectl apply -f mysql-svc.yaml serevice "mysql" created
查看刚刚创建的service
kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE mysql ClusterIP 10.1.216.201 <none> 3306/TCP 3h50m
可以看到,MySql 服务分配了一个值为 10.1.216.201 的 Cluster IP的地址。
启动Tomcat应用
# cat myweb-rc.yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: myweb
spec:
replicas: 2
selector:
app: myweb
template:
metadata:
labels:
app: myweb
spec:
containers:
- name: myweb
image: kubeguide/tomcat-app:v1
ports:
- containerPort: 8080
env:
- name: MYSQL_SERVICE_HOST
value: 10.1.216.201
注意: 创建的 myweb-rc.yaml 应注意 MYSQL_SERVICE_HOST 的配置。
# kubectl apply -f myweb-rc.yaml replicationcontroller "myweb" created # kubectl get pods NAME READY STATUS RESTARTS AGE mysql-lxt5v 1/1 Running 0 111m myweb-hs6nw 1/1 Running 0 3h51m
创建对应的 Service
# cat myweb-svc.yaml
apiVersion: v1
kind: Service
metadata:
name: myweb
spec:
type: NodePort
ports:
- port: 8080
nodePort: 30005
selector:
app: myweb
# kubectl apply -f myweb-svc.yaml servcice "myweb" created # kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE mysql ClusterIP 10.1.216.201 <none> 3306/TCP 3h55m myweb NodePort 10.1.153.70 <none> 8080:30005/TCP 3h53m
访问 http://虚拟机ip:30005/demo/
最后
以上就是神勇蜜粉为你收集整理的部署第一个k8s容器化应用的全部内容,希望文章能够帮你解决部署第一个k8s容器化应用所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复