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

GKE+Argo workflow

Hiroki Matsumoto
January 24, 2020
390

GKE+Argo workflow

Hiroki Matsumoto

January 24, 2020
Tweet

Transcript

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

    View Slide

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

    View Slide

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

    View 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 Slide

  5. Kubernetes Sapporo for Beginners
    Argo Workflow

    View Slide

  6. Kubernetes Sapporo for Beginners
    Argo Workflow

    View Slide

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

    View 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 Slide

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

    View Slide

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

    View 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 Slide

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

    View Slide

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

    View 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 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 Slide

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

    View Slide

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

    View Slide