GKE+Argo workflow

829e112d84c7c719c123d52b69fba5f0?s=47 Hiroki Matsumoto
January 24, 2020
52

GKE+Argo workflow

829e112d84c7c719c123d52b69fba5f0?s=128

Hiroki Matsumoto

January 24, 2020
Tweet

Transcript

  1. Kubernetes Sapporo for Beginners GKE上での開発・運用でハマったお話 ~ GKE + Argo Workflow

  2. Kubernetes Sapporo for Beginners 自己紹介 松本 宏紀 ( まつもと ひろき

    ) • Kubernetes Sapporo for Beginners主催者。 • チーフ・アーキテクト • オフショアラボ・チームリーダー • デブサミ2019「Spring Bootでマイクロサービス作って苦労したお話」発表。 • Google Cloud Next ‘19 in Tokyo 「大規模エンタープライズ システムをマイクロ サービスで刷新。その開発プロセス再定義まで 道のり」登壇 Twitter:@hirokimatsumo13
  3. Kubernetes Sapporo for Beginners 今日のお話 GKEを使ってJob基盤を作ろうとして Managed Serviceな範囲でハマった

  4. Kubernetes Sapporo for Beginners Argo Workflow https://github.com/argoproj/argo • Argo Workflow

    Kubernetes上で動作するContainer NativeなWorkflow Engine。 Custom Resource = Workflowでワークフローを管理できる。 • Argo CD GitOpsでCD(Continuous Delivery)するためのツール。 • Argo Events イベント駆動での開発をするためのイベント管理ツール。 • Argo Rollouts Blue Green Deployments、Canary Releaseするためのツール。
  5. Kubernetes Sapporo for Beginners Argo Workflow

  6. Kubernetes Sapporo for Beginners Argo Workflow

  7. Kubernetes Sapporo for Beginners Customize Argo Workflow Web UIが辛い。 •

    namespace毎に、Workflowをfilterしたい。 • 日時の範囲で絞り込みを行いたい。 • Workflowと各種イベントの発生を、追跡して見れるようにしたい。 • ログはPodのログから取っているので、 Nodeの水平オートスケーラーを利用していると見れなくなってしま う。
  8. Kubernetes Sapporo for Beginners Customize Argo Workflow Web UIが辛い。 •

    namespace毎に、Workflowをfilterしたい。 • 日時の範囲で絞り込みを行いたい。 • Workflowと各種イベントの発生を、追跡して見れるようにしたい。 • ログはPodのログから取っているので、 Nodeの水平オートスケーラーを利用していると見れなくなってしま う。 → 独自でUIを作成。(kubernetesのworkflow、podのAPIをcallして、UIを表示するように改良。 → ログ情報は、BigQueryにexportされたログを表示するように改良。
  9. Kubernetes Sapporo for Beginners How to Use 負荷状況に合わせて、 Nodeを水平スケールアウト するようにしている。

    Podの起動要求が多くなり、物理的 なリソースが足りなくなると、Node が追加される。
  10. Kubernetes Sapporo for Beginners すごい。 Cloud Nativeっぽい。

  11. Kubernetes Sapporo for Beginners 問題1 Javaで動作しているアプリケーションで、偶発的に下記エラーが発生する。 Caused by: java.io.IOException: Unexpected

    Error code 500 trying to get security access token from Compute Engine metadata for the default service account: GKE Metadata Server: Internal Server Error
  12. Kubernetes Sapporo for Beginners 問題1 Master (Controle Plane)が火を吹いてた。 Managed Service

  13. Kubernetes Sapporo for Beginners 解決方法 : 問題1 解決方法は、公開しておりません。 サポートさんに連絡してごにょごにょする。

  14. Kubernetes Sapporo for Beginners 再発する 数週間後…Javaで動作しているアプリケーションで、偶発的に下記エラーが発生する。 Caused by: java.io.IOException: Unexpected

    Error code 500 trying to get security access token from Compute Engine metadata for the default service account: GKE Metadata Server: Internal Server Error
  15. Kubernetes Sapporo for Beginners 問題2 各Nodeに存在するgke-metadata-serverが落ちる。 workflow-pod-xxx workflow-pod-yyy gke-metadata-server-xxx gke-metadata-server

    Workload Identityを有効にしている場合、 gke-metadata-serverを介して、K8Sの ServiceAccountからGCPの権限確認を行なっている。
  16. Kubernetes Sapporo for Beginners 解決方法 : 問題2 解決方法は、公開しておりません。 サポートさんに連絡してごにょごにょする。

  17. Kubernetes Sapporo for Beginners 再試行による担保で大体は救える。 ただ、ある程度の内部の動きの把握も必要。