基础环境
系统版本:CentOS Linux release 7.6 kubernetes版本:kubernetes1.14.0 Docker版本:
Docker CE 19.03.5 此 Java web项目相对比较简单, 是一个运行在Tomcat里的 Web App, 如下图所示,
JSP页面通过 JDBC 直接访问 MySQL 数据库并展示数据。只要正确连接到了数据库,就会自动完成对应的 Table
表的创建与初始化数据的准备工作
首先为 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的地址。
# 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/