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

GKE+Argo workflow

Hiroki Matsumoto
January 24, 2020
450

GKE+Argo workflow

Hiroki Matsumoto

January 24, 2020
Tweet

More Decks by Hiroki Matsumoto

Transcript

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

    View full-size slide

  2. Kubernetes Sapporo for Beginners
    自己紹介
    松本 宏紀 ( まつもと ひろき )
    ● Kubernetes Sapporo for Beginners主催者。
    ● チーフ・アーキテクト
    ● オフショアラボ・チームリーダー
    ● デブサミ2019「Spring Bootでマイクロサービス作って苦労したお話」発表。
    ● Google Cloud Next ‘19 in Tokyo 「大規模エンタープライズ システムをマイクロ サービスで刷新。その開発プロセス再定義まで
    道のり」登壇
    Twitter:@hirokimatsumo13

    View full-size slide

  3. Kubernetes Sapporo for Beginners
    今日のお話
    GKEを使ってJob基盤を作ろうとして
    Managed Serviceな範囲でハマった

    View full-size slide

  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するためのツール。

    View full-size slide

  5. Kubernetes Sapporo for Beginners
    Argo Workflow

    View full-size slide

  6. Kubernetes Sapporo for Beginners
    Argo Workflow

    View full-size slide

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

    View full-size slide

  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されたログを表示するように改良。

    View full-size slide

  9. Kubernetes Sapporo for Beginners
    How to Use
    負荷状況に合わせて、 Nodeを水平スケールアウト するようにしている。
    Podの起動要求が多くなり、物理的
    なリソースが足りなくなると、Node
    が追加される。

    View full-size slide

  10. Kubernetes Sapporo for Beginners
    すごい。
    Cloud Nativeっぽい。

    View full-size slide

  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

    View full-size slide

  12. Kubernetes Sapporo for Beginners
    問題1
    Master (Controle Plane)が火を吹いてた。
    Managed Service

    View full-size slide

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

    View full-size slide

  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

    View full-size slide

  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の権限確認を行なっている。

    View full-size slide

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

    View full-size slide

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

    View full-size slide