image.png

把服务做到镜像里

下载基础镜像

  1. 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 服务,并调度

确定服务发现策略

ingress-nginx

编写 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

访问 springboot web 服务器地址

http://springboot.hexiaodai.com/hello?name=hjm