- 関連する概念の紹介
kubernetes は、Google が Go 言語で開発したサービス オーケストレーションおよびリソース管理フレームワークであり、軽量、オープンソース、エラスティック スケーリング、ロード バランシング (ipvs) などの特徴を持っています。
公式ウェブサイト: Kubernetes とは何ですか? |Kubernetes
コンセプトリスト:
k8s リソースの分類:
1.名前空間レベル: 現在の空間のみが表示されます (kubectl get pods -n kebe-ststem など)。
ワークロード リソース: ポッド、replicaSet、デプロイメント
サービス検出と負荷分散リソース: ServiceDiscoveryloadBalance: ingress、service...
構成とストレージ: ボリューム、CSI
特別なストレージ ボリューム: configMap、secret...
2.クラスターレベル: クラスター全体で表示および呼び出し可能。
3.メタデータ レベル: HPA エラスティック スケーリング メカニズムなどのシステム パラメーターを通じてクラスターの高可用性を実現します。
リソースのリストと記述: 一連のスクリプトに似ています。yml 形式ファイルを使用してポッド オブジェクトを作成します。キー フィールドを指定します。バージョン、種類、メタデータ.名前空間など。
ポッドのライフサイクル:
ポッド:ほとんどがクラスターによって制御されており、死亡後に回復することはありません。
コントローラー管理のポッド: コントローラーのメンテナンス ステータスがあります。
kubectl はポッドを作成するリクエストをコントローラーに送信し、kubelet を呼び出して cni インターフェイスを介してポッドの作成を開始します。
最初に一時停止ベース コンテナを開始し、次に init c フェーズを開始し、次にメイン c (グループ コンテナ) の開始フェーズを開始し、最後に停止フェーズを開始します。コンテナの開始と停止の間に、readiness プローブと livenss プローブを使用してサービスが確実に実行されるようにします。
状態: 初期化、保留中、実行中、成功、失敗、不明
ポッド コントローラーの種類と使用:
コントローラー - 予想されるポッド コピーの数を確保し、ステートフルおよびステートレス デプロイメントを完了し、ワンタイム タスクとスケジュールされたタスクを完了できます。
サービスディスカバリ:
1.原理と施工方法:
2. SVCの原理と構築方法:
ストレージ: nfs モード
スケジューラ:
コンテナ プラットフォームの主な機能は、実行時に必要なコンピューティング、ストレージ、ネットワーク リソースをコンテナに割り当てることです。コンテナ スケジューリング システムは、コンテナを起動するのに最適なホストを選択し、それらを関連付けます。より多くのアプリケーション アクセスを処理するには、コンテナの障害を自動的に処理し、より多くのホストでより多くのコンテナを自動的に起動できる必要があります。
1. スケジューリングプロセス
CheckNodeMemoryPressure: ノードのメモリが十分であるかどうかを確認します。これらのフィルタリング アルゴリズムに加えて、他のアルゴリズムもあります。詳細については、ソース コード ファイルを確認できます: k8s.io/kubernetes/pkg/scheduler/algorithm/predicates/predicates .go. 優先順位の優先順位は一連のキーと値のペアで構成され、キーは優先順位の名前、値はその重み値です。同様に、ここではいくつかの代表的なオプションをリストします: LeastRequestedPriority: CPU とメモリ使用量が重みを決定します。使用量が低いほど、重みは高くなります。もちろん、リソース使用量が低いほど、重みは大きくなり、他の Pod で実行される可能性が高くなります。SelectorSpreadPriority: 高可用性を向上させるため、同じデプロイメントまたは RC に属する複数のポッドのコピーを複数の異なるノードでスケジュールしようとすると、ポッドがスケジュールされると、まずそのポッドに対応するコントローラーが検索され、次に既存の既存のポッドがチェックされ、実行中のノードが少なくなります。ポッド、重みが高くなります。 ImageLocalityPriority: ノード上で使用されるミラー ノードがすでに存在する場合、イメージの合計サイズが大きいほど、重みが高くなります。 NodeAffinityPriority: これはノードのアフィニティに基づいて重み値を計算します。 ; 行く。優先順位の優先順位は一連のキーと値のペアで構成され、キーは優先順位の名前、値はその重み値です。同様に、ここではいくつかの代表的なオプションをリストします: LeastRequestedPriority: CPU とメモリ使用量が重みを決定します。使用量が低いほど、重みは高くなります。もちろん、リソース使用量が低いほど、重みは大きくなり、他の Pod で実行される可能性が高くなります。SelectorSpreadPriority: 高可用性を向上させるため、同じデプロイメントまたは RC に属する複数のポッドのコピーを複数の異なるノードでスケジュールしようとすると、ポッドがスケジュールされると、まずそのポッドに対応するコントローラーが検索され、次に既存の既存のポッドがチェックされ、実行中のノードが少なくなります。ポッド、重みが高くなります。 ImageLocalityPriority: ノード上で使用されるミラー ノードがすでに存在する場合、イメージの合計サイズが大きいほど、重みが高くなります。 NodeAffinityPriority: これは、ノードのアフィニティに基づいて重み値を計算します。 ; 行く。優先順位の優先順位は一連のキーと値のペアで構成され、キーは優先順位の名前、値はその重み値です。同様に、ここではいくつかの代表的なオプションをリストします: LeastRequestedPriority: CPU とメモリ使用量が重みを決定します。使用量が低いほど、重みは高くなります。もちろん、リソース使用量が低いほど、重みは大きくなり、他の Pod で実行される可能性が高くなります。SelectorSpreadPriority: 高可用性を向上させるため、同じデプロイメントまたは RC に属する複数のポッドのコピーを複数の異なるノードでスケジュールしようとすると、ポッドがスケジュールされると、まずそのポッドに対応するコントローラーが検索され、次に既存の既存のポッドがチェックされ、実行中のノードが少なくなります。ポッド、重みが高くなります。 ImageLocalityPriority: ノード上で使用されるミラー ノードがすでに存在する場合、イメージの合計サイズが大きいほど、重みが高くなります。 NodeAffinityPriority: これは、ノードのアフィニティに基づいて重み値を計算します。 ;
ノードスケジューリングアフィニティ:
POD スケジューリング アフィニティ。
汚れ耐性:
2.カスタムスケジューラ
サービス: 一連のポッドのアクセス ルールを定義します。
クラスターセキュリティ: RBAC (ロールベースのアクセス制御、ロールベースのアクセス制御)。
1. 認証:
2. 認証:
3. アクセス制御とそのプロセス:
HELM: kubernetes 用のパッケージ管理ツール。内部的には、helm、chart、release の 3 つの部分で構成されます。
1. 原則
チャート コンポーネントを通じて kube-xconfig に接続し、次に kube-apiserver に接続してデプロイメント、イングレス、およびサービスを操作します。
2. テンプレートのカスタマイズ
3. プラグインの導入
クラスターのアーキテクチャ図:
説明: 完全な k8s クラスターはマスター ノードとワーカー ノードで構成されます。マスター ノードはクラスターの制御に使用され、ワーカー ノード ノードは作業に使用されます。マスターには API サーバー、スケジューラー、コントローラー マネージャー、etcd、およびワーカー ノードは kubelet、kube-proxy 構成で構成されます。
api-server: クラスターの統合された入口。すべてのリクエストの分散を担当します。リクエスト メソッドの RESTful スタイルに従い、ストレージのためにリクエストを etcd に渡すのが最善です。
スケジューラ: ノードのスケジューリングに使用されるスケジューラ。適切なノード展開アプリケーションを選択します。
コントローラマネージャ: コントローラ。リソース制御に使用されます。通常、リソースにはコピーの期待値を維持するためのコントローラがあります。
etcd: キーと値のペアのストレージ システム。クラスターに永続データを保存するために使用されます。
kubelet: ワーカーノードのマスターの代表であり、ローカルコンテナの状態、ライフサイクルなどを管理するために使用されます。
kube-proxy: ネットワーク プロキシ、負荷分散を提供します。
プラグイン:
coreDNS: ドメイン名解決サービス。
INGRESS: 7 層の負荷。
プロメテウス: 監視サービス;
- 準備
環境設備:
3 台の 2 コア 4g Ubuntu サーバーは独自の独立したパブリック ネットワーク IP を持ち、3 台のサーバー間のネットワークの相互運用性を確保し、同時にスワップ パーティションを禁止します。
クラスター計画: マルチマスター展開。
デプロイメント方法: kubeadm デプロイメント ツールに基づく、バイナリ パッケージのデプロイメントに基づく (学習のため、両方を練習します) (選択は状況に応じて異なります)