k8s中部署一个java项目

本篇是基于k8s-v1.15.0版本,在现有集群上部署一个java项目。

流程如下:制作镜像—》控制器管理pod—》暴露应用—》对外发布应用

java-deamon的源码下载地址详见百度云

链接:https://pan.baidu.com/s/1mK5HPrPWKUTn1Wf3AG3p3w 
提取码:gum7 

tomcat下载地址

http://archive.apache.org/dist/tomcat/tomcat-8/v8.0.46/bin/apache-tomcat-8.0.46.tar.gz

step1:制作jdk、tomcat的版本的镜像

1)编辑dockerfile文件

cat Dockerfile-tomcatv1
FROM www.my.com/sys/centos:7.7.1908
LABEL maintainer wangkaixuan
ADD jdk-8u112-linux-x64.tar.gz /usr/local
ENV JAVA_HOME=/usr/local/jdk1.8.0_112
ENV PATH=$JAVA_HOME/bin/:$PATH
ENV CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$CLASSPAT

ADD apache-tomcat-8.0.46.tar.gz /usr/local
WORKDIR /usr/local/apache-tomcat-8.0.46
EXPOSE 8080
ENTRYPOINT ["./bin/catalina.sh", "run"]

2)构建镜像

docker build -t tomcat:v1 -f Dockerfile-tomcatv1 .

3)将镜像推送到仓库

docker tag tomcat:v1 www.my.com/web/tomcat:v1
docker push www.my.com/web/tomcat:v1

step2:打包war包(jdk和maven环境)

1)源码

├── db(数据库sql文件)
├── pom.xml(maven工程会用)
└── src(源代码)

2)jdk环境参考

3)maven环境参考

4)数据库环境

1> 拉去mysql5.7镜像,启动容器
docker pull www.my.com/sys/mysql:5.7
docker run -itd --name mysql -p 3306:3306 -v /var/lib/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 www.my.com/sys/mysql:5.7
docker inspect mysql

在这里插入图片描述

2> 创建库并授权
mysql -uroot -p -h172.17.0.2

CREATE DATABASE IF NOT EXISTS `test`  DEFAULT CHARACTER SET utf8 ;
USE `test`;
CREATE TABLE `user` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(100) NOT NULL COMMENT '名字',
  `age` INT(3) NOT NULL COMMENT '年龄',
  `sex` CHAR(1) DEFAULT NULL COMMENT '性别',
  PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8;
grant all on *.* to 'root'@'%' identified by '123456';

3> 验证
mysql -uroot -p -h 10.10.0.120

4)源码编译构建

1> 解压源码包(也可以将源码包放在github上,远程拉取到本地)
cd /root/java-daemon/
unzip tomcat-java-demo-master.zip   
cd 
2> 修改源码中的数据库连接、用户名和密码
cat /root/java-daemon/tomcat-java-demo-master/src/main/resources/application.yml
...
url: jdbc:mysql://10.10.0.120:3306/test?characterEncoding=utf-8
    username: root
    password: 123456
...
3> 源码构建
mvn clean package -Dmaven.test.skip=true  #在当前目录下,编译后会生成一个target目录,里面有编译好的war包

构建过程如下
在这里插入图片描述
构建成功
在这里插入图片描述
构建后生成的target包
在这里插入图片描述

step3:制作war包的docker镜像

1)编辑dockerfile文件

cat Dockerfile
FROM www.my.com/web/tomcat:v1
LABEL maintainer wangkaixuan
RUN rm -rf /usr/local/apache-tomcat-8.0.46/webapps/ROOT
ADD target/*.war /usr/local/apache-tomcat-8.0.46/webapps/ROOT.war

2)构建镜像

docker build -t  java-deamon:v1 .

3)将镜像推送到仓库

docker tag  java-deamon:v1 www.my.com/web/java-deamon:v1
docker push www.my.com/web/java-deamon:v1

step4:部署一个k8s的deployment

kubectl create deployment java-deamon --image=www.my.com/web/java-deamon:v1 --dry-run -o yaml > java.yaml   #生成deployment的yaml模板

编辑yaml模板,删除metadata下的creationTimestamp;删除spec下的strategy;删除spec下的spec下的resources;删除status;修改replicas为2

cat << EOF > java.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: java-deamon
  name: java-deamon
spec:
  replicas: 2
  selector:
    matchLabels:
      app: java-deamon
  template:
    metadata:
      labels:
        app: java-deamon
    spec:
      containers:
      - image: www.my.com/web/java-deamon:v1
        name: java-deamon
EOF
kubeclt apply -f java.yaml   #执行yaml模板,生成pod
kubectl get pod -o wide      #查看pod

在这里插入图片描述

step5:部署一个svc,使得可以访问创建的deployment

kubectl expose deployment java-deamon --port=80 --target-port=8080 --type=NodePort -o yaml --dry-run >svc.yaml    #生成svc的yaml模板,越详细越好

编辑yaml模板
删除metadata下的creationTimestamp;删除status

cat svc.yaml 
apiVersion: v1
kind: Service
metadata:
  labels:
    app: java-deamon
  name: java-deamon
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 8080
  selector:
    app: java-deamon
  type: NodePort
kubeclt apply -f svc.yaml   #执行yaml模板,生成scv
kubectl get pod,svc         #查看svc和pod以及端口

在这里插入图片描述

step6:浏览器访问

http://nodeip:nodeport    #nodeip值得是任意k8s节点的ip;nodeport值得是k8s分配给svc的随机端口号

在这里插入图片描述

step7:配置ingress并验证

1)编写ingress的文件

cat <<EOF  > ingress.yaml 
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: java-deamon
  namespace: default
spec:
  rules:
  - host: www.java-tomcat.com
    http:
      paths:
      - path: /
        backend:
          serviceName: java-deamon
          servicePort: 8080
EOF
kubectl apply -f ingress.yaml  #执行yaml模板,生成对应的ingress
kubectl get pod,svc,ingress  #查看pod,svc,ingress

2)配置dns服务器

dns服务器部署参考轻量级域名解析服务器之dnsmasq

echo '10.10.0.111 www.java-tomcat.com' >> /etc/hosts   #在DNS服务器中的hosts配置
systemctl restart dnsmasq.service   #重启dns服务器

3)浏览器访问验证

在这里插入图片描述

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值