k8s部署tomcat
基本上可以复制粘贴直接使用,需要注意的是
将自己的war包放在指定目录下,然后修改对应的名字即可
1.制作Docker镜像
# 创建目录
mkdir -p tomcat/t/{lib64,app}
cd tomcat
# 复制有关命令及依赖,cp命令最重要
cp $(ldd /usr/bin/ls |grep -oP '/lib64\S+') t/lib64/
cp $(ldd /usr/bin/pwd |grep -oP '/lib64\S+') t/lib64/
cp $(ldd /usr/bin/bash |grep -oP '/lib64\S+') t/lib64/
cp $(ldd /usr/bin/cp |grep -oP '/lib64\S+') t/lib64/
cp /usr/bin/ls t
cp /usr/bin/pwd t
cp /usr/bin/cp t
cp /usr/bin/bash t
2.编写Dockerfile
Dockerfile
FROM scratch
ENV PATH=/
ADD t/ /
CMD ["/bash"]
ONBUILD COPY . /
3.创建基础镜像
docker build -t neko:v1.0 .
这里是为基础镜像添加自己的应用包
mkdir app
cd app
Dockerfile
FROM neko:v1.0
这里将自己的应用包放入tomcat/app目录中,然后构建最终的基础镜像
docker build -t neko:v2.0 .
4.将自己的镜像上传到每个node节点上去
docker save -o neko2.0.tar.gz neko:v2.0
scp neko2.0.tar.gz node1:/root
docker load -i neko2.0.tar.gz
5.编写yml文件,启动pod
tomcat.yml
apiVersion: v1
kind: Pod
metadata:
name: javaweb-2
spec:
initContainers:
- image: neko:v2.0
name: war
command: ["cp", "/jenkins.war", "/app"] ####可能要改
volumeMounts:
- mountPath: /app
name: app-volume
containers:
- image: tomcat:8.5
name: tomcat
volumeMounts:
- mountPath: /usr/local/tomcat/webapps
name: app-volume
ports:
- containerPort: 8080
hostPort: 8001
volumes:
- name: app-volume
emptyDir: {}
6.创建pod
kubectl apply -f tomcat.yml
7.查看pod状态
kubectl describe pod javaweb-2
8.在对应的node节点访问tomcat
curl -I 127.0.0.1:8001/jenkins
9.进入容器
docker exec -it 容器名 bash
kubectl exec -it 容器名 -- bash