Kubernetes实战实现Guestbook留言板-简易版(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
表的创建与初始化数据的准备工作
Kubernetes实战实现Guestbook留言板-简易版(1)_第1张图片

启动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/

你可能感兴趣的:(Kubernetes实战实现Guestbook留言板-简易版(1))