從0開始入手k8s部署springboot應用

1、開發環境

    1.1  操作系統win10,  開啓虛擬化

    1.2 eclipse, jdk1.8,maven 3

     1.3  docker, kubernetes、kubectl

2、創建spring boot工程

   該工程提供一個hello world服務,訪問http://localhost:8080/hello,瀏覽器顯示hello world

3、創建Dockerfile

     /example.spring.docker/src/main/docker/Dockerfile的內容如下:

FROM java:8
MAINTAINER [email protected]

RUN groupadd appuser
RUN useradd -g appuser apprun

ADD example.spring.docker*.jar /opt/app.jar
ADD entrypoint.sh  /opt/entrypoint.sh

RUN chown -R apprun:appuser /opt 
RUN chmod a+x /opt/entrypoint.sh

USER apprun
WORKDIR /opt/
RUN mkdir /opt/applog

VOLUME /tmp

ENV JAVA_OPTS=""
ENTRYPOINT [ "/bin/sh", "/opt/entrypoint.sh" ]
 

/example.spring.docker/src/main/docker/entrypoint.sh的內容如下:

#!/bin/bash
java $JAVA_OPTS  -jar ./app.jar

4、修改pom.xml

添加docker-maven-plugin插件,可以使用maven命令生產docker image

<plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                 <version>1.0.0</version>
                <configuration>
                    <imageName>${docker.image.prefix}/${project.artifactId}</imageName>
                    <imageTags>
                       <imageTag>${app.version}</imageTag>
                    </imageTags>
                    <dockerDirectory>src/main/docker</dockerDirectory>
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <directory>${project.build.directory}</directory>
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                </configuration>
            </plugin>

5、打包應用鏡像

mvn clean package docker:build
 

6、編寫k8s配置文件
k8s-springboot-test.yaml

apiVersion: v1  
kind: Service  
metadata:  
  name: k8s-springboot-demo
  namespace: default
  labels:  
    app: k8s-springboot-demo
spec:
  type: NodePort  
  ports:  
    - port: 8080  
      nodePort: 30090 
  selector:  
    app: k8s-springboot-demo 
  
---
apiVersion: apps/v1 
kind: Deployment  
metadata:  
  name: k8s-springboot-demo  
  labels:  
    app: k8s-springboot-demo  
spec:  
  replicas: 3
  revisionHistoryLimit: 10
  selector:  
    matchLabels:  
      app: k8s-springboot-demo 
  template:  
    metadata:  
      labels:  
        app: k8s-springboot-demo  
    spec:  
      containers:  
      - name: k8s-springboot-demo
        image: lzw/example.spring.docker:latest
        ports:  
        - containerPort: 8080
          protocol: TCP  
        livenessProbe:  
          httpGet:  
            path: /  
            port: 8080  
          initialDelaySeconds: 30  
          timeoutSeconds: 30  
        imagePullPolicy: IfNotPresent  

 7、創建部署
kubectl create -f k8s-springboot-test.yaml
kubectl delete -f k8s-springboot-test.yaml

8、進入k8s控制檯查看

  可以看到起了3個容器

9、瀏覽器訪問容器服務

http://localhost:30090/hello

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章