把服务做到镜像里
下载基础镜像
docker pull hub.hexiaodai.com/kubernetes/openjdk:8-jre-alpine
打包项目(MVN 构建项目)
[root@m1 cronjob-demo]# mvn package
构建镜像 - Dockerfile
FROM hub.hexiaodai.com/kubernetes/openjdk:8-jre-alpine
COPY target/springboot-web-demo-1.0-SNAPSHOT.jar /springboot-web.jar
ENTRYPOINT ["java", "-jar", "/springboot-web.jar"]
build
docker build -t springboot-web:v1 .
测试镜像
docker run -it springboot-web:v1
发布镜像
docker tag cronjob:v1 hub.hexiaodai.com/kubernetes/springboot-web:v1
docker push hub.hexiaodai.com/kubernetes/springboot-web:v1
制作 k8s 服务,并调度
确定服务发现策略
编写 k8s 配置文件
#deploy
apiVersion: apps/v1
kind: Deployment
metadata:
name: springboot-web-demo
spec:
selector:
matchLabels:
app: springboot-web-demo
replicas: 1
template:
metadata:
labels:
app: springboot-web-demo
spec:
containers:
- name: springboot-web-demo
image: hub.hexiaodai.com.com/kubernetes/springboot-web:v1
ports:
- containerPort: 8080
---
#service
apiVersion: v1
kind: Service
metadata:
name: springboot-web-demo
spec:
ports:
- port: 80
protocol: TCP
targetPort: 8080
selector:
app: springboot-web-demo
type: ClusterIP
---
#ingress
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: springboot-web-demo
spec:
rules:
- host: springboot.hexiaodai.com
http:
paths:
- path: /
backend:
serviceName: springboot-web-demo
servicePort: 80
kubectl apply -f springboot-web.yaml
查看 springboot-web 运行情况
[root@m1 nginx]# k get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
springboot-web-demo-77cdbf4d6-qww4q 1/1 Running 0 12s 10.244.1.28 s1 <none> <none>
[root@m1 configs]# k get ingress
NAME HOSTS ADDRESS PORTS AGE
springboot-web-demo springboot.hexiaodai.com 80 92s
springboot-web 执行完毕,并且被调度到 s1 节点上
[root@s1 harbor]# docker ps -a | grep springboot-web
...
4dcf0ac094b9
# 查看 springboot-web 日志
[root@s1 harbor]# docker logs 4dcf0ac094b9
配置宿主机配置 host
sudo vim /etc/hosts
192.168.109.14 springboot.hexiaodai.com

