利用k8s部署Java项目

利用k8s部署Java项目

// 在k8s的master节点进行操作
[root@master ~]# git clone  https://gitee.com/hadeian/tomcat-java-demo-master.git
正克隆到 'tomcat-java-demo-master'...
remote: Enumerating objects: 182, done.
remote: Counting objects: 100% (182/182), done.
remote: Compressing objects: 100% (165/165), done.
remote: Total 182 (delta 6), reused 178 (delta 4), pack-reused 0
接收对象中: 100% (182/182), 1.12 MiB | 338.00 KiB/s, 完成.
处理 delta 中: 100% (6/6), 完成.
[root@master ~]# ls
anaconda-ks.cfg    tomcat-java-demo-master

// 安装环境
[root@master ~]# yum -y install java-1.8.0-openjdk maven

// 编译构建

如果maven构建慢的话,默认是官方源,可以换阿里云的源vim /etc/maven/settings.xml,大概在(159-164行),更换为如下代码
[root@master ~]# vim /etc/maven/settings.xml


 <mirror>
      <id>central</id>
      <mirrorOf>central</mirrorOf>
      <name>aliyun maven</name>
      <url>https://maven.aliyun.com/repository/public</url>
    </mirror>
  </mirrors>


[root@master tomcat-java-demo-master]# mvn clean install package '-Dmaven.test.skip=true'

// 在tomcat目录下构建镜像
[root@master tomcat-java-demo-master]#  cd target/
[root@master target]# ls
classes            ly-simple-tomcat-0.0.1-SNAPSHOT      maven-archiver
generated-sources  ly-simple-tomcat-0.0.1-SNAPSHOT.war  maven-status

[root@master tomcat-java-demo-maste]# cat Dockerfile 
FROM lizhenliang/tomcat 
LABEL maintainer www.ctnrs.com
RUN rm -rf /usr/local/tomcat/webapps/
ADD target/ly-simple-tomcat-0.0.1-SNAPSHOT.war /usr/local/tomcat/webapps/ROOT.war


[root@master tomcat-java-demo-master]# docker build -t java-demo:latest .
Sending build context to Docker daemon  45.34MB
Step 1/4 : FROM lizhenliang/tomcat
 ---> 143035d83fdc
Step 2/4 : LABEL maintainer www.ctnrs.com
 ---> Using cache
 ---> c7b67ab30e68
Step 3/4 : RUN rm -rf /usr/local/tomcat/webapps/
 ---> Using cache
 ---> 40884143fd9c
Step 4/4 : ADD target/ly-simple-tomcat-0.0.1-SNAPSHOT.war /usr/local/tomcat/webapps/ROOT.war
 ---> 0c0011c17dca
Successfully built 0c0011c17dca
Successfully tagged java-demo:latest

[root@master ~]# docker tag 0c0011c17dca wjj200112/java-demo:latest
[root@master ~]# docker push wjj200112/java-demo:latest
The push refers to repository [docker.io/bravealove1/java-demo]
bbc8874d72c7: Pushed 
99229ce5b652: Pushed 
ceead5ca823f: Mounted from lizhenliang/tomcat 
2353c173a26a: Mounted from lizhenliang/tomcat 
071d8bd76517: Mounted from lizhenliang/tomcat 
latest: digest: sha256:1441380bf704f4b2de3bf650f48dcee239ac70c87bea7c5bc3318d46f533407a size: 1371

// 创建控制器管理pod
[root@master ~]# vim deployment.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  name: tomcat-java-demo
  namespace: default
spec:
  replicas: 2
  selector:
    matchLabels:
      project: www
      app: java-demo
  template:
    metadata:
      labels:
        project: www
        app: java-demo
    spec:
      imagePullSecrets:
      - name: registry-pull-secret
      containers:
      - name: tomcat
        image: wjj200112/java-demo:latest
        imagePullPolicy: Always
        ports:
        - containerPort: 8080
          name: web
          protocol: TCP
        resources:
          requests:
            cpu: 0.25
            memory: 1Gi
          limits:
            cpu: 1
            memory: 2Gi
        livenessProbe:
          httpGet:
            path: /
            port: 8080
          initialDelaySeconds: 60
          timeoutSeconds: 20
        readinessProbe:
          httpGet:
            path: /
            port: 8080
          initialDelaySeconds: 60
[root@master ~]# kubectl adpply -f deployment.yaml
deployment.apps/tomcat-java-demo configured
[root@master ~]# kubectl get pods 
NAME                                READY   STATUS    RESTARTS   AGE
NAME                                    READY   STATUS    RESTARTS   AGE
pod/tomcat-java-demo-6d798c6996-fjjvk   1/1     Running   0          1m
pod/tomcat-java-demo-6d798c6996-lbklf   1/1     Running   0          1m
pod/tomcat-java-demo-6d798c6996-strth   1/1     Running   0          1m

// 暴露应用
[root@master ~]#  cat service.yaml
apiVersion: v1
kind: Service
metadata:
  name: tomcat-java-demo
  namespace: default
spec:
  selector:
    project: www
    app: java-demo
  ports:
  - name: web
    port: 80
    targetPort: 8080
  type: NodePort
[root@master ~]# kubectl  apply -f service.yaml 
service/tomcat-java-demo created

[root@k8s-master java-demo]# kubectl get pod,svc 
NAME                                    READY   STATUS    RESTARTS   AGE
pod/tomcat-java-demo-6d798c6996-fjjvk   1/1     Running   0          3m
pod/tomcat-java-demo-6d798c6996-lbklf   1/1     Running   0          3m
pod/tomcat-java-demo-6d798c6996-strth   1/1     Running   0          3m

NAME                       TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)   AGE
service/tomcat-java-demo   NodePort   10.1.175.191   <none>        80:30187/TCP    19s
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值