Upgrade to Pro — share decks privately, control downloads, hide ads and more …

k8sでJob管理@オレシカナイトVol.10

 k8sでJob管理@オレシカナイトVol.10

Wataru Fukunaga

May 24, 2019
Tweet

More Decks by Wataru Fukunaga

Other Decks in Technology

Transcript

  1. 乱⽴するJob JOB名 内容 参照先(コンポーネント) 書き込み先(コンポーネント) vega-ssp-synchrogazer_job.yaml SSPマスタ連携(差分データ) GCS(Abema) ssp-CloudSQL vega-ssp-synchrogazer-full_job.yaml

    SSPマスタ連携(全データ) GCS(Abema) ssp-CloudSQL vega-report-master-ssp_jobs.yaml SSPマスタ連携(cue_point, genre, sub_genre) SSP BigQuery vega-report-master-ganymede_jobs.yaml placement_performance_prediction_stateマスタ連携 Ganymede BigQuery vega-report-master-dmp_jobs.yaml DMPマスタ連携(cluster, cluster_cf, segment_group) DMP BigQuery vega-report-master-callisto_jobs.yaml delivery_setting_stateマスタ連携 Callisto BigQuery vega-report-master-adserver_jobs.yaml Ad Serverマスタ連携(account, ad, etc.) Ad Server BigQuery vega-report-import-tracking-ad_jobs.yaml tracking_adログ取り込み Storage BigQuery vega-report-convert-tracking-ad_jobs.yaml tracking_adログの変換 BigQuery BigQuery vega-report-convert-endad-vega_jobs.yaml end_adログ+vegaマスタ BigQuery(patriot-999, vega-177606) BigQuery vega-report-check-log_jobs.yaml ログ件数の⽐率チェック BigQuery Slack noti vega-pluto-nix_jobs.yaml ユーザーごとの視聴データを取得し、デモグラを類推する BIgQuery GCS vega-hydra-dataflow_jobs.yaml GCSからDataflowをキックするためのjob GCS Bigtable(dmp-instance) vega-ganymede-prediction_jobs.yaml 予測 CloudSQL、BigQuery、BigQuery(patriot-999)、SSP ganymede-CloudSQL、SSP vega-ganymede-achievement_jobs.yaml 実績値作成 BigQuery ganymede-CloudSQL vega-callisto-teppeki_jobs.yaml 空いてるキューポイントの確認 adServer,ssp,dmp callisto-cloudSQL vega-callisto-simple-placement_jobs.yaml 開発本部向けにstgを埋めるバッチ adServer,ssp,dmp,ganymede callisto-cloudSQL vega-callisto-placement_jobs.yaml プレースメントのバッチ adServer,ssp,dmp,tokenServer,ganymede callisto-cloudSQL vega-callisto-placement_every_hour_0m_jobs 毎時0分に起動する1時間おさえる⽤のプレースメントのバッチ adServer,ssp,dmp,tokenServer,ganymede callisto-cloudSQL vega-callisto-placement_every_hour_30m_jobs 毎時30分に起動する1時間おさえる⽤のプレースメントのバッチ adServer,ssp,dmp,tokenServer,ganymede callisto-cloudSQL vega-callisto-placement_half_day_jobs 半⽇分おさえる⽤のプレースメントのバッチ adServer,ssp,dmp,tokenServer,ganymede callisto-cloudSQL vega-callisto-cmchannel-placement_jobs.yaml CmChannelを埋める⽤のバッチ adServer,ssp,dmp callisto-cloudSQL vega-ad-batch_jobs.yaml フィラーが起こらないように配信のフラグチェック Ad server Slack noti vega-third-party-reporter_job.dig 調査会社連携 BigQuery, Ad Server GCS
  2. CronJob apiVersion: batch/v1beta1 kind: CronJob metadata: name: hello spec: schedule:

    "*/1 * * * *" jobTemplate: spec: template: spec: containers: - name: hello image: busybox args: - /bin/sh - -c - date; echo Hello from the Kubernetes cluster restartPolicy: OnFailure
  3. digファイル timezone: Asia/Tokyo schedule: cron>: 5 0 * * *

    sla: duration: 02:00:00 +notice: slack>: longtime-template.yml _export: !include : 'includes/slack.dig’ target_yaml: /vega-kubernetes/${k8s_cluster}/vega/placement_half_day_jobs.yaml +login: sh>: ./gke-login.sh +check-git: sh>: ./check-git.sh +create-job: sh>: "kubectl apply -f ${target_yaml}” +check-job: sh>: "cat ${target_yaml} | ./check-job.sh - placement-half-day-jobs” _error: sh>: "kubectl delete -f ${target_yaml}” +delete-job: sh>: "kubectl delete -f ${target_yaml}” _error: slack>: danger-template.yml
  4. 事前処理 timezone: Asia/Tokyo schedule: cron>: 5 0 * * *

    sla: duration: 02:00:00 +notice: slack>: longtime-template.yml _export: !include : 'includes/slack.dig’ target_yaml: /vega-kubernetes/${k8s_cluster}/vega/placement_half_day_jobs.yaml +login: sh>: ./gke-login.sh +check-git: sh>: ./check-git.sh
  5. 起動から終了 +create-job: sh>: "kubectl apply -f ${target_yaml}” +check-job: sh>: "cat

    ${target_yaml} | ./check-job.sh - placement-half-day-jobs” _error: sh>: "kubectl delete -f ${target_yaml}” +delete-job: sh>: "kubectl delete -f ${target_yaml}” _error: slack>: danger-template.yml
  6. 稼働チェック #!/bin/bash CMDNAME=`basename $0` if [ $# -lt 1 ];

    then echo "Usage: $CMDNAME jobfile [container]" 1>&2 exit 1 fi eval `kubectl describe -f $1 | awk 'NR==1{printf("jobName=%s",$2)}'` while : do eval `kubectl describe jobs $jobName | grep "Pods Statuses:" | awk 'NR==1{printf("Running=%d;Succeeded=%d;Faild=%d",$3,$6,$9)}'` if [ $Running = 0 ]; then if [ $Succeeded = 0 ]; then echo Job Faild. kubectl logs "jobs/$jobName" $2 exit 1 fi echo Job finished. kubectl logs "jobs/$jobName" $2 exit 0 fi echo Job running... sleep 5 done
  7. UI