Kubernetes中部署Spring Boot專案(七)

童話述說我的結局 發表於 2022-01-26
Spring Kubernetes

這個springboot專案打包過程我就不說了,很基礎;下面我直接從寫Dockerfile檔案開始,如果不知道Dockerfile檔案是什麼的可以去看下我寫的幾篇docker的文章

一、建立資料夾

mkdir springboot-demo
cd springboot-demo

二、建立Dockerfile檔案

vi Dockerfile

將下面檔案複製進去

ROM openjdk:8-jre-alpine
COPY springboot-demo-0.0.1-SNAPSHOT.jar /springboot-demo.jar
ENTRYPOINT ["java","-jar","/springboot-demo.jar"]

三、根據Dockerfile建立image

docker build -t springboot-demo-image .

四、使用docker run建立container

docker run -d --name s1 springboot-demo-image

五、訪問測試

docker inspect s1
curl ip:8080/k8s

六、將映象推送到映象倉庫

我自己電腦沒有建立私服的映象倉庫,所以我上傳到我自己的阿里雲映象倉庫了,如果想建立私服也可以看我的docker文章,裡面也有說明怎麼建立

登入阿里雲映象倉庫

docker login [email protected] registry.cn-hangzhou.aliyuncs.com

打tag標籤

docker tag springboot-demo-image:v1.0 ghy/springboot-demo-image:v1.0

上傳阿里雲

docker push ghy/springboot-demo-image:v1.0

七、編寫Kubernetes配置檔案

vi springboot-demo.yaml
# 以Deployment部署Pod
apiVersion: apps/v1
kind: Deployment
metadata: 
  name: springboot-demo
spec: 
  selector: 
    matchLabels: 
      app: springboot-demo
  replicas: 1
  template: 
    metadata:
      labels: 
        app: springboot-demo
    spec: 
      containers: 
      - name: springboot-demo
        image: ghy/springboot-demo-image:v1.0
        ports: 
        - containerPort: 8080
---
# 建立Pod的Service
apiVersion: v1
kind: Service
metadata: 
  name: springboot-demo
spec: 
  ports: 
  - port: 80
    protocol: TCP
    targetPort: 8080
  selector: 
    app: springboot-demo
---
# 建立Ingress,定義訪問規則,一定要記得提前建立好nginx ingress controller
apiVersion: extensions/v1beta1
kind: Ingress
metadata: 
  name: springboot-demo
spec: 
  rules: 
  - host: k8s.demo
    http: 
      paths: 
      - path: /
        backend: 
          serviceName: springboot-demo
          servicePort: 80

執行命令執行指令碼

kubectl apply -f springboot-demo.yaml

八、檢視資源

檢視資源命令

kubectl get pods
kubectl get pods -o wide
kubectl get svc

檢視訪問的域名,會看到hosts上的域名

kubectl get ingress

九、win配置hosts檔案

 192.168.0.61 k8s.demo

十、win瀏覽器訪問

http://k8s.demo/介面