Containers & Kubernetes

Kubernetes ベスト プラクティス 6 選

Google Cloud Kubernetes.jpg

※この投稿は米国時間 2020 年 1 月 8 日に、Google Cloud blog に投稿されたものの抄訳です。


数年前、Kubernetes はコンテナ化されたアプリケーションの管理をサポートし、大いに注目を集めました。今では、本番環境でのアプリケーションの大規模なデプロイや管理に広く使用されています。その過程で私たちは、Kubernetes と Google Kubernetes Engine(GKE)を最大限に活用するためのヒントやベスト プラクティスを収集してきました。ここでは、Kubernetes のデプロイと利用方法に関する Google Cloud ブログのなかから、最も人気の高い記事の一部をご紹介します。

  1. リソース管理を容易にする Kubernetes の Namespace : Kubernetes 上でサービスを構築すると、単純なタスクが複雑になっていきます。一種の仮想クラスタである Namespace を使用すれば、サービスを整理しやすくなり、セキュリティやパフォーマンスが向上します。この投稿では、どの Namespace を使うべきか(避けるべきか)、そのセットアップや表示方法、Namespace 内でのリソースの作成方法に関するヒントをまとめています。また、Namespace の簡単な管理や Namespace 同士の通信の方法についても説明しています。
  2. Readiness Probe と Liveness Probe によるヘルス チェック : 大規模な分散システムの管理、特に何か問題が発生した場合の管理は複雑になることがあります。Kubernetes のヘルス チェックを使用すれば、アプリケーション インスタンスが動作していることを簡単に確認できます。環境に合わせてカスタムのヘルス チェックを作成することも可能です。この投稿では、Readiness Probe と Liveness Probe をいつどのように使うかについて解説しています。
  3. Requests と Limits によるリソースの管理 : Kubernetes のスケーラビリティは高く評価されていますが、それでもコンテナの実行に十分なだけのリソースを確保するには、やはりリソースの監視が必要です。チームが必要以上にレプリカを起動したり、CPU やメモリに影響を与える構成変更を行ったりすることはよくあります。Requests と Limits を使って Kubernetes リソースを確実に管理する方法については、この投稿を参照してください。
  4. クラスタ外のサービスのディスカバリ : 定期的にアクセスしたいサービスのなかには、Kubernetes クラスタの外で動いているものもおそらくあるでしょう。また、外部サービス エンドポイントや ConfigMap というように、そうした外部サービスとの接続方法も複数にわたります。しかし、それらにはいくつか欠点があります。この投稿では、内部サービスの場合と同様に、外部サービスに対して組み込みのサービス ディスカバリ メカニズムを適用するベストな方法を学びます。
  5. Kubernetes 上でデータベースを実行するかどうかの判断 : Kubernetes 上でのデータベースの実行を検討する際には考慮すべきことがたくさんあります。データベースとアプリケーションで同じツールを使用できれば作業が楽になる場合がありますし、リピータビリティと迅速なスピンアップというメリットも同様に得られます。この投稿では、Kubernetes 上での実行に最も適したデータベースは何か、デプロイすることにした場合にどう始めればよいかについて解説しています。
  6. Kubernetes の終了処理: 良いものには必ず終わりがあり、Kubernetes のコンテナもその例外ではありません。ただし、Kubernetes の終了で鍵となるのは、アプリケーションが適切に終了処理を行えるということです。この投稿では、Kubernetes がポッドを終了するときの手順と、ダウンタイムを長引かせないために知っておくべきことについて説明しています。

GKE の使い方に関する詳細については、最新の「Containers & Kubernetes」ブログ一覧をご覧ください。もう一度勉強したいという方は、Coursera の「Architecting with GKE」講座(最初の 1 か月は無料)に申し込んで資格取得を目指しましょう。締め切りは 2020 年 1 月 31 日ですが、定員になりしだい受付終了となります。

- By Google Cloud Blog Team