Kubernetes实战实现 Guestbook 留言板-简易版详解
1.基础信息系统版本:CentOS Linux release 7.6kubernetes版本:kubernetes1.14.0Docker版本: Docker CE 19.03.5此 Java web项目相对比较简单, 是一个运行在Tomcat里的 Web App, JSP页面通过 JDBC 直接访问 MySQL 数据库并展示数据。只要正确连接到了数据库,就会自动完成对应的 Table 表的创建
·
1.基础信息
系统版本:CentOS Linux release 7.6
kubernetes版本:kubernetes1.14.0
Docker版本: Docker CE 19.03.5
此 Java web项目相对比较简单, 是一个运行在Tomcat里的 Web App, JSP页面通过 JDBC 直接访问 MySQL 数据库并展示数据。只要正确连接到了数据库,就会自动完成对应的 Table 表的创建与初始化数据的准备工作
2.实战部署
1.环境准备
准备一个搭建好的k8s集群
master: 192.168.13.141
node1: 192.168.13.142
node2: 192.168.13.143
2.启动mysql服务
首先为 MySql 服务创建一个 RC 定义文件 mysql_rc.yaml
[root@master ~]# mkdir yaml #创建一个目录来存放我们写的yaml文件
[root@master ~]# cd yaml/
[root@master yaml]# vim 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"
================================================================
apiVersion: v1 #API版本号
kind: ReplicationController #RC类型
metadata:
name: mysql
spec:
replicas: 1
selector: #标签选择器,选择带有app: mysql这个标签的去创建
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" #数据库密码
================================================================
[root@master yaml]# kubectl apply -f mysql_rc.yaml #执行创建
replicationcontroller/mysql created
[root@master yaml]# kubectl get rc #查看是否创建成功
NAME DESIRED CURRENT READY AGE
mysql 1 1 0 20s
[root@master yaml]# kubectl get pod #正在创建镜像
NAME READY STATUS RESTARTS AGE
mysql-ft58r 0/1 ContainerCreating 0 47s
nginx-5f965696dd-w4thr 1/1 Running 1 125m
如果你的网不好,你可以选择手动拉取镜像:
[root@master yaml]# kubectl get pod -o wide #我们发现是在node1节点,所以我们去node1节点手动拉取
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
mysql-ft58r 0/1 ContainerCreating 0 75s <none> node1 <none> <none>
nginx-5f965696dd-w4thr 1/1 Running 1 125m 10.244.2.4 node2 <none> <none>
[root@node1 ~]# docker pull daocloud.io/library/mysql:5.7
拉去成功后再次查看
[root@master yaml]# kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
mysql-ft58r 1/1 Running 0 3m41s 10.244.1.7 node1 <none> <none>
nginx-5f965696dd-w4thr 1/1 Running 1 128m 10.244.2.4 node2 <none> <none>
3.创建service分配地址
[root@master yaml]# vim mysql_svc.yaml
apiVersion: v1
kind: Service
metadata:
name: mysql
spec:
ports:
- port: 3306
selector:
app: mysql
[root@master yaml]# kubectl apply -f mysql_svc.yaml
service/mysql created
[root@master yaml]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.1.0.1 <none> 443/TCP 4h8m
mysql ClusterIP 10.1.24.65 <none> 3306/TCP 17s
nginx NodePort 10.1.232.21 <none> 80:32381/TCP 126m
我么可以看到MySql服务分配了一个值为10.1.24.65的ClusterIP的地址。
4.启动Tomcat应用
[root@master yaml]# vim mytomcat_rc.yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: mytomcat
spec:
replicas: 2
selector:
app: mytomcat
template:
metadata:
labels:
app: mytomcat
spec:
containers:
- name: mytomcat
image: kubeguide/tomcat-app:v1
ports:
- containerPort: 8080
env:
- name: MYSQL_SERVICE_HOST
value: 10.1.24.65
==============================================================
env:
- name: MYSQL_SERVICE_HOST
value: 10.1.24.65 #这个IP是刚刚分配的Cluster地址
==============================================================
[root@master yaml]# kubectl apply -f mytomcat_rc.yaml
replicationcontroller/mytomcat created
[root@master yaml]# kubectl get pods -o wide #查看在哪个节点拉取镜像
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
mysql-ft58r 1/1 Running 0 8m8s 10.244.1.7 node1 <none> <none>
mytomcat-2j67r 0/1 ContainerCreating 0 22s <none> node2 <none> <none>
mytomcat-7nzdc 0/1 ContainerCreating 0 22s <none> node1 <none> <none>
nginx-5f965696dd-w4thr 1/1 Running 1 132m 10.244.2.4 node2 <none> <none>
同样你也可以自己去node节点上拉取镜像,加快tomcat的创建
[root@node1 ~]# docker pull kubeguide/tomcat-app:v1
[root@node2 ~]# docker pull kubeguide/tomcat-app:v1
[root@master yaml]# kubectl get pods -o wide #再次查看
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
mysql-ft58r 1/1 Running 0 11m 10.244.1.7 node1 <none> <none>
mytomcat-2j67r 1/1 Running 0 3m26s 10.244.2.6 node2 <none> <none>
mytomcat-7nzdc 1/1 Running 0 3m26s 10.244.1.8 node1 <none> <none>
nginx-5f965696dd-w4thr 1/1 Running 1 135m 10.244.2.4 node2 <none> <none>
创建对应的 Service
[root@master yaml]# vim mytomcat-svc.yaml
apiVersion: v1
kind: Service
metadata:
name: mytomcat
spec:
type: NodePort
ports:
- port: 8080
nodePort: 30005
selector:
app: mytomcat
[root@master yaml]# kubectl apply -f mytomcat-svc.yaml
service/mytomcat created
[root@master yaml]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.1.0.1 <none> 443/TCP 4h14m
mysql ClusterIP 10.1.24.65 <none> 3306/TCP 7m8s
mytomcat NodePort 10.1.162.140 <none> 8080:30005/TCP 17s
nginx NodePort 10.1.232.21 <none> 80:32381/TCP 133m
访问http://node节点ip:30005 能看到tomcat界面
访问 http://node节点ip:30005/demo/
点击Add 添加提交记录
完成
更多推荐
已为社区贡献5条内容
所有评论(0)