Searching...
日本語
English
Español
简体中文
Français
Deutsch
日本語
Português
Italiano
한국어
Русский
Nederlands
العربية
Polski
हिन्दी
Tiếng Việt
Svenska
Ελληνικά
Türkçe
ไทย
Čeština
Română
Magyar
Українська
Bahasa Indonesia
Dansk
Suomi
Български
עברית
Norsk
Hrvatski
Català
Slovenčina
Lietuvių
Slovenščina
Српски
Eesti
Latviešu
فارسی
മലയാളം
தமிழ்
اردو
Kubernetes Patterns

Kubernetes Patterns

Reusable Elements for Designing Cloud-Native Applications
by Bilgin Ibryam 2019 266 pages
Technology
Technical
Engineering
聞く

つの重要なポイント

1. Kubernetes: クラウドネイティブアプリケーションの基盤

Kubernetesは、コンテナオーケストレーションプラットフォームであり、その上に構築される他のプラットフォームの基盤を形成する。

分散プリミティブ。 Kubernetesは、クラウドネイティブアプリケーションを構築するための新しい分散プリミティブのセットを導入する。これには、Pod(コンテナのグループ)、Service(ネットワーキングとロードバランシング用)、およびアプリケーションライフサイクルを管理するためのさまざまなコントローラーが含まれる。これらのプリミティブは、従来のプロセス内ビルディングブロックと比較して高い抽象化レベルを提供し、開発者がインフラストラクチャの懸念ではなくアプリケーションロジックに集中できるようにする。

宣言的アプローチ。 Kubernetesは、開発者がアプリケーションの望ましい状態を指定し、プラットフォームがその状態を維持するために継続的に作業する宣言的モデルを採用している。このアプローチはアプリケーション管理を簡素化し、自動的な修復とスケーリングを可能にする。Kubernetesの主要な概念には以下が含まれる:

  • コンテナ:アプリケーションコードと依存関係をパッケージ化し、隔離されたユニット
  • Pod:1つ以上のコンテナで構成される最小のデプロイ可能ユニット
  • Service:Podのグループにアクセスするための安定したネットワークエンドポイント
  • ラベルとアノテーション:リソースを整理し選択するためのメタデータ
  • ネームスペース:リソースの隔離とマルチテナンシーのための仮想クラスター

2. 基礎パターン:コンテナ化されたアプリのビルディングブロック

完全に自動化可能なクラウドネイティブアプリケーションは、その状態を推測できるようにして、Kubernetesがアプリケーションが稼働しているかどうか、リクエストを処理する準備ができているかどうかを検出できるようにする必要がある。

予測可能な要求。 アプリケーションはリソース要件とランタイム依存関係を宣言する必要がある。これにより、Kubernetesは配置とスケーリングに関するインテリジェントな決定を下すことができる。主要な側面には以下が含まれる:

  • リソースプロファイル:CPUとメモリの要求と制限を指定
  • QoSクラス:Best-Effort、Burstable、Guaranteed
  • Podの優先度:Podの相対的重要性を示す

宣言的デプロイ。 Kubernetesは、最小限のダウンタイムでアプリケーションを更新するためのメカニズムを提供する:

  • ローリングアップデート:古いPodを新しいPodに徐々に置き換える
  • ブルーグリーンデプロイメント:2つのバージョン間でトラフィックを切り替える
  • カナリアリリース:新しいバージョンへのトラフィックを徐々に増やす

ヘルスプローブと管理されたライフサイクル。 アプリケーションはヘルスチェックを実装し、ライフサイクルイベントに応答する必要がある:

  • リブネスプローブ:アプリケーションが稼働しているかどうかを検出
  • レディネスプローブ:アプリケーションがトラフィックを処理する準備ができているかどうかを判断
  • ライフサイクルフック:開始および停止イベントに応答

3. 行動パターン:Pod管理とサービスディスカバリ

シングルトンサービスパターンは、アプリケーションのインスタンスが一度に1つだけアクティブでありながら、高可用性を確保する。

ジョブ管理。 Kubernetesは、さまざまなタイプのワークロードを管理するための抽象化を提供する:

  • バッチジョブ:有限で完了可能なタスクを実行
  • 定期ジョブ(CronJob):スケジュールされた定期的なタスクを実行
  • デーモンサービス:各ノードでシステムレベルのサービスを実行

ステートフルサービス。 Kubernetesは、安定したネットワークIDと永続ストレージを必要とするアプリケーションを管理するためのStatefulSetを提供する:

  • 順序付けられたデプロイとスケーリング
  • 安定したネットワークID
  • Podごとの永続ストレージ

サービスディスカバリ。 Kubernetesは、サービスディスカバリのための複数のメカニズムを提供する:

  • ClusterIPサービス:内部通信用
  • NodePortおよびLoadBalancerサービス:外部アクセス用
  • Ingress:HTTPベースのルーティングとロードバランシング

4. 構造パターン:Pod内のコンテナの整理

サイドカーコンテナは、既存のコンテナの機能を変更せずに拡張および強化する。

マルチコンテナPod。 Kubernetesは、複数のコンテナを1つのPodにグループ化することを可能にし、さまざまなパターンを実現する:

  • Initコンテナ:メインコンテナが開始する前の初期化タスク
  • サイドカー:メインコンテナに機能を追加
  • アダプター:異種アプリケーションの出力を標準化
  • アンバサダー:外部サービスとの通信をプロキシ

これらのパターンは、関心の分離、モジュール性、およびアプリケーション設計における再利用性を促進する。開発者は、Podの抽象化によって提供される共有コンテキストとリソースを活用しながら、単純な単一目的のコンテナから複雑なアプリケーションを構成することができる。

5. 構成パターン:さまざまな環境にアプリケーションを適応させる

ConfigMapとSecretは、Kubernetes APIで簡単に管理できる専用のリソースオブジェクトに構成情報を保存することを可能にする。

外部化された構成。 Kubernetesは、アプリケーション構成を管理するためのいくつかのメカニズムを提供する:

  • 環境変数:シンプルなキーと値のペア
  • ConfigMap:非機密の構成データ
  • Secret:機密情報(例:パスワード、APIキー)

不変の構成。 環境間の一貫性を確保するために、構成を不変のコンテナイメージにパッケージ化できる:

  • 構成コンテナ:構成データを保存する専用のイメージ
  • Initコンテナ:共有ボリュームに構成をコピー

構成テンプレート。 環境間でわずかに異なる複雑な構成のために:

  • テンプレート処理:Gomplateなどのツールを使用して構成ファイルを生成
  • Initコンテナ:Podの初期化中にテンプレートを処理

これらのパターンは、開発者が構成をアプリケーションコードから分離し、移植性を促進し、環境固有の問題のリスクを軽減することを可能にする。

6. 高度なパターン:Kubernetesの拡張と複雑なワークロードの管理

オペレーターは、Kubernetesと他の何かの2つのドメインを理解するKubernetesコントローラーである。両方の領域の知識を組み合わせることで、通常は両方の領域を理解する人間のオペレーターが必要とするタスクを自動化できる。

コントローラーとオペレーター。 Kubernetesは、複雑なアプリケーションを管理するために拡張できる:

  • コントローラー:リソースの変更に基づいてカスタム動作を実装
  • オペレーター:ドメイン固有の知識をエンコードし、複雑な操作を自動化
  • カスタムリソース定義(CRD):新しいリソースタイプを定義

フレームワークとツール。 いくつかのプロジェクトは、コントローラーとオペレーターの開発を支援する:

  • オペレーターフレームワーク:Goベースのオペレーターを構築するためのフレームワーク
  • Kubebuilder:オペレータープロジェクトのスキャフォールディングと管理
  • Metacontroller:任意の言語でオペレーターを実装

これらのパターンは、開発者がKubernetesの機能を拡張し、クラスター内で複雑なアプリケーション固有の操作を自動化することを可能にする。

7. スケーリングとビルディング:弾力的なアプリケーションとクラスター内のイメージ作成

Kubernetesのオートスケーリングにより、固定された容量ではなく、異なる負荷を処理するために十分な容量を確保する可変のアプリケーション容量を定義できる。

弾力的なスケール。 Kubernetesは、アプリケーションをスケーリングするための複数のメカニズムを提供する:

  • 水平Podオートスケーリング(HPA):Podレプリカの数を調整
  • 垂直Podオートスケーリング(VPA):リソース要求と制限を変更
  • クラスターオートスケーリング:リソース需要に基づいてノードを追加または削除

イメージビルディング。 Kubernetesは、クラスター内でコンテナイメージをビルドするために使用できる:

  • OpenShift Build:さまざまな戦略を使用してイメージをビルドする統合システム
  • Knative Build:Kubernetesネイティブのビルディングフレームワーク
  • Daemonlessビルド:img、buildah、Kanikoなどのルートレスイメージ作成ツール

これらのパターンは、開発者が弾力的で自己調整型のアプリケーションを作成し、Kubernetesのスケジューリングとリソース管理機能を活用してイメージビルディングプロセスを合理化することを可能にする。

Last updated:

レビュー

4.31 out of 5
Average of 100+ ratings from Goodreads and Amazon.

本書『Kubernetes Patterns』は、読者から主に好意的な評価を受けており、その魅力的な内容、明確な構成、実践的な例が称賛されている。多くの読者は、Kubernetesの概念やベストプラクティスを理解するために本書が有益であると感じている。一部のレビュアーは、本書のパターンの説明方法を高く評価しているが、他のレビュアーは特定の「パターン」が基本的なKubernetesの機能に過ぎないと感じている。本書は、Kubernetesの知識を深めたい開発者やシステム管理者に推奨されるが、経験豊富な実務者にはそれほど役立たないかもしれない。全体として、クラウドネイティブアプリケーションを構築するための有用なリソースと見なされている。

著者について

ビルギン・イブリヤムは、クラウドネイティブ技術、特にKubernetesの分野で卓越した著者であり専門家である。彼は企業顧客向けにクラウドネイティブプラットフォームを実装する豊富な経験を持ち、その経験は彼の著述に反映されている。イブリヤムの作品は、その明快さと複雑な概念を簡潔にする能力で高く評価されている。彼は「Kubernetes Patterns」を共著し、コンテナオーケストレーションのためのリソースとして、Gang of Fourのデザインパターンの本に似たものを作成することを目指した。イブリヤムの専門知識と実践的なアプローチは、Kubernetesコミュニティで尊敬される声となり、開発者やエンジニアがクラウドネイティブソリューションをよりよく理解し実装するのを助けている。

0:00
-0:00
1x
Create a free account to unlock:
Bookmarks – save your favorite books
History – revisit books later
Ratings – rate books & see your ratings
Listening – audio summariesListen to the first takeaway of every book for free, upgrade to Pro for unlimited listening.
Unlock unlimited listening
Your first week's on us
Today: Get Instant Access
Listen to full summaries of 73,530 books. That's 12,000+ hours of audio!
Day 5: Trial Reminder
We'll send you a notification that your trial is ending soon.
Day 7: Your subscription begins
You'll be charged on Sep 26,
cancel anytime before.
What our users say
“...I can 10x the number of books I can read...”
“...exceptionally accurate, engaging, and beautifully presented...”
“...better than any amazon review when I'm making a book-buying decision...”
Compare Features
Free Pro
Read full text summaries
Listen to full summaries
Unlimited Bookmarks
Unlimited History
Benefits
Get Ahead in Your Career
People who read at least 7 business books per year earn 2.3 times more on average than those who only read one book per year.
Unlock Knowledge Faster (or Read any book in 10 hours minutes)
How would your life change if we gave you the superpower to read 10 books per month?
Access 12,000+ hours of audio
Access almost unlimited content—if you listen to 1 hour daily, it’ll take you 33 years to listen to all of it.
Priority 24/7 AI-powered and human support
If you have any questions or issues, our AI can resolve 90% of the issues, and we respond in 2 hours during office hours: Mon-Fri 9 AM - 9 PM PT.
New features and books every week
We are a fast-paced company and continuously add more books and features on a weekly basis.
Fun Fact
2.8x
Pro users consume 2.8x more books than free users.
Interesting Stats
Reduced Stress: Reading for just 6 minutes can reduce stress levels by 68%
Reading can boost emotional development and career prospects by 50% to 100%
Vocabulary Expansion: Reading for 20 minutes a day are exposed to about 1.8 million words per year
Improved Cognitive Function: Reading can help reduce mental decline in old age by up to 32%.
Better Sleep: 50% of people who read before bed report better sleep.
Can I switch plans later?
Yes, you can easily switch between plans.
Is it easy to cancel?
Yes, it's just a couple of clicks. Simply go to Manage Subscription in the upper-right menu.
Save 62%
Yearly
$119.88 $44.99/yr
$3.75/mo
Monthly
$9.99/mo
Try Free & Unlock
7 days free, then $44.99/year. Cancel anytime.