k8s-6:k8s+springBoot项目

百度网盘链接: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包

          

              org.springframework.boot

              spring-boot-starter

          

          

              org.springframework.boot

              spring-boot-starter-web

          

     

          

              

                   org.springframework.boot

                   spring-boot-maven-plugin

              

              

              

                   org.apache.maven.plugins

                   maven-surefire-plugin

                   

                        true

                   

              

          

     

(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项目)