1. 新建dockerfile文件,将该文件上传到服务器,假设在目录 :/home/app
# java镜像名称
#FROM jdk1.8
FROM java:8
MAINTAINER cn_yang
# 从诉诸机拷贝 jar 到镜像 中的 usr/app 目录下
COPY testdemo.jar /usr/app/testdemo.jar
# 暴露端口
EXPOSE 8085
# 执行 java -jar 命令 (CMD:在启动容器时才执行此行。RUN:构建镜像时就执行此行)
CMD java -jar /usr/app/testdemo.jar
2. 在 /home/app 目录下执行命令:
# demo_app是镜像的名字,确保各个节点上都有该镜像
docker build -t demo_app .
3. 查看是否成功:
# slave节点上也要有该镜像
docker images
4. 新建Deployment文件,文件名:demo-rc.yaml (注意该文件的缩进,格式要一定正确)
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: myapp
spec:
# 节点数,设置为多个可以实现负载均衡效果
replicas: 2
template:
metadata:
labels:
app: demo-app
spec:
containers:
- name: demo-app
#镜像的名字
image: demo_app
imagePullPolicy: IfNotPresent
ports:
#镜像对外暴露的端口号
- containerPort: 8085
5. 创建deployment(假设文件在服务器上的/home/app,进入该目录后执行以下命令)
# 在master节点上执行
# 创建deployment
kubectl create -f demo-rc.yaml
6. 查看是否成功
# 在master节点上执行
kubectl get pods
成功的状态是:running,如果不成功,那么执行以下命令查看错误日志
# 在master节点上执行
# 查看某个pod的日志 myapp-5c78644fc4-fh7qw 是pod的名字(在上一条命令中查看:kubectl get pods )
kubectl describe pod/myapp-5c78644fc4-fh7qw
# 查看日志
kubectl describe pods
7. 创建service,假设文件的名字为demo-svc.yaml,:
apiVersion: v1
kind: Service
metadata:
name: demo
spec:
type: NodePort
ports:
- port: 8081
# jar文件的暴露端口
targetPort: 8085
# 节点暴露给外部的端口(范围必须为30000-32767)
nodePort: 30001
selector:
#与Deployment文件中的 demo-app名字一致
app: demo-app
8. 执行命令(假设文件在服务器上的/home/app,进入该目录后执行以下命令):
# 在master节点上执行
kubectl create -f demo-svc.yaml
9. 查看刚才创建的服务,其中30001是对外访问的端口,在浏览器输入地址:http://192.168.199.130:30001/product/find 即可访问(这个地址是我自己的测试)
# 在master节点上执行
kubectl get svc
10. 查看服务详情:
# 在master节点上执行
kubectl get pods -o wide
测试的时候,注意防火墙是否关闭,或者在防火墙规则里面放行
参考文档1:https://blog.csdn.net/wucong60/article/details/81586272
参考文档2:https://blog.csdn.net/ysk_xh_521/article/details/81668631