Java Web App需要两个容器:WebApp容器和MySQL容器,并且WebApp容器需要访问MySQL容器。
如果仅使用Docker,我们需要将MySQL容器的IP地址通过环境变量的方式注入WebApp容器,同时将WebApp容器的8080端口映射到宿主机的8080端口,以便在外部访问。
MySQL服务
创建RC
创建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: mysql
ports:
- containerPort: 3306
env:
- name: MYSQL_ROOT_PASSWORD
value: "123456"
创建RC
kubectl create -f mysql-rc.yaml
查看RC
kubectl get rc
查看Pod
kubectl get pods
创建服务
创建MySQL服务的定义文件mysql-svc.yaml
apiVersion: v1
kind: Service
metadata:
name: mysql
spec:
ports:
- port: 3306
selector:
app: mysql
创建Service对象
kubectl create -f mysql-svc.yaml
查看Service
kubectl get svc
Tomcat应用
创建RC
创建Tomcat对应的myweb-rc.yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: myweb
spec:
replicas: 5
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: 'mysql'
- name: MYSQL_SERVICE_PORT
value: '3306'
创建RC对象
kubectl create -f myweb-rc.yaml
创建Service
定义myweb-svc.yaml
apiVersion: v1
kind: Service
metadata:
name: myweb
spec:
type: NodePort
ports:
- port: 8080
nodePort: 30001
selector:
app: myweb
创建Service对象
kubectl create -f myweb-svc.yaml
访问服务地址http://192.168.73.139:30001/demo