Kubernetesを理解するために8分

Googleのシステムから生まれKubernetesボルグは、それが強力なコンテナファイリングシステムです。参加したり、その上にアプリケーションを構築するために貢献するのは簡単Kubernetesとその生態系全体(ツール、モジュール、プラグインなど)のGo言語を使用している、APIのセットを構成するように、あなたは、高速動作のセットをプログラムすることができ、これらの手順の優れたドキュメント、。

それぞれの開発、運用、保守または興味のある読者は、システムとその様々な機能を理解するために、その中心的な概念のいくつかを理解しておく必要があり、なぜほとんどの人は、それを使用しています。

ECS、ノマドとMesos:先に進む前に、私はいくつかのKubernetesトップフレンド(または競合他社)を言及したいと思います。ECSは、最近、それがAWS Kubernetesシステム--EKS上でホストされている打ち上げ、AWS自身のオーケストレーション・ソリューションです。サポートFARGATEどちらも、ユーザーが実行されている物理リソースを気にしないように。

Kubernetesは、オープンソースのシステムとして、三つの主要なクラウドホスティングサービスプロバイダは、この機能を提供する方法であり、間違いなく最大の勝者です。しかし、それはいくつかの他の製品よりも複雑で混乱する必要があります。Kubernetesコンテナ負荷のほぼすべてのタイプを扱うことができるが、またスキルがたくさんありますが、それは誰もがそれを使用する必要があることを意味するものではありません。他のソリューションは、完全にECSがEKSよりも良い、はい、本番環境Kubernetesよりも良い経験を持つことになります使用して、AWSのインターネット製品の会社に配備、例えば、会社の一定の要件を満たすことができるかもしれません。

Kubernetesの魔法がある、と言った:それはどこにでも配置することができ、それが活発なコミュニティがあり、オープンソースのエコシステムへのコア開発者と貢献者の数十万人があります。それは、高速で革新的な、モジュラーおよび指向APIを実行するプラグインまたは非常にサービスフレンドリーなシステムを構築します。

さて、前置きなしに、我々は旅を始めます。

11部のKubernetes

1. [

ポッドKubernetesは最小単位が対話することができるです。ポッドは、単一のノード上に配備ユニットを形成するために一緒にこれらの容器からなる複数の容器で構成されてもよいです。IPを有するポッドは、IPはその容器との間で共有されます。
ミクロの世界のサービスでは、ポッドはマイクロサービスのバックグラウンド作業やサービス要求の実装の単一のインスタンスことができます。

2.ノード(ノード)

ノードマシン。彼らは、ポッド、「ベアメタル」(または仮想マシン)を展開するためのKubernetesです。ノードクラスタでは、データを維持するために使用可能なリソース、実行する操作、メンテナンスの作業負荷を提供し、ネットワークルーティングを作成Kubernetesです。

3.ラベル(ラベル)と注釈(アノテーション)

ラベルは、各リソースとリソースが「アクセス」または関連する接着剤である、フィルタシステムと同様に、エンドユーザおよびリソースをKubernetesあります。例えば、展開サービス用のポートを開きます。モニタリング、ロギング、デバッグおよびテストするかどうか、任意のKubernetesリソースは、その後の検査のためのラベルでマークする必要があります。例えば、システムは、すべての労働者ポッドにタグをつけ:アプリ=労働者は、その選択に後または--selectorフィールドkubectl KubernetesのAPIを使用することができます。
注釈ラベルとは、次のような、非常に似ているが、通常は自由な文字列のメタデータの形で異なるオブジェクトを保持するために使用される「変更理由:セキュリティパッチのアップグレード」

4.サービス・ディスカバリー(サービスディスカバリ)

スケジューリングシステムとして、Kubernetesは、多くの異なるワークロードのリソース、ポッドの管理を担当するネットワークの物理的なリソース、すべての作業を制御し、通信する必要があります。このため、KubernetesはETCDを使用しました。

ETCDは、それを介してすべてのリソースを取得するKubernetes「内部」データベース、マスターの位置です。Kubernetesは、実際の「サービス検出」サービスを提供 - すべてのポッドは、そのIPアドレスとポートを得るために、他のサービスの名前を解析することによって、カスタムのDNSサーバーを使用しています。これは、設定を必要とせずに、「箱から出して」クラスタをKubernetes。

5.さらにreplicaSet(レプリカセット)

ポッドを実行している間の物理的な作業ですが、一般的に単一のインスタンスを使用するのに十分ではありません。冗長性と負荷の取り扱いについては、(例えば、「伸縮自在」など)何らかの理由でポッドをコピーする必要があります。拡張および複製層に責任を達成するために、KubernetesはさらにreplicaSetを使用しました。この層は、コピーの所望の数にシステムの状態を表し、任意の所与の瞬間に、システムの現在の状態を維持します。

これは、システムの負荷が高い場合には自動開閉式の構成は、余分なコピーを作成するところもあり、そしてそれらのリソースは、もは​​やされたときに、実行中のワークロードの体積の減少をサポートするために必要ありません。

6. DaemonSet(デーモンセット)

時には、アプリケーションの各インスタンスは、1つのノードよりも多くを必要としません。例えばFileBeat  、このようなログ収集が良い例です。エージェントは、すべてのノード上で実行する必要のある各ノードからログを収集しますが、ノードごとに1つのインスタンスのみ。DaemonSetのKubernetesは、このようなワークロードを作成するために使用することができます。

(状態のセットを有する)7. StatefulSet

関与する最も微細なサービスは、不変のステートレスなアプリケーションがありますが、例外もありますが。ステートフルワークロードは、信頼性の高いサポートディスクボリュームに依存します。アプリケーションコンテナ自体を変更することはできませんが、あなたの代わりに健康的な新しいバージョンまたはインスタンスを使用していますが、まだ永続的なデータのすべてのコピーを必要とすることができます。アプリケーションの使用のこのタイプのために必要とされるStatefulSetは、ライフサイクル全体を通じて、同じノードに配備されています。

クラスタ全体のコンテナサービスで見つかったホスト名の名前:それもその「名前」を保持します。ZooKeeperの構成番目StatefulSet 3は、-4 ZK ZK-5なども担当して、ZK-2及びZK-3、ZK-1と命名することができる複数のメンバーに拡張することができる...... StatefulSets PersistentVolumeClaim(接続ポッドディスク)。

8.仕事(作業)

Kubernetesコアチームは、ほとんどのアプリケーションは、スケジューリング・システムを使用すると見なします。ほとんどのアプリケーションは、(Webサーバーなど)を同時に処理サーバのリクエストで実行する必要が、時にはあなたは、ジョブの数を生成し、その完了後にクリーンアップする必要がありますが。例えば、無料のミニサーバー環境。
Kubernetesでこれを実現するには、Jobリソースを使用することができます。その名前が示すように、仕事の仕事は、特定のタスクを達成するために、コンテナを生成することで、正常に完了した時に破壊されました。例えば、労働者からの読み出し動作のセットを処理し、データキューに格納されます。キューが空になると次のバッチの準備が整うまで、それは、もはや必要労働者ではありません。

9. ConfigMap(マップコンフィギュレーション)とシークレット(秘密の設定)

あなたが精通していない場合はアプリケーションマニフェストの12個の要素は、事前にご了承ください。最新のアプリケーションの重要な概念の1つは、何の環境ではない、と環境変数を注入することにより構成することができます。アプリケーションは、その場所とは完全に独立していなければなりません。Kubernetesにおけるこの重要な概念を実現するために、ConfigMapがあります。実際には、これは重要な環境変数のリストである、彼らはワークロードが異なる実行時の動作を決定するために実行されているに渡されます。通常のシークレット設定エントリに似ていますが、機密情報と同様の鍵、パスワード、証明書などの漏洩を防止するために暗号化されます同じカテゴリでは。

私は個人的にHashicorpのVaultが機密設定を使用するための最良の選択肢だと思います。私は去年書いたものを必ずお読みください記事について、記事では、環境上の理由から、生産の一部としてVaultを説明し、だけでなく、私の同僚の1が書いた別の記事より技術的な記事を

10.展開(配置)

すべては、ポッドが上さらにreplicaSetがあれば、それはまた、負荷に応じて拡張することができ、通常の操作することができ非常に良さそうに見えます。しかし、誰もがすぐにアプリケーションを置き換えることが可能である新しいバージョンに群がりました。私たちは、構築、テストとフィードバックサイクルを短縮するために解放するために小さな規模になりたいです。特定のワークロードは、メタデータの新たな需要を実行する記述子のセットで新しいソフトウェアの持続的な展開で展開を使用してください。例えば、でも改正、バグ修正、および(これはKubernetes内部の別のオプションです)ロールバックします。
Kubernetesで展開ソフトウェアは、主に2つの戦略を使用することができます。

  • その名の通り、新しい要件と負荷全体を交換することは当然のシャットダウンを強制します - 交換してください。高速の非本番環境のリソースを置き換えるために、有用です。

  • ローリング・アップグレードは - 新しいモニター2つの具体的な構成ゆっくりコンテナによって置き換えられます。

。新しいバージョン(または特定の番号)を展開する際にA MaxAvailable--可能な作業負荷の割合を設定し、100%は、「サービス要求するために生きている2を維持するために展開したとき、私は、二つの容器を持っている」と述べました。

B。MaxSurge--コンテナ(または量)を存続上の現在の作業計画に基づいて負荷率を設定し、100%は、「私は、別のXコンテナを展開し、古い船が転がり始め削除、コンテナのX番号を持っている」を意味します。

11.ストレージ(記憶装置)

Kubernetesは、ストレージ抽象化の上にレイヤーを追加します。ワークロードは、特定の店舗を要求することができ、ポッドは永続のライフサイクルを管理することができますよりもさらに異なるタスクです。簡潔にするために、出版物の前に著者をお読みくださいKubernetesストレージに関する記事それは完全にデータベースの永続性の導入要件に似たようなデータを解決できない理由を、特別な重点をご覧ください。

概念の理解

Kubernetesは(まだ)システムで構築するための各機能、概念やアイデアがコミュニティの要因に取り込まれ、いくつかのガイドラインに従って設計および開発されています。また、エンドユーザーは、いくつかの方法でシステムを使用するように指示されますが、これは強制されません。ベストプラクティスは、オープンですが、無料のオープンソースシステムとして、あなたは自分のニーズに応じて動作させることができます。

各部分のAPI--システムは、対話型文書、ビルド動作可能なAPIに優れによって達成することができます。コア開発者は、不要なまたはフィルタを遮断しないように、エンドユーザーは、変更、クエリおよび更新をすることができることを保証します。

ウェルカムパッケージ化ツールは - デリバティブ商品の以前のポイントとして、Kubernetesは、そのツールとAPIラッパーの上に構築された歓迎しました。オリジナルのプラットフォームの一つとして、Kubernetesは、他の人が使用するために構築するための高度なカスタマイズ方法と異なるユースケースのためのツールをさらに発展させたものです。いくつかのツールは、そのようなので、上のスピネーカー、Istioとして、非常に有名な、広く使用されるようになっています。

宣言的状態 - 、宣言に記載されているシステムではなく、必要不可欠記述を使用して、ユーザーを奨励します。これは、システムとコンポーネントの状態が最良の手動変更によって引き起こされる問題を回避するために(例えば、Gitのような)バージョンコントロールにマネージコードとして記述されていることを意味します。したがって、Kubernetesは簡単にチームの間で責任を共有し、転送し、災害復旧の難易度を下げます。

オリジナルリンク:https://medium.com/prodopsio/an-8-minute-introduction-to-k8s-94fda1fa5184


Fanger魏コードスキャンは、ネイティブ雲の愛好家は、高度な戦闘技術動向を議論8000で、小さなアシスタントを追加するには!

ポジション - - 市会社:グループ暗号に

ファイル

おすすめ

転載: www.cnblogs.com/alisystemsoftware/p/11526534.html