Java web应用的容器化发布

1. Java web应用的容器化发布

1.1 环境准备

为了与其他Pod隔离,新建一个命名空间。

kubectl create namespace java-web

1.2 启动MySQL服务

1)创建MySQL定义文件sql-rc.yaml,用于启动MySQL服务。

apiVersion: v1 
kind: ReplicationController
metadata:
 name: mysql
 namespace: java-web 
spec:
 replicas: 1
 selector:
  app: mysql
 template:
  metadata:
   labels:
    app: mysql
  spec:
   containers:
   - name: mysql
     image: mysql:5.7
     ports:
     - containerPort: 3306
     env:
     - name: MYSQL_ROOT_PASSWORD
       value: "123456"

上述文件中的spec.template.metadata.labels指定了该Pod的标签。

注:这里的标签必须与上面的spec.selector匹配,否则每当此RC创建了一个无法匹配标签的Pod,系统会认为此系统创建失败,继而不停地尝试创建新的Pod,导致系统进入恶性循环。

2)将其发布到Kubernetes集群

kubectl create -f sql-rc.yaml

在这里插入图片描述

查看pod信息

kubectl get pods -n java-web

在这里插入图片描述

注:kubectl get pods为查看default命名空间里的pods信息,若想查看指定的命名空间需要使用参数 -n指定。

3)创建关联的Service定义文件,并执行create命令

vim sql-svc.yaml

apiVersion: v1
kind: Service
metadata:
 name: mysql
 namespace: java-web
spec:
 ports:
  - port: 3306
    targetPort: 3306
 selector:
  app: mysql

vim kubectl create -f sql-svc.yaml

Java web应用的容器化发布_第1张图片

1.3 启动Tomcat应用

1)创建Tomcat

编写Tomcat对应的文件web-rc.yaml

vim web-rc.yaml

apiVersion: v1
kind: ReplicationController
metadata:
 name: tomcat
 namespace: java-web
spec:
 replicas: 1
 selector:
  app: tomcat
 template:
  metadata:
   labels:
    app: tomcat
  spec:
   containers:
    - name: tomcat
      image: docker.io/kubeguide/tomcat-app:v1
      ports:
      - containerPort: 8080
      env:
       - name: MYSQL_SERVICE_HOST
         value: 10.104.44.202
       - name: MYSQL_SERVICE_PORT
         value: '3306'

注:上述文件中的spec.containers.env.name:MYSQL_SERVICE_HOST.value为自己创建的mysql服务的CLUSTER-IP,可使用kubectl get service -n java-web命令查看。

创建Tomcat

kubectl create -f web-rc.yaml

2)创建Tomcat对应的Service

在文件中设置端口转发项,将容器的8080端口转发到本地的30000端口。

apiVersion: v1
kind: Service
metadata:
 name: tomcat
 namespace: java-web
spec:
 type: NodePort
 ports:
  - port: 8080
    targetPort: 8080
    nodePort: 30000
 selector:
  app: tomcat

执行kubectl create命令进行创建,并查看创建的Service

kubectl create -f web-svc.yaml

kubectl get pods -n java-web

Java web应用的容器化发布_第2张图片

5)查看服务部署的位置

kubectl get pod -n java-web -o wide

在这里插入图片描述

可以看到,mysql和tomcat都被部署到slave2上,所以在浏览器输入slave2的IP地址:30000/demo访问即可。

Java web应用的容器化发布_第3张图片

单击add按钮可向数据库添加数据。

Java web应用的容器化发布_第4张图片

你可能感兴趣的:(容器,java,kubernetes,docker,容器)