Kubernetes集羣搭建之後如何部署應用

分爲兩步:

  1. 製作鏡像
  2. k8s 集羣中發佈 Deployment

 

以java後端程序爲例

  1. 首先將程序打包
  2. 編寫Dockerfile
  3. 編寫app yaml
  4. 編寫外部訪問service

 

可以像我這樣將jar包和Dockerfile放在同一個目錄下

編寫Dockerfile
#基礎鏡像,如果本地倉庫沒有,會從遠程倉庫拉取
FROM openjdk:8-jdk-alpine
#會把app.jar放在docker image的根目錄下
ADD td-backup-server-0.0.1-SNAPSHOT.jar app.jar
#聲明可以用這個端口
EXPOSE 8080
#指定容器啓動時要執行的命令
ENTRYPOINT ["java","-jar","/app.jar"]


執行命令生成鏡像
docker build -t server .


編寫tdbackup.yaml 
apiVersion: v1
kind: Service
metadata:
  name: tdbackupserver
  namespace: default
  labels:
    app: tdbackupserver
spec:
  type: NodePort
  ports:
  - port: 8080
    nodePort: 30090 #service對外開放端口
  selector:
    app: tdbackupserver
---
apiVersion: apps/v1
kind: Deployment #對象類型
metadata:
  name: tdbackupserver #名稱
  labels:
    app: tdbackupserver #標註 
spec:
  replicas: 2 #運行容器的副本數,修改這裏可以快速修改分佈式節點數量
  selector:
    matchLabels:
      app: tdbackupserver
  template:
    metadata:
      labels:
        app: tdbackupserver
    spec:
      containers: #docker容器的配置
      - name: tdbackupserver
        image: tdbackup:latest # pull鏡像的地址 ip:prot/dir/images:tag
        imagePullPolicy: IfNotPresent #pull鏡像時機,
        ports:
        - containerPort: 8080 #容器對外開放端口

暴露service
kubectl create -f tdbackup.yaml 


編寫mysql-pro.yaml
apiVersion: v1
kind: Service
metadata:
  name: mysql-production
spec:
  ports:
    - port: 3306
---
kind: Endpoints
apiVersion: v1
metadata:
  name: mysql-production
  namespace: default
subsets:
  - addresses:
      - ip: 123.123.123.33
    ports:
      - port: 3306

修改數據庫連接字符串
    url: jdbc:mysql:// mysql-production:3310/tdBackupServer?useUnicode=true&characterEncoding=utf8&useSSL=false&useLegacyDatetimeCode=false&serverTimezone=UTC&createDatabaseIfNotExist=true


使用endpoint連接外部集羣
kubectl create -f mysql-pro.yaml 

任意節點ip + 30090測試 #service對外開放端口

 

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