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

Kubernetes入門#4 About Kubernetes Uses With GKE & EKS

167bb6000c69456d1875607adb1660f3?s=47 hi-rose
September 13, 2019

Kubernetes入門#4 About Kubernetes Uses With GKE & EKS

167bb6000c69456d1875607adb1660f3?s=128

hi-rose

September 13, 2019
Tweet

Transcript

  1. Kubernetes Sapporo for Beginners Kubernetes 入門 #4 ~ Kubernetesをマルチクラウドで運用してみた話~

  2. Kubernetes Sapporo for Beginners 自己紹介 廣瀬 亮輔(Ryosuke Hirose)/@hi-rose • 旭川高専卒業後、札幌で今の会社に就職してシステム開発 •

    2017年4月頃からアーキテクト部署所属 ◦ Kubernetesもその頃から業務利用 ◦ GCP上でWebアプリケーションのバックエンド系基盤開発を担当 ▪ API基盤機能開発 ▪ データマイグレーション系サービス基盤の PJリーダー ▪ クラウド上検証環境の運用 ▪ CIの構築 *普段GCPメインのため、GCP実装ベースでの理解が中心となります 2
  3. Kubernetes Sapporo for Beginners 概要1 • 現在GCPにてGKEを利用したWeb業務アプリケーションが稼働中 • その前身のサーバークライアントシステムのサーバー群がAWSで稼働中 3

    補足:システムに関してのDevelopers Summit登壇スライド https://speakerdeck.com/broadleaf
  4. Kubernetes Sapporo for Beginners 概要2 • AWS→GCPのデータ連携を行うプロジェクトが発足 • AWSにてEKSを利用したデータ連携サービスを構築 •

    GKEとEKSを使ってデータ連携の仕組みを開発したお話 4
  5. Kubernetes Sapporo for Beginners EKS利用の動機 5 • クラウド環境で標準開発しているコンテナベースに実装できる • GCPにてGKE運用を行っており、学習コストが低いこと

    • ManagedなEKSが東京リージョンに来て少し経ったタイミングだったこと • ECSもあるが、Kubernetesの現在の盛り上がりから今後発展するだろうこと • 同一クラスタを使った機能拡張の可能性が高いこと • まだ使っている人も少ないし試しに使ってみよう ◦ EKSがだめでもコンテナで作成したサービスや作成したプログラムは無駄にはならない
  6. Kubernetes Sapporo for Beginners インフラ構成の概要 元々以下のイメージで独立して稼働 6 GCP Elasticsearch Cassandra

    Redis GKEクラスタ 在庫 取引 AWS SQLServer Oracle いろんなサーバーたち システムA(Win) システムB(Linux) : 設定
  7. Kubernetes Sapporo for Beginners インフラ構成の概要こうなった AWS側にデータ連携のためのエージェントプログラムを配置して以下のような構成に 7 GCP Elasticsearch Cassandra

    Redis GKEクラスタ 在庫 取引 AWS SQLServer Oracle いろんなサーバーたち システムA(Win) システムB(Linux) : 連携API EKSクラスタ 連携エージェント いろいろ 設定
  8. Kubernetes Sapporo for Beginners EKS使ってよかったこと 8 • GKEで使用していたService、Workload、ConfigMap/Secretといった、アプリケーション を動かす上で必要な要素の8割方は流用することができた ◦

    サイドカー動作している loggingエージェント等の仕組みもそのまま流用 ◦ もちろん、現在のGKEで動いているアプリケーション自体が特定のクラウドベンダーに依存しすぎず に構築している部分も重要 ◦ StatefulsetsはPersistentVolumeの配置ゾーン・リージョンの関係で少し意識はするかも • クラスタに共通で必要な設定管理のコンテナもそのまま流用できた • 結果的に新しい仕組みの開発作業に集中できた
  9. Kubernetes Sapporo for Beginners EKS使って遭遇したこと 9 • Elasticsearchコンテナが立ち上がらない問題 ◦ クラスタに配置してログの一時保存に利用しているもの

    ◦ 以下のIssueが上がっており、1.11.8にて解消とのことでノードバージョンを更新して解消。当時は 1.11.5を利用していた ▪ https://github.com/awslabs/amazon-eks-ami/pull/206 ◦ 原因としては、特定ノードバージョンの AMIでulimitリソース設定の値が下げられたため • GKE利用時には発生なし。カーネル設定等、クラウドベンダーによって実装が変 わってくる可能性のある部分だなと実感 ◦ 今回はわかりやすく「起動しない」だったが、パフォーマンス面で差異が出るなどは実際に検証しな いとわからない
  10. Kubernetes Sapporo for Beginners EKS使って遭遇したこと2 10 • Persistent Volume、Ingress周りの設定はベンダーによる違いが大きい ◦

    各クラウドベンダーが実装しているストレージや LBの実装によるため ◦ annotationが多いことからもわかるかと思う • インスタンスファミリーの退役に伴うノードの再作成 ◦ 先日発生。m3→m5、r3→r5 ◦ GCPではあまり経験が無い ▪ メンテナンスに伴うmigrationでたまーに再起動はある … • Webの管理コンソールが見づらい(EKSに関して) ◦ GCPの方がクラスタ、ノード、ワークロードなど、この辺は見やすいかな ◦ 慣れ?
  11. Kubernetes Sapporo for Beginners EKSを使って遭遇したこと3 11 • ノード1台がEBS関連のeventを吐いてNot Ready ◦

    テスト環境で1度だけノードがEBS関連のeventを吐きながら停止した ◦ 30分後自動復旧 ◦ 今後調査 • FSxディスクへアクセスできない ◦ サポートされているのが Windowsと Amazon Linuxのみ ◦ サポートに問い合わせたが公式的な方法は無し ◦ コンテナに色々入れて AD参加させてetc…障害点が増えそう ◦ 結果的にFSxアクセスの要求がなくなったため調べただけでやらなかった
  12. Kubernetes Sapporo for Beginners その他、やってみて 12 ◦ 最初はAWS側にGitlab-Runnerマシンを配置して DockerビルドしたものをECR(Elastic Container

    Registory)に配置していたが、管理やリリース時 のチェックが煩雑になったため 1か所に統一 (※) ◦ イメージはKubernetesの要素Secretのtype:docker を登録し、Deployment定義に設定することで GCR からpullしてEKSノード上にコンテナが起動する ※参考:https://speakerdeck.com/hirose39/kubernetes-getting-started-number-1-case-introduction-for-k8ssa?slide=7 • コンテナイメージはGCP側のGCR(Google Container Registory)に統一
  13. Kubernetes Sapporo for Beginners まとめ 13 • 細かい差異やトラブル、初回の構築には時間が掛かる部分もありますが、運用して いる上では今のところは順調に動作 •

    まだ仮運用のため、今後本格的に運用していく中で発生した事項などはまたお話し できればと思います
  14. Kubernetes Sapporo for Beginners 質疑応答 お聞きいただきありがとうございました。 何でも気軽にご質問くださいませ! 14