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的对外端口

Springboot(java)程序部署到k8s的更多相关文章
- 从安装linux(centos7.6)系统到部署springboot java程序到k8s(大纲)
本文说明从安装linux系统开始,一直到在k8s运行springboot程序全过程 本文假设在自己电脑操作,因此linux系统使用vmware虚拟机,linux发行版使用centos 7.6.1810 ...
- 开发阶段,将SpringBoot应用快速部署到K8S
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- 基于idea做java程序的本地k8s调试-skaffold(一)
先介绍下本篇文章是基于ideas下开发微服务的场景,大家都知道微服务嘛,一个个微的服务...很多,先不谈调试,要跑起来都费力,可能的原因有: 环境变量的配置,如果多个项目穿插着来,env变量可能废了, ...
- 基于idea做java程序的本地k8s调试-skaffold(二)
上一篇讲完了java代码发到本机minikube中run,这篇来讲讲minkube中进行debug(idea下) 话说,上篇是把pigx基础infra微服务都发到了minikube中,这些微服务是ru ...
- Linux中部署JAVA程序
JAVA程序在开发完成后,需要部署到服务器,如果是WEB项目,需要部署到WEB服务器,否则部署到应用服务器. JAVA是跨平台的编程语言,服务器的操作系统可以是Windows.Linux或者其它,下面 ...
- 写个shell脚本搭载jenkins让你的程序部署飞起来
[转载请注明]: 原文出处:https://www.cnblogs.com/jstarseven/p/11399251.html 作者:jstarseven 码字挺辛苦的..... 说明 ...
- Java Project部署到Tomcat服务器上
所有的JAVA程序员,在编写WEB程序时,一般都通过工具如 MyEclipse,编写一个WEB Project,通过工具让这个WEB程序和Tomcat关联.其实在我们可以通过JAVA程序部署到Tomc ...
- Java Service Wrapper将java程序设置为服务
有时候我们希望我们java写的程序作为服务注册到系统中,Java Service Wrapper(下面简称wrapper)是目前较为流行的将Java程序部署成Windows服务的解决方案, 本文将讨论 ...
- Java Service Wrapper 发布Java程序为Windows服务
下载Windows版本:https://www.krenger.ch/blog/java-service-wrapper-3-5-37-for-windows-x64/ 转自:F:\java\bhGe ...
随机推荐
- springboot+mybatis 配置sql打印日志
第一种: 配置类型 # 配置slq打印日志 logging.level.com.lawt.repository.mapper=debug重点: #其中 com.lawt.repository.ma ...
- Java日期时间以及日期相互转换_java - JAVA
文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 Java日期时间,以及相互转化,供大家参考,具体内容如下 package com.study.string; impor ...
- LeetCode--009--回文数(python)
判断一个数是否为回文数,回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数. 通常让数字逆序,然后判断和原数字是否相等,这里只需逆序一般就可以. case1.奇数位例如判断12321 whi ...
- ES6数据结构Set、Map
一.Set数据结构 Set是无序的不可重复的多个value的集合体,Set结构是类似于数组结构,但是Set中的值都不能重复 常用的属性和方法 size:返回set实例的成员总数 add():添加某个值 ...
- PHP 大文件上传进度条实现
核心原理: 该项目核心就是文件分块上传.前后端要高度配合,需要双方约定好一些数据,才能完成大文件分块,我们在项目中要重点解决的以下问题. * 如何分片: * 如何合成一个文件: * 中断了从哪个分片开 ...
- 【JavaMail】JavaMail整合RabbitMq发送邮件案例
前言 Linux安装RabbitMQ:https://www.cnblogs.com/jxd283465/p/11975094.html SpringBoot整合RabbitMQ:https://ww ...
- 3D Computer Grapihcs Using OpenGL - 03 OpenGL Buffer Data
本节绘制一个三角形,并讲解Buffer Object-缓冲对象 OpenGL的窗口坐标 屏幕中心为坐标原点,横向朝右为x正方向,纵向朝上为y正方向,最大值最小值分别为1,-1. Buffer Obje ...
- 封装类和非封装类比较相同不int和Integer
A.所有和int(非封装类比较的,只要数值相同就行) B.io3由valueof弄出来的,所以和io1相同 C.io4是new出来的,所以地址不一样,就不相同 D.和A相同
- loadrunner性能测试巧匠训练营-controller
1.设置集合点 现在脚本添加集合点的函数,集合点不能添加到事务里面,负责统计事务的时候会把时间计算进去 2.IP欺骗 前言 https://www.cnblogs.com/danbing/p/7459 ...
- 如何降低Vue.js项目中Webpack打包文件的大小?
https://blog.csdn.net/maray/article/details/50988500?utm_source=blogxgwz0 import Blur from ‘vux/src/ ...