最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何把Spring Cloud Data Flow部署在Kubernetes上

 更新時間:2020年08月03日 09:21:44   作者:南瓜慢說  
這篇文章主要介紹了把Spring Cloud Data Flow部署在Kubernetes上,再跑個任務(wù)試試,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

1 前言

Spring Cloud Data Flow在本地跑得好好的,為什么要部署在Kubernetes上呢?主要是因為Kubernetes能提供更靈活的微服務(wù)管理;在集群上跑,會更安全穩(wěn)定、更合理利用物理資源。

Spring Cloud Data Flow入門簡介請參考:Spring Cloud Data Flow初體驗,以Local模式運行

2 部署Data Flow到Kubernetes

以簡單為原則,我們依然是基于Batch任務(wù),不部署與Stream相關(guān)的組件。

2.1 下載GitHub代碼

我們要基于官方提供的部署代碼進行修改,先把官方代碼clone下來:

$ git clone https://github.com/spring-cloud/spring-cloud-dataflow.git

我們切換到最新穩(wěn)定版本的代碼版本:

$ git checkout v2.5.3.RELEASE

2.2 創(chuàng)建權(quán)限賬號

為了讓Data Flow Server有權(quán)限來跑任務(wù),能在Kubernetes管理資源,如新建Pod等,所以要創(chuàng)建對應(yīng)的權(quán)限賬號。這部分代碼與源碼一致,不需要修改:

(1)server-roles.yaml

kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
 name: scdf-role
rules:
 - apiGroups: [""]
 resources: ["services", "pods", "replicationcontrollers", "persistentvolumeclaims"]
 verbs: ["get", "list", "watch", "create", "delete", "update"]
 - apiGroups: [""]
 resources: ["configmaps", "secrets", "pods/log"]
 verbs: ["get", "list", "watch"]
 - apiGroups: ["apps"]
 resources: ["statefulsets", "deployments", "replicasets"]
 verbs: ["get", "list", "watch", "create", "delete", "update", "patch"]
 - apiGroups: ["extensions"]
 resources: ["deployments", "replicasets"]
 verbs: ["get", "list", "watch", "create", "delete", "update", "patch"]
 - apiGroups: ["batch"]
 resources: ["cronjobs", "jobs"]
 verbs: ["create", "delete", "get", "list", "watch", "update", "patch"]

(2)server-rolebinding.yaml

kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
 name: scdf-rb
subjects:
- kind: ServiceAccount
 name: scdf-sa
roleRef:
 kind: Role
 name: scdf-role
 apiGroup: rbac.authorization.k8s.io

(3)service-account.yaml

apiVersion: v1
kind: ServiceAccount
metadata:
 name: scdf-sa

執(zhí)行以下命令,創(chuàng)建對應(yīng)賬號:

$ kubectl create -f src/kubernetes/server/server-roles.yaml 
$ kubectl create -f src/kubernetes/server/server-rolebinding.yaml 
$ kubectl create -f src/kubernetes/server/service-account.yaml 

執(zhí)行完成后,可以檢查一下:

$ kubectl get role
NAME AGE
scdf-role 119m

$ kubectl get rolebinding
NAME AGE
scdf-rb 117m

$ kubectl get serviceAccount
NAME SECRETS AGE
default 1  27d
scdf-sa 1  117m

2.3 部署MySQL

可以選擇其它數(shù)據(jù)庫,如果本來就有數(shù)據(jù)庫,可以不用部署,在部署Server的時候改一下配置就好了。這里跟著官方的Guide來。為了保證部署不會因為鏡像下載問題而失敗,我提前下載了鏡像:

$ docker pull mysql:5.7.25

MySQLyaml文件也不需要修改,直接執(zhí)行以下命令即可:

$ kubectl create -f src/kubernetes/mysql/

執(zhí)行完后檢查一下:

$ kubectl get Secret
NAME   TYPE     DATA AGE
default-token-jhgfp kubernetes.io/service-account-token 3 27d
mysql   Opaque    2 98m
scdf-sa-token-wmgk6 kubernetes.io/service-account-token 3 123m

$ kubectl get PersistentVolumeClaim
NAME STATUS VOLUME     CAPACITY ACCESS MODES STORAGECLASS AGE
mysql Bound pvc-e95b495a-bea5-40ee-9606-dab8d9b0d65c 8Gi RWO  hostpath 98m

$ kubectl get Deployment
NAME  READY UP-TO-DATE AVAILABLE AGE
mysql  1/1 1  1  98m

$ kubectl get Service
NAME  TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
mysql  ClusterIP 10.98.243.130 <none> 3306/TCP 98m

2.4 部署Data Flow Server

2.4.1 修改配置文件server-config.yaml

刪除掉不用的配置,主要是PrometheusGrafana的配置,結(jié)果如下:

apiVersion: v1
kind: ConfigMap
metadata:
 name: scdf-server
 labels:
 app: scdf-server
data:
 application.yaml: |-
 spring:
 cloud:
 dataflow:
  task:
  platform:
  kubernetes:
  accounts:
   default:
   limits:
   memory: 1024Mi
 datasource:
 url: jdbc:mysql://${MYSQL_SERVICE_HOST}:${MYSQL_SERVICE_PORT}/mysql
 username: root
 password: ${mysql-root-password}
 driverClassName: org.mariadb.jdbc.Driver
 testOnBorrow: true
 validationQuery: "SELECT 1"

2.4.2 修改server-svc.yaml

因為我是本地運行的Kubernetes,所以把Service類型從LoadBalancer改為NodePort,并配置端口為30093

kind: Service
apiVersion: v1
metadata:
 name: scdf-server
 labels:
 app: scdf-server
 spring-deployment-id: scdf
spec:
 # If you are running k8s on a local dev box or using minikube, you can use type NodePort instead
 type: NodePort
 ports:
 - port: 80
 name: scdf-server
 nodePort: 30093
 selector:
 app: scdf-server

2.4.3 修改server-deployment.yaml

主要把Stream相關(guān)的去掉,如SPRING_CLOUD_SKIPPER_CLIENT_SERVER_URI配置項:

apiVersion: apps/v1
kind: Deployment
metadata:
 name: scdf-server
 labels:
 app: scdf-server
spec:
 selector:
 matchLabels:
 app: scdf-server
 replicas: 1
 template:
 metadata:
 labels:
 app: scdf-server
 spec:
 containers:
 - name: scdf-server
 image: springcloud/spring-cloud-dataflow-server:2.5.3.RELEASE
 imagePullPolicy: IfNotPresent
 volumeMounts:
  - name: database
  mountPath: /etc/secrets/database
  readOnly: true
 ports:
 - containerPort: 80
 livenessProbe:
  httpGet:
  path: /management/health
  port: 80
  initialDelaySeconds: 45
 readinessProbe:
  httpGet:
  path: /management/info
  port: 80
  initialDelaySeconds: 45
 resources:
  limits:
  cpu: 1.0
  memory: 2048Mi
  requests:
  cpu: 0.5
  memory: 1024Mi
 env:
 - name: KUBERNETES_NAMESPACE
  valueFrom:
  fieldRef:
  fieldPath: "metadata.namespace"
 - name: SERVER_PORT
  value: '80'
 - name: SPRING_CLOUD_CONFIG_ENABLED
  value: 'false'
 - name: SPRING_CLOUD_DATAFLOW_FEATURES_ANALYTICS_ENABLED
  value: 'true'
 - name: SPRING_CLOUD_DATAFLOW_FEATURES_SCHEDULES_ENABLED
  value: 'true'
 - name: SPRING_CLOUD_KUBERNETES_SECRETS_ENABLE_API
  value: 'true'
 - name: SPRING_CLOUD_KUBERNETES_SECRETS_PATHS
  value: /etc/secrets
 - name: SPRING_CLOUD_KUBERNETES_CONFIG_NAME
  value: scdf-server
 - name: SPRING_CLOUD_DATAFLOW_SERVER_URI
  value: 'http://${SCDF_SERVER_SERVICE_HOST}:${SCDF_SERVER_SERVICE_PORT}'
  # Add Maven repo for metadata artifact resolution for all stream apps
 - name: SPRING_APPLICATION_JSON
  value: "{ \"maven\": { \"local-repository\": null, \"remote-repositories\": { \"repo1\": { \"url\": \"https://repo.spring.io/libs-snapshot\"} } } }"
 initContainers:
 - name: init-mysql-wait
 image: busybox
 command: ['sh', '-c', 'until nc -w3 -z mysql 3306; do echo waiting for mysql; sleep 3; done;']
 serviceAccountName: scdf-sa
 volumes:
 - name: database
  secret:
  secretName: mysql

2.4.4 部署Server

完成文件修改后,就可以執(zhí)行以下命令部署了:

# 提前下載鏡像
$ docker pull springcloud/spring-cloud-dataflow-server:2.5.3.RELEASE

# 部署Data Flow Server
$ kubectl create -f src/kubernetes/server/server-config.yaml 
$ kubectl create -f src/kubernetes/server/server-svc.yaml 
$ kubectl create -f src/kubernetes/server/server-deployment.yaml 

執(zhí)行完成,沒有錯誤就可以訪問:http://localhost:30093/dashboard/

3 運行一個Task

檢驗是否部署成功最簡單的方式就是跑一個任務(wù)試試。還是按以前的步驟,先注冊應(yīng)用,再定義Task,然后執(zhí)行。

我們依舊使用官方已經(jīng)準備好的應(yīng)用,但要注意這次我們選擇是的Docker格式,而不是jar包了。

成功執(zhí)行后,查看KubernetesDashboard,能看到一個剛創(chuàng)建的Pod

4 總結(jié)

本文通過一步步講解,把Spring Cloud Data Flow成功部署在了Kubernetes上,并成功在Kubenetes上跑了一個任務(wù),再也不再是Local本地單機模式了。

到此這篇關(guān)于把Spring Cloud Data Flow部署在Kubernetes上,再跑個任務(wù)試試的文章就介紹到這了,更多相關(guān)把Spring Cloud Data Flow部署在Kubernetes上,再跑個任務(wù)試試內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java計算球從100米高度自由落下問題

    Java計算球從100米高度自由落下問題

    這篇文章主要介紹了Java球從100米高度自由落下問題,需要的朋友可以參考下
    2017-02-02
  • java實現(xiàn)簡單學(xué)生成績管理系統(tǒng)

    java實現(xiàn)簡單學(xué)生成績管理系統(tǒng)

    這篇文章主要為大家詳細介紹了java實現(xiàn)簡單學(xué)生成績管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Java GZip 基于內(nèi)存實現(xiàn)壓縮和解壓的方法

    Java GZip 基于內(nèi)存實現(xiàn)壓縮和解壓的方法

    這篇文章主要介紹了Java GZip 基于內(nèi)存實現(xiàn)壓縮和解壓的方法,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-08-08
  • Java中的HashMap和Hashtable區(qū)別解析

    Java中的HashMap和Hashtable區(qū)別解析

    這篇文章主要介紹了Java中的HashMap和Hashtable區(qū)別解析,HashMap和Hashtable都實現(xiàn)了Map接口,但決定用哪一個之前先要弄清楚它們之間的區(qū)別,主要的區(qū)別有線程安全性、同步和速度,需要的朋友可以參考下
    2023-11-11
  • SpringBoot帶你實現(xiàn)一個點餐小程序

    SpringBoot帶你實現(xiàn)一個點餐小程序

    有個小伙伴臨時找到我,要開發(fā)一個點餐的系統(tǒng),時間比較著急,給了2天的時間。馬馬虎虎的搞出來了,頭發(fā)掉了一撮!下面介紹下本系統(tǒng),感興趣的小伙伴,可以參考開發(fā)下
    2022-07-07
  • Java項目自動生成接口文檔教程

    Java項目自動生成接口文檔教程

    本文主要介紹了Java項目自動生成接口文檔教程,包含使用Apifox插件從IDEA生成的文檔,具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • 解決引入spring-cloud-starter-openfeign后部分類找不到的問題

    解決引入spring-cloud-starter-openfeign后部分類找不到的問題

    這篇文章主要介紹了解決引入spring-cloud-starter-openfeign后部分類找不到的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Spring Boot應(yīng)用配置常用相關(guān)視圖解析器詳解

    Spring Boot應(yīng)用配置常用相關(guān)視圖解析器詳解

    這篇文章主要給大家介紹了關(guān)于Spring Boot應(yīng)用配置常用相關(guān)視圖解析器的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-12-12
  • SpringBoot 整合 Shiro 密碼登錄的實現(xiàn)代碼

    SpringBoot 整合 Shiro 密碼登錄的實現(xiàn)代碼

    這篇文章主要介紹了SpringBoot 整合 Shiro 密碼登錄的實現(xiàn),本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-02-02
  • JAVA?拷貝文件的幾種方式小結(jié)

    JAVA?拷貝文件的幾種方式小結(jié)

    本文主要介紹了JAVA拷貝文件的幾種方式,包含普通拷貝,mmap內(nèi)存映射的方式拷貝,零拷貝sendFile方式實現(xiàn)和多線程的方式實現(xiàn)拷貝,具有一定的參考價值,感興趣的可以了解一下
    2024-03-03

最新評論

夏河县| 九寨沟县| 南乐县| 福安市| 内丘县| 聂拉木县| 浠水县| 大同市| 乡城县| 舒兰市| 财经| 开封县| 体育| 石楼县| 福泉市| 岚皋县| 湘西| 舒城县| 仙桃市| 龙门县| 大姚县| 邯郸县| 靖宇县| 磐安县| 南丰县| 咸宁市| 博野县| 阿城市| 岗巴县| 涡阳县| 龙陵县| 广宁县| 广昌县| 冀州市| 若尔盖县| 吴江市| 关岭| 潼关县| 团风县| 元阳县| 丰县|