19.容器交付介紹

隨遇而安==發表於2022-03-13

如何在k8s叢集中部署Java專案

1.容器交付流程

  • 開發程式碼階段
    • 編寫程式碼
    • 編寫Dockerfile【打映象做準備】
  • 持續交付/整合
    • 程式碼編譯打包
    • 製作映象
    • 上傳映象倉庫
  • 應用部署
    • 環境準備
    • Pod
    • Service
    • Ingress
  • 運維
    • 監控
    • 故障排查
    • 應用升級

2.k8s部署Java專案流程

  • 製作映象【Dockerfile】
  • 上傳到映象倉庫【Dockerhub、阿里雲、網易】
  • 控制器部署映象【Deployment】
  • 對外暴露應用【Service、Ingress】
  • 運維【監控、升級】

3.k8s部署Java專案

準備Java專案

第一步,準備java專案,把java進行打包【jar包或者war包】

3.1 依賴環境

在打包java專案的時候,我們首先需要兩個環境

  • java環境【JDK】
  • maven環境

然後把java專案打包成jar包

mvn clean install

3.2 編寫Dockerfile檔案

Dockerfile 內容如下所示

FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD ./target/demojenkins.jar demojenkins.jar
ENTRYPOINT ["java","-jar","/demojenkins.jar", "&"]

3.3 製作映象

在我們建立好Dockerfile檔案後,我們就可以製作映象了

我們首先將我們的專案,放到我們的伺服器上

然後執行下面命令打包映象

docker build -t java-demo-01:latest .

等待一段後,即可製作完成我們的映象

最後通過下面命令,即可檢視我們的映象了

docker images;

3.4 啟動映象

在我們製作完成映象後,我們就可以啟動我們的映象了

docker run -d -p 8111:8111 java-demo-01:latest -t

啟動完成後,我們通過瀏覽器進行訪問,即可看到我們的java程式

http://192.168.177.130:8111/user

3.5推送映象

下面我們需要將我們製作好的映象,上傳到映象伺服器中【阿里雲、DockerHub】

首先我們需要到 阿里雲 容器映象服務,然後開始建立映象倉庫

然後選擇本地倉庫

我們點選我們剛剛建立的映象倉庫,就能看到以下的資訊

3.4.1 登入映象伺服器

使用命令登入

docker login --username=XXXXXXX@163.com registry.cn-shenzhen.aliyuncs.com

然後輸入剛剛我們開放時候的註冊的密碼

3.4.2 映象新增版本號

下面為我們的映象新增版本號

# 例項
docker tag [ImageId] registry.cn-shenzhen.aliyuncs.com/mogublog/java-project-01:[映象版本號]

# 舉例
docker tag 33f11349c27d registry.cn-shenzhen.aliyuncs.com/mogublog/java-project-01:1.0.0

操作完成後

3.4.3 推送映象

在我們新增版本號資訊後,我們就可以推送我們的映象到阿里雲了

docker push registry.cn-shenzhen.aliyuncs.com/mogublog/java-project-01:1.0.0

操作完成後,我們在我們的阿里雲映象服務,就能看到推送上來的映象了

3.5 控制器部署映象

在我們推送映象到伺服器後,就可以通過控制器部署映象了

首先我們需要根據剛剛的映象,匯出yaml

# 匯出yaml
kubectl create deployment  javademo1 --image=registry.cn-
shenzhen.aliyuncs.com/mogublog/java-project-01:1.0.0 --dry-run -o yaml > javademo1.yaml

匯出後的 javademo1.yaml 如下所示

apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app: javademo1
  name: javademo1
spec:
  replicas: 1
  selector:
    matchLabels:
      app: javademo1
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: javademo1
    spec:
      containers:
      - image: registry.cn-shenzhen.aliyuncs.com/mogublog/java-project-01:1.0.0
        name: java-project-01
        resources: {}
status: {}

然後通過下面命令,通過yaml建立我們的deployment

# 建立
kubectl apply -f javademo1.yaml
# 檢視 pods

或者我們可以進行擴容,多建立幾個副本

kubectl scale deployment javademo1 --replicas=3

然後我們還需要對外暴露埠【通過service 或者 Ingress】

# 對外暴露埠
kubectl expose deployment javademo1 --port=8111  --target-port=8111 --type=NodePort
# 檢視對外埠號
kubectl get svc

然後通過下面的地址訪問

# 對內訪問
curl http://10.106.103.242:8111/user
# 對外訪問
http://192.168.177.130:32190/user

運維

....

相關文章