Kubernetes部署 Docker SpringBoot项目

Kubernetes 1.18 部署SpringBoot项目

  • Hello-1.0-SNAPSHOT.jar
  • jdk-8u251-linux-x64.tar.gz

创建docker镜像

[root@master ~]# docker build -f Dockerfile1 -t hello ./

Sending build context to Docker daemon 213.4 MB
Step 1/8 : FROM centos
 ---> 831691599b88
Step 2/8 : ADD jdk-8u251-linux-x64.tar.gz /usr/local/java/
 ---> 2429620b6cb2
Removing intermediate container d6c2106906f1
Step 3/8 : ADD Hello-1.0-SNAPSHOT.jar /usr/local/
 ---> 4ad3897939a3
Removing intermediate container f84fcef8e601
Step 4/8 : ENV JAVA_HOME /usr/local/java/jdk1.8.0_251
 ---> Running in a7d62232397c
 ---> 2fe922f2ef6a
Removing intermediate container a7d62232397c
Step 5/8 : ENV CLASSPATH $JAVAHOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
 ---> Running in 318350f4bb14
 ---> d91f96d0a5f5
Removing intermediate container 318350f4bb14
Step 6/8 : ENV PATH $PATH:$JAVA_HOME/bin
 ---> Running in 0ad911493d1f
 ---> 775cff5e7470
Removing intermediate container 0ad911493d1f
Step 7/8 : EXPOSE 8088
 ---> Running in 5ac850a438ab
 ---> 3301f1330648
Removing intermediate container 5ac850a438ab
Step 8/8 : CMD java -jar /usr/local/Hello-1.0-SNAPSHOT.jar
 ---> Running in caf8b44340d6
 ---> cb5b9b08e530
Removing intermediate container caf8b44340d6
Successfully built cb5b9b08e530

启动容器,访问地址

启动容器,并在容器内访问地址

[root@master ~]# docker run -d -p 30001:8088 hello
7e63cf0d29a1d82f621cde8c70624d18f0d8ed74068f014a014c30e59a8d562a


在容器内访问Hello服务
[root@0d4fb60a043a /]# curl -XGET localhost:30001/hello
SERVER: hello SpringBoot

----------------------------------
#push到docker Hub
[root@master ~]# docker push 780528005/hello:1.0
The push refers to a repository [docker.io/780528005/hello]
97fbd0828a19: Layer already exists 
dd4394a4bacc: Layer already exists 
eb29745b8228: Pushing 10.92 MB/215.3 MB

Kubernetes

Deployment 创建模板资源文件

使用yaml文件创建pod:
[root@master ~]# kubectl apply -f hello-deployment.yaml
[root@master ~]# kubectl apply -f hello-service.yaml

删除yaml文件创建的资源:kubectl delete -f nginx-test.yaml

[root@master ~]# vi hello-deployment.yaml
apiVersion: apps/v1
kind: Deployment #对象类型
metadata:
  name: hello-deployment #名称
  lables:
    app: hello #标注
spec:
  replicas: 3 #运行容器的副本数
  selector:
    matchLabels:
      app: hello
  template:
    metadata:
      labels:
        app: hello
    spec:
      containers: #docker容器的配置
      - name: hello
        image: 780528005/hello:1
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 8088 #容器对外开放端口

Service 设置对外提供服务

Service.yaml

[root@master ~]# vi hello-service.yaml 
apiVersion: v1
kind: Service
metadata:
  name: hello-service #名称
  namespace: default
  labels:
    app: hello #标注
spec:
  type: NodePort
  ports:
  - port: 8088
    nodePort: 30001 #Service对外开放端口
  selector:
    app: hello

部署pod

使用yaml文件创建pod,默认部署在 default namespace。

[root@master ~]# kubectl apply -f hello-deployment.yaml

#查看创建的 pods 及所有信息

[root@master ~]# kubectl get all
NAME                                   READY   STATUS    RESTARTS   AGE
pod/hello-deployment-64fb9d6f5-42bln   1/1     Running   0          11h
pod/hello-deployment-64fb9d6f5-8wdl7   1/1     Running   0          11h
pod/hello-deployment-64fb9d6f5-g4cr9   1/1     Running   0          11h

NAME                    TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE
service/hello-service   NodePort    10.109.10.73   <none>        8088:30001/TCP   11h
service/kubernetes      ClusterIP   10.96.0.1      <none>        443/TCP          3d12h

NAME                               READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/hello-deployment   3/3     3            3           11h

NAME                                         DESIRED   CURRENT   READY   AGE
replicaset.apps/hello-deployment-64fb9d6f5   3         3         3       11h

#查看已经调度到对应的服务器

[root@master ~]# kubectl get pod -o wide
NAME                                    READY   STATUS    RESTARTS   AGE     IP            NODE            NOMINATED NODE   READINESS GATES
nginx-deployment-57f94c46b4-5whb5       1/1     Running   0          6h30m   172.17.97.3   192.168.1.232   <none>           <none>

删除 Deployment、Service

删除 Deployment、Service

[root@master1 ~]# kubectl get service
NAME               TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                          AGE
activemq-service   NodePort    10.111.227.72   <none>        8161:30081/TCP,61616:30061/TCP   24m
kubernetes         ClusterIP   10.96.0.1       <none>        443/TCP                          4d14h


[root@master1 ~]# kubectl delete service activemq-service
service "activemq-service" deleted

 
[root@master1 ~]# kubectl get deployment
NAME                  READY   UP-TO-DATE   AVAILABLE   AGE
activemq-deployment   0/1     1            0           56m

 
[root@master1 ~]# kubectl delete deployment activemq-deployment
deployment.apps "activemq-deployment" deleted

外网访问测试

http://192.168.11.10:30001/hello
Hello SpringBoot

在外网访问
在node2上通过pod的地址访问,能证明pod已经正常运行了,但是来自kubernetes环境之外的请求如何才能到达pod上呢?这就需要通过service的方式将deploy的端口暴露出去
https://www.cnblogs.com/yhaing/p/8568234.html
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值