k8s (1): Kubernetes の導入とクラスター アーキテクチャ
1. コンテナオーケストレーションツールについて理解する
- ドッカーマシン
- 主にDockerホストを準備するために使用されます
- 現在は廃止されました
- docker デスクトップの使用をお勧めします
- ドッカー構成
- Compose は、複数コンテナーの Docker アプリケーションを定義および実行するためのツールです。
- Compose では、YAML ファイルを使用してアプリケーションのサービスを構成します。
- 1 つのコマンドで、構成からすべてのサービスを作成して開始できます。
- ドッカーの群れ
- Dockerエンジンに組み込まれています
- Docker エンジンのクラスターレベルの管理
- 分散設計により、より多くのクラスター リソースが可能になり、より多くのホストを管理できるようになります。
- 宣言型サービス モデル。YAML ファイルを通じてアプリケーション サービスの必要な状態を定義します。
- ユーザーの期待を維持するためにサービスの規模を拡大または縮小することができます
- サービスディスカバリ
- 負荷分散
- ローリングアップデートなど
- ドッカーサービス
- ドッカースタック
- Kubernetes
- コンテナ クラスタ管理システムとして、Kubernetes は、コンテナ クラウド プラットフォーム内の複数のホスト上のコンテナ アプリケーションを管理するために使用されます。Kubernetes の目標は、コンテナ化されたアプリケーションのデプロイを簡単かつ効率的にすることです。そのため、Kubernetes は、アプリケーションのデプロイ、計画、更新、メンテナンスのための完全なメカニズムのセット。
- Kubernetes にはコンテナ用の固定形式はありませんが、Kubernetes はコンテナ オーケストレーションに独自の API とコマンドライン インターフェイスを使用します。
- Docker コンテナに加えて、Kubernetes は Containerd、rkt、CoreOS などの他のさまざまなコンテナもサポートしています。
- Kubernetes は、コンテナのスケジューリング、リソース管理、サービス検出、ヘルスチェック、自動スケーリング、更新とアップグレードなどを実装できる自己完結型の管理ツールです。また、コピー数、サービス要件 (IO 優先度、パフォーマンス優先度、など) アプリケーション テンプレート構成内)、リソース使用間隔、望ましい状態を達成するための特定の要件に一致するラベル (ラベルなど) など、これらの機能は開発者を征服するのに十分であり、さらに Kubernetes には非常に活発なコミュニティがあります。これにより、ユーザーのニーズに合わせてオーケストレーション コンテナーを拡張しやすくなる、より多くの選択肢がユーザーに提供されます。ただし、Kubernetes は独自の API インターフェースを使用するため、コマンド体系が別システムとなるため、Kubernetes の適用敷居は比較的高くなります。
- メソス+マラソン
- Apache Mesos は、分散システム カーネル用のオープン ソース クラスター マネージャーであり、Docker Swarm や Kubernetes よりもはるかに早く登場しました。
- コンテナベースのアプリケーション用のオーケストレーション フレームワークである Marathon と組み合わせることで、Docker Swarm や Kubernetes に代わる効果的な代替手段を提供します。
- Mesos は、同じクラスター マシン上で複数の分散システム タイプを実行でき、リソースをより動的かつ効率的に共有できます。
- Messos は、サービス障害チェック、サービス公開、サービス追跡、サービス監視、リソース管理、リソース共有も提供します。
- Messo は数千のノードまで拡張できます。
- Mesos は、多数のサーバーがあり、大規模なクラスターを構築したい場合に便利です。
- ビッグ データ フレームワーク Hadoop、Kafka、Spark など、多くの最新のスケーラブルなデータ処理アプリケーションを Mesos 上で実行できます。
- ただし、大規模で包括的であるということは、それに対応する複雑さと困難を意味することがよくあります。これは Messos では完全に正しいです。同じ API を使用する Docker と Docker Swarm とは異なり、Mesos とマラソンは独自の API を持っているため、他のオーケストレーションよりも複雑になります。システムはもっと複雑です。Apache Mesos は、混合環境に最適なオーケストレーション ツールです。コンテナー アプリケーションと非コンテナー アプリケーションの両方が含まれているため、Messos は非常に安定していますが、ユーザーがアプリケーションを迅速に学習することがより困難になり、アプリケーションとデプロイメントで促進することも困難になります。理由の 1 つはシナリオです。
分散リソース管理フレームワーク | 主な特徴 | 述べる |
---|---|---|
Apache メソス | 強力だがシステムが複雑で使いにくい | 2019 Twitter が廃止を発表 |
Docker Swarm | Docker エンジンに統合されているため、個別にインストールする必要はありませんが、機能は少なくなります | Alibaba Cloudは2019年に廃止を発表 |
Google Kubernetes | 強力な機能だが学習コストと管理コストが高い | 現在、代替となる複数分野のアプリケーションはありません |
2、Kubernetes について知る
2.1 Kubernetes の意味、起源、所有権
2.1.1 意味
ギリシャ語: 操舵手、パイロット
2.1.2 起源
-
Google Borg から派生
-
golang言語を使用して開発
-
略称はk8s
2.1.3 帰属
現在はCNCFが所有
-
クラウド ネイティブ コンピューティング基盤
-
クラウド コンピューティングをユビキタスかつ持続可能なものにすることに特化したオープンソース ソフトウェア基盤です。
-
公式: http://www.cncf.io
2.2 Kubernetes バージョン
- 2014 年 9 月に最初の正式バージョンがリリース
- バージョン 1.0 は 2015 年 7 月に正式にリリースされました
- 現在の安定バージョンは 1.24 です
- 主な貢献者: Google、Redhat、Microsoft、IBM、Intel
- コードホスティング github: https://github.com/kubernetes/
2.3 Kubernetes ユーザー
- 2017 年、docker は kubernetes のネイティブ サポートを正式に発表しました。
- RedHat の PaaS プラットフォーム OpenShift の中核は kubernetes です
- Rancher プラットフォームの中核は kubernetes です
- 現在、中国のほとんどの企業は、kubernetes を使用して従来の IT サービスを変換し、効率的な管理を実現できます。
2.4 Kubernetes URL
- 公式ウェブサイト
英語サイト:https://kubernetes.io/
中国語サイト: https://kubernetes.io/zh/
- 中国人コミュニティ
URL: Kubernetes (K8S) 中国語ドキュメント_Kubernetes 中国語コミュニティ
3、Kubernetes アーキテクチャ
3.1 ソフトウェアアーキテクチャの説明
-
ソフトウェアアーキテクチャ
-
中央ノードを備えた分散アーキテクチャ
- Hadoopクラスタ
- セフクラスタ
-
中央ノード分散アーキテクチャなし
- グルスターFS
-
-
Kubernetes は中央ノードを備えた分散アーキテクチャです。つまり、マスター管理ノードがあります。
- マスターノード
- セントラルノード: マネージャー
- 単純な名前: マスターノード
- ミニオンノード
- 作業ノード: ワーカー
- 単純な呼び出しポイント: ノード ノードまたはワーカー ノード
- マスターノード
3.2 Kubernetes アーキテクチャの図
4. Kubernetes クラスターノードのコンポーネント
4.1 マスターノードのコンポーネント
マスター ノードはクラスター管理センターであり、そのコンポーネントはクラスター内のどのノードでも実行できますが、管理の便宜上、マスターのすべてのコンポーネントは 1 つのホスト上で実行され、ユーザー コンテナーはこのホスト上では実行されません。ホスト
マスターコンポーネントには次のものが含まれます。
- APIサーバーへ
kubernetes API を公開するために使用され、リソースのリクエスト/呼び出し操作は kube-apiserver によって提供されるインターフェイスを通じて実行されます。
- kube-コントローラー-マネージャー
コントローラー マネージャーは、クラスター内の日常的なタスクを処理するバックグラウンド スレッドであるコントローラーを管理するために使用されます。
-
kubeスケジューラー
ノードに割り当てられていない新しく作成されたポッドを監視し、ポッドを実行するノードを選択します。
-
ETCD (データベース)
すべてのクラスター データを保存するためのデフォルトのストレージ システムを提供するのは kubernetes です。
4.2 ノードノードコンポーネントの紹介
ノード ノードは、ポッドの実行と保守、ボリューム (CVI) とネットワーク (CNI) の管理、ポッドやサービスなどの情報の保守に使用されます。
ノードのコンポーネントには次のものが含まれます。
- キュベレット
- コンテナーのライフサイクルの維持 (ポッドの作成、ポッドの破棄) を担当し、ボリューム (CVI) およびネットワーク (CNI) の管理も担当します。
- 代理人になる
- サービス (iptables/ipvs) は、ホスト上でネットワーク ルールを維持し、接続転送を実行することによって実装されます。
- いつでも apiserver と通信し、サービスまたはポッドの変更を apiserver に送信して etcd (高可用性クラスターとして使用可能) に保存します。サービスの実装、内部ポッドからサービスへのアクセス、および外部ノードからサービスへのアクセスを担当します。 。
- コンテナランタイム
- コンテナランタイム
- イメージ管理とポッドとコンテナの実際の実行を担当します。
- docker/containerd/Rkt/Pouch/Kata などの複数のランタイムをサポート
4.3 アドオンの導入
アドオン(付属品)は、機能をより豊富にするものであり、それがなくても実際の使用に影響を与えず、本体プログラムと組み合わせて使用できます
- coredns/kube-dns: クラスター全体に DNS サービスを提供する責任を負います。
- Ingress Controller は、クラスター外部のサービスへのアクセスを提供します。
- Heapster/Metries-server はクラスター リソースの監視を提供します (監視コンテナーは prometheus を使用できます)
- ダッシュボードはクラスター GUI を提供します
- フェデレーションは可用性ゾーン全体にクラスターを提供します
- Fluentd-elasticsearch はクラスター ログの収集、保存、クエリを提供します