美文网首页
k8s-6:k8s+springBoot项目

k8s-6:k8s+springBoot项目

作者: 王鹏_364f | 来源:发表于2020-04-03 16:07 被阅读0次

百度网盘链接:https://pan.baidu.com/s/1ZL07VO3ysXpyr5qMpMEHiw提取码: aa86

(1)创建一个springBoot项目,使用idea或者sts都可以创建一个简单的springBoot项目,我这里使用sts创建项目

(2)点击【file】,点击【new】,点击【project】,点击【spring boot】,点击 【spring starter project】

(3)创建一个SpringBoot demo项目

(4)pom文件增加 spring-boot-starter-web包和org.apache.maven.plugins包

<dependencies>

          <dependency>

              <groupId>org.springframework.boot</groupId>

              <artifactId>spring-boot-starter</artifactId>

          </dependency>

          <dependency>

              <groupId>org.springframework.boot</groupId>

              <artifactId>spring-boot-starter-web</artifactId>

          </dependency>

</dependencies>

     <build>

          <plugins>

              <plugin>

                   <groupId>org.springframework.boot</groupId>

                   <artifactId>spring-boot-maven-plugin</artifactId>

              </plugin>

              <!-- 要使生成的jar可运行,需要加入此插件 -->

              <plugin>

                   <groupId>org.apache.maven.plugins</groupId>

                   <artifactId>maven-surefire-plugin</artifactId>

                   <configuration>

                        <skip>true</skip>

                   </configuration>

              </plugin>

          </plugins>

     </build>

(6) 再application.propertis中配置端口号和项目地址

server.servlet.context-path=/

server.port=9999

(7)在项目创建一个Demo.class文件

package com.thunisoft.camera.k8s;

import  org.springframework.web.bind.annotation.RequestMapping;

import  org.springframework.web.bind.annotation.RestController;

@RestController

@RequestMapping(value = "/")

public class Demo {

     @RequestMapping("/str")

     public String str() {

          return "this is k8s demo";

     }

}

(8)运行一下,在浏览器上访问一下

(9)项目打成jar包,选中项目【右键】、【Run as】、【4、maven clean】;

选中项目【右键】、【Run as】、【6、maven install】;

(10)在windows本地测试使用.bat文件,在centOS上运行文件时.sh文件,dockerfile是用于创建镜像的,yaml文件是执行镜像文件的。

在windows上运行Runjar.bat访问浏览器.

G:

CD G:/apk/demo

java -jar k8s-demo-0.0.1.jar

(11) 在centOS上创建一个demo文件夹.将jar包放到demo文件夹中,

创建一个demo.sh文件,编辑demo.sh文件,将下方内容复制到demo.sh文件中,红色文字代表项目jar包,启动方式./demo.sh

#!/bin/bash

DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"

JAVA_OPT="-Xmx4000m"

##执行的应用

APP_NAME=k8s-demo-0.0.1.jar

#使用说明,用来提示输入参数

usage() {

    echo "Usage: sh exchange.sh [start|stop|restart|status]"

    exit 1

}

#检查程序是否在运行

is_exist(){

  pid=`ps -ef|grep $APP_NAME|grep java |grep -v grep|awk '{print $2}'`

  #如果不存在返回1,存在返回0     

  if [ -z "${pid}" ]; then

   return 1

  else

    return 0

  fi

}

#启动方法

start(){

  is_exist

  if [ $? -eq 0 ]; then

    echo "${APP_NAME} is already running. pid=${pid}"

  else

    nohup java ${JAVA_OPT} -jar ${APP_NAME} &

  fi

}

#停止方法

stop(){

  is_exist

  if [ $? -eq "0" ]; then

    kill -9 $pid

    echo "${APP_NAME} has stopped successfully"

  else

    echo "${APP_NAME} is not running"

  fi  

}

#输出运行状态

status(){

  is_exist

  if [ $? -eq "0" ]; then

    echo "${APP_NAME} is running. Pid is ${pid}"

  else

    echo "${APP_NAME} is NOT running."

  fi

}

#重启

restart(){

  stop

  sleep 5

  start

}

#根据输入参数,选择执行对应方法,不输入则执行使用说明

case "$1" in

  "start")

    start

    ;;

  "stop")

    stop

    ;;

  "status")

    status

    ;;

  "restart")

    restart

    ;;

  *)

    usage

    ;;

esac

(12) 设置文件权限,并运行文件,在浏览器上访问,记住我们设置的项目端口号.访问的是虚拟机IP

chmod +x demo.sh

然后运行文件

./demo.sh start

(13)关闭项目

[root@master demo]# ./demo.sh stop

k8s-demo-0.0.1.jar has stopped successfully

(14)修改Dockerfile,先创建一个Dockerfile文件,放到虚拟机demo文件夹内

#基础镜像jdk

FROM java:8

#指定维护者信息

MAINTAINER wangpeng

#挂载的路径

VOLUME /tmp

#将jar打入镜像之中

ADDk8s-demo-0.0.1.jar demo.jar

#容器向外暴露的端口 此端口没用

#EXPOSE 8999

#入口命令,执行jar

ENTRYPOINT ["java","-jar","/demo.jar"]

(15) 通过docker命令创建镜像.docker build 创建的意思 -t (tag)的意思 打成镜像名称 wangpeng/demo, 版本号 v0.0.1  后面的. 代表当前目录上.

docker build -t wangpeng/demo:v0.0.1 .

(16)通过docker命令查看镜像

docker iamges

成功生成一个wangpeng/demo:v0.0.1版本的镜像

(17) 编写yaml文件,创建一个demo.yaml文件.注意yml文件格式,层级结构

apiVersion: v1

kind: ReplicationController

metadata:

name: k8s-demo

spec:

replicas: 1

selector:

   app: k8s-demo

template:

   metadata:

     labels:

       app: k8s-demo

   spec:

     containers:

     - name: cipher

 #选择镜像文件名称

       image: wangpeng/demo:v0.0.1

       #默认在本机找镜像

imagePullPolicy: IfNotPresent

---

apiVersion: v1

kind: Service

metadata:

name: k8s-demo

spec:

#使用NodePort端口

type: NodePort

ports:

  #原来项目设置的端口

- port: 9999

   targetPort: 9999

   #设置访问端口为30100 ,可以自己设置

   nodePort: 30100

selector:

   app: k8s-demo

(18)通过docker命令运行yaml文件

kubectl create -f demo.yaml

访问项目时,无法找到

并且项目的demo,pode状态为Pending时,执行以下内容

kubectl taint nodes --all node-role.kubernetes.io/master-

(19) 是否允许master节点上部署pod

允许master节点部署pod

kubectl taint nodes --all node-role.kubernetes.io/master-

如果不允许调度

kubectl taint nodes master1 node-role.kubernetes.io/master=:NoSchedule

污点可选参数

      NoSchedule: 一定不能被调度

      PreferNoSchedule: 尽量不要调度

      NoExecute: 不仅不会调度, 还会驱逐Node上已有的Pod

忽略错误就可以

(20)访问项目

完毕

相关文章

  • k8s-6:k8s+springBoot项目

    百度网盘链接:https://pan.baidu.com/s/1ZL07VO3ysXpyr5qMpMEHiw提取码...

  • k8s-7:k8s+springboot项目升级,降级

    百度网盘链接:https://pan.baidu.com/s/1ZL07VO3ysXpyr5qMpMEHiw提取码...

  • 项目,项目

    现在是下午2:26,准备出去见客户,生命不是在于运动,是在于奔跑!有时候真的挺累的。大部分人都说顾客是上帝。但很明...

  • 项目、项目组合、项目集

    项目组合、项目集、项目 项目组合可包含项目组合(portfolio)、项目集(program)、项目 项目集可包含...

  • 项目找项目

    一位小蘑菇弱弱地问我,怎么找项目啊?我忽然想起昨天写的《让书推荐书》,灵机一动:“让项目找项目。”又开始...

  • 标题

    你好 现在还好吗?情调item 项目 项目子项目子项目 项目 项目 这是什么 项目 项目 还好吗?

  • 2018-05-28

    项目流程 项目启动 (开通告知) 项目规划 (业务访谈) 项目执行 (项目培训) 项目监控 (数据录入) 项目收尾...

  • 14-项目管理辅助知识

    立项管理 大纲 项目建议书 项目可行性研究(项目论证、项目评估) 项目审批 项目招投标 项目合同谈判与签订 项目建...

  • markdown 学习

    MarkDown 学习 无序列表: 项目1 项目2 项目3 有序列表: 项目1 项目2 项目3

  • Django项目——创建项目

    前提:Python3 、pip 、PyCharm客户端 都已经安装好了。方法百度一下。 1.安装Django 我的...

网友评论

      本文标题:k8s-6:k8s+springBoot项目

      本文链接:https://www.haomeiwen.com/subject/rqxkphtx.html