Springboot(java)程序部署到k8s

新建rc(replication controller)

以下操作在master1做

 

rc是一套程序部署的配置,k8s会根据配置自动运行和管理程序,例如自动启动程序,程序挂了自动重启等等

rc配置一般都是写到配置文件(扩展名yaml),然后指定yaml文件来新建rc,k8s很多“东西”都是这种方式配置

 

在任意目录(最好是存放文件资料的地方),新建文件springboot-helloworld-rc.yaml,内容如下:

PS:部分项有注释

apiVersion: v1

kind: ReplicationController#对象类型,这里是rc(全称ReplicationController)

metadata:

  name: helloworld#名称

  labels:

    name: helloworld#标注

spec:

  replicas: 3#运行容器的副本数,修改这里可以快速修改分布式节点数量

  selector:

    name: helloworld

  template:

    metadata:

     labels:

       name: helloworld

    spec:

     containers:#docker容器的配置

     - name: helloworld

       image: 192.168.31.141:5000/springio/ewater:0.0.1#pull镜像的地址

       imagePullPolicy: IfNotPresent#pull镜像时机,

       ports:

       - containerPort: 20801#容器对方开放端口

 

cd到yaml的目录,运行:kubectl create -f springboot-helloworld-rc.yaml,根据yaml的配置创建rc(创建什么类型对象是在yaml里面指定,所有类型对象创建命令都是kubectl create)

 

运行:kubectl get rc,可查看rc列表

 

 

 

运行:kubectl get pods,可查看运行的pod列表

 

 

Pod启动比较容易出错,以下详细说明:

首先pod可以理解为docker容器,例如本文rc配置了运行副本(容器)数是3,所以就创建了3个pod(容器)

Pod的状态(status)是running(运行中)是正常的,如果是其他值说明启动未成功

未成功有可能是pull镜像比较慢,这只能等

未成功也有可能是启动失败,可以用命令kubectl describe pod helloworld-7jpm5(helloworld-7jpm5代表pod名称),通过查看某个pod的启动日志来调试

 

 

例如下图就说明pull镜像时出问题

 

 

 

另外可以用命令kubectl logs helloworld-7jpm5(helloworld-7jpm5代表pod名称)查看pod的命令行日志,相当于在cmd运行jar包的命令行输出

 

 

 

rc和pod成功创建和运行,相当于java程序在k8s已运行成功,但外网还不能访问,接下来要创建service


 

新建service

以下操作在master1做

 

Service在k8s体系总负责沟通k8s内外网络配置(注意内外只是指k8s网络的内外,而不是局域网和互联网)

 

在任意目录(最好是存放文件资料的地方),新建文件springboot-helloworld-svc.yaml,内容如下:

apiVersion: v1

kind: Service #对象类型,这里是service

metadata:

  name: helloworld #名称

  labels:

    name: helloworld #标注

spec:

  type: NodePort

  ports:

  - port: 20801 #service(对内)的端口

    targetPort: 20801 #pod的端口

    nodePort: 32008 #service对外的端口

  selector:

name: helloworld

 

cd到yaml文件所在目录,运行:kubectl create -f springboot-helloworld-svc.yaml,根据yaml文件创建service

 

可以运行kubectl get services查看到新的service

PS:20801是内部端口,32008是对外端口

 

 

 

此时可以在浏览器访问测试是否部署成功,注意ip是master1的,端口是service的对外端口

 

 

 

posted @ 2019-06-28 18:23  cannel  阅读(10822)  评论(0编辑  收藏  举报