一、集群节点配置:
master:192.168.206.138
k8s-node1:192.168.206.136
k8s-node2:192.168.206.137
二、下载一个Tomcat镜像
docker pull tomcat
docker images | grep tomcat
docker tag docker.io/tomcat tomcat
三、根据官方镜像自己构建一个一次性就能启动的Tomcat镜像
官方镜像这里有个坑,使用kubectl启动之后,页面报错404,仔细检查发现,是因为tomcat的webapp目录下没有对应的文件,所以连初始界面都无法显示。要想显示,必须要根据官方镜像自己构建一个Dockerfile
vim Dockerfile
FROM tomcat
ENV MYPATH /usr/local/tomcat
WORKDIR $MYPATH
RUN cp -r webapps.dist/* webapps/
ENTRYPOINT /bin/bash $MYPATH/bin/startup.sh && tail -f $MYPATH/logs/catalina.out
docker build -t tomcat:v7 .
docker tag tomcat:v7 192.168.206.137:5000/tomcat:v7
docker push 192.168.206.137:5000/tomcat:v7
这里需要将镜像上传到自己搭建的registry,并配置nodes节点都可以正常访问5000端口。
步骤可以看:registry搭建方法
三、创建一个 tomcat1.yaml
vim tomcat1.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: tomcatdeploy1
spec:
replicas: 1
selector:
matchLabels:
app: tomcat1
template:
metadata:
labels:
app: tomcat1
spec:
containers:
- name: mytomcat1
image: 192.168.206.137:5000/tomcat:v7
ports:
- containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
name: tomcatservice1
spec:
type: NodePort
ports:
- port: 8080
targetPort: 8080
nodePort: 30088
selector:
app: tomcat1
四、部署yaml
kubectl create -f tomcat1.yaml
kubectl get pod -o wide
kubectl get svc | grep tomcatservice1
根据上面的信息可以看出,该POD部署在k8s-node1上,映射POD的8080端口到master的30088端口上。所以可以通过masterIP:30088访问该tomcat服务
见此页面表示部署OK