本篇文章給大家分享的是有關(guān)kubernates中怎么部署springboot,小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
在封丘等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì) 網(wǎng)站設(shè)計(jì)制作按需網(wǎng)站開發(fā),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站建設(shè),營銷型網(wǎng)站建設(shè),外貿(mào)網(wǎng)站建設(shè),封丘網(wǎng)站建設(shè)費(fèi)用合理。
1、創(chuàng)建一個(gè)Springboot應(yīng)用
List-1.1
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class HelloController { @RequestMapping(value = "/") public String hello(){ System.out.println("hello方法"); return "Hello, k8s!"; } }
之后mvn clean package,打包,得到app.jar,和Dockerfile放在同一個(gè)目錄下
List-1.2
mjduan@mjduan-ubuntu:/opt/software/docker/springboot-k8s$ ll total 676796 drwxr-xr-x 2 mjduan mjduan 4096 2月 15 15:43 ./ drwxr-xr-x 4 mjduan mjduan 4096 2月 15 15:30 ../ -rw-r--r-- 1 mjduan mjduan 16674428 2月 15 15:31 app.jar -rw-r--r-- 1 mjduan mjduan 362 2月 15 15:37 Dockerfile
Dockerfile的內(nèi)容為
List-2.1
FROM openjdk:8 ADD app.jar /opt/app/app.jar RUN bash -c 'touch /opt/app/app.jar' # 開放8080端口 EXPOSE 8080 ENV TZ=Asia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone # 配置容器啟動(dòng)后執(zhí)行的命令 ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/opt/app/app.jar"]
之后執(zhí)行命令來得到鏡像
List-2.2
mjduan@mjduan-ubuntu:/opt/software/docker/springboot-k8s$ docker build -t hello:1.0 .
之后將這個(gè)鏡像放到k8s的master和倆個(gè)node上,這里我是先用
docker save hello:1.0>hello.tar
命令得到文件hello.tar,之后將hello.tar用scp命令傳到k8s的master和倆個(gè)node上。
之后在k8s的master和倆個(gè)node上,執(zhí)行如下命令得到鏡像hello:1.0
docker load -i hello.tar
4、kubernates上部署
好了,上述步驟完成后,在k8s的master上創(chuàng)建yaml文件
[root@localhost mjduan]# vi /data/mjduan/hello.yaml
hello.yaml的內(nèi)容如下
apiVersion: apps/v1beta2 kind: Deployment metadata: name: example-demo3 labels: app: example-demo3 spec: replicas: 1 revisionHistoryLimit: 10 selector: matchLabels: app: example-demo3 template: metadata: labels: app: example-demo3 spec: containers: - name: example-demo3 #image名稱是我們的hello:1.0 image: hello:1.0 ports: - containerPort: 8080 protocol: TCP livenessProbe: httpGet: path: / port: 8080 initialDelaySeconds: 30 timeoutSeconds: 30 imagePullPolicy: Never # Comment the following tolerations if Dashboard must not be deployed on master tolerations: - key: node-role.kubernetes.io/master effect: NoSchedule --- apiVersion: v1 kind: Service metadata: name: example-demo3 labels: app: example-demo3 spec: ports: - port: 8080 targetPort: 8080 selector: app: example-demo3 type: NodePort
部署Docker image,命令如下
[root@localhost mjduan]# kubectl create -f hello.yaml deployment.apps/example-demo3 created service/example-demo3 created
查看pod信息,如下
[root@localhost mjduan]# kubectl get pods NAME READY STATUS RESTARTS AGE example-demo3-746fc684df-h5dpq 1/1 Running 0 10s
查看service,如下,NAME為example-demo3的那個(gè)就是我們剛剛部署的,端口映射是宿主機(jī)的32300對應(yīng)到容器的8080
[root@localhost mjduan]# kubectl get services NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE example-demo3 NodePort 10.107.189.1278080:32300/TCP 1m kubernetes ClusterIP 10.96.0.1 443/TCP 2h
訪問服務(wù)
[root@localhost mjduan]# curl http://k8s.master:32300 Hello, k8s!
以上就是kubernates中怎么部署springboot,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見到或用到的。希望你能通過這篇文章學(xué)到更多知識(shí)。更多詳情敬請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。