把服务做到镜像里
下载基础镜像
docker pull hub.hexiaodai.com/kubernetes/tomcat:8.0.51-alpine
打包项目(MVN 构建项目)
[root@m1 mooc-k8s-demo-docker]# ll
drwxr-xr-x. 4 root root 86 12月 13 13:07 web-demo
[root@m1 mooc-k8s-demo-docker]# cd web-demo
# mvn package
[root@m1 dubbo-demo]# mvn package
本地启动项目
[root@m1 target]# ll
-rw-r--r--. 1 root root 12068084 12月 13 22:23 web-demo-1.0-SNAPSHOT.war
# 查看 war 包内容
[root@m1 target]# jar -tf web-demo-1.0-SNAPSHOT.war
# 解压 war 包
[root@m1 target]# mkdir ROOT
[root@m1 target]# cp web-demo-1.0-SNAPSHOT.war ROOT
[root@m1 ROOT]# jar -xvf web-demo-1.0-SNAPSHOT.war
[root@m1 ROOT]# ls
META-INF WEB-INF
构建镜像 - Dockerfile
确定 web 项目部署位置和启动脚本
[root@m1 ~]# docker run -it -d hub.hexiaodai.com/kubernetes/tomcat:8.0.51-alpine
a0667cc253c96f04c17abab254df3392b0d67f8d874c424571493f9ce8b98cef
[root@m1 ~]# docker exec -it a0667cc253c sh
# Tomcat 容器
/usr/local/tomcat/webapps/ROOT # pwd
/usr/local/tomcat/webapps/ROOT
# 自定义启动脚本
[root@m1 dockerfiles]# pwd
/root/mooc-k8s-demo-docker/web-demo/dockerfiles
[root@m1 dockerfiles]# ls
start.sh
start.sh
#!/bin/bash
sh /usr/local/tomcat/bin/startup.sh
tail -f /usr/local/tomcat/logs/catalina.out
FROM hub.hexiaodai.com/kubernetes/tomcat:8.0.51-alpine
COPY target/ROOT /usr/local/tomcat/webapps/ROOT
COPY dockerfiles/start.sh /usr/local/tomcat/bin/start.sh
ENTRYPOINT ["sh" , "/usr/local/tomcat/bin/start.sh"]
build
docker build -t web:v1 .
测试镜像
docker run -it web:v1
发布镜像
docker tag web:v1 hub.hexiaodai.com/kubernetes/web:v1
docker push hub.hexiaodai.com/kubernetes/web:v1
制作 k8s 服务,并调度
确定服务发现策略
编写 k8s 配置文件
#deploy
apiVersion: apps/v1
kind: Deployment
metadata:
name: web-demo
spec:
selector:
matchLabels:
app: web-demo
replicas: 1
template:
metadata:
labels:
app: web-demo
spec:
containers:
- name: web-demo
image: hub.hexiaodai.com/kubernetes/web:v1
ports:
- containerPort: 8080
---
#service
apiVersion: v1
kind: Service
metadata:
name: web-demo
spec:
ports:
- port: 80
protocol: TCP
targetPort: 8080
selector:
app: web-demo
type: ClusterIP
---
#ingress
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: web-demo
spec:
rules:
- host: web.hexiaodai.com
http:
paths:
- path: /
backend:
serviceName: web-demo
servicePort: 80
kubectl apply -f web-demo.yaml
查看 web-demo 运行情况
[root@m1 nginx]# k get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
web-demo-5595bb8456-47fdt 2/2 Running 0 33s 10.244.0.25 m1 <none> <none>

