クラウドネイティブアーキテクチャ

クラウドネイティブアーキテクチャ

1. ドッカー

1.1 鏡の倉庫

ドッカーハブ

1.2 ミラー操作

ダウンロード: docker pull イメージ (nginx、redis)

直接ダウンロードはツールの最新バージョンであり、イメージ名: version でバージョンを指定できます。

削除: docker rmi イメージ名: バージョン番号 (デフォルトは最新)/イメージ ID

1.3 コンテナの操作
1.3.1 イメージを実行します。

docker run [オプション] イメージ [コマンド]

  • docker run 設定項目 イメージ名 起動コマンド (デフォルト、通常は未設定)
    • –name=xxx 実行後のコンテナ名
    • -dはバックグラウンドで実行されます
    • -p パブリック ネットワーク ポート: コンテナ内のポート
    • -v external: 内部ファイルはコンテナ内で外部 Linux システムのファイルにマウントされます。
    • –restart=常に起動するたびに自動的に再起動します
1.3.2 コンテナの操作

初回指定がない場合は、docker update container id --restart = always で設定項目を更新できます。

ただし、docker update ではコンテナのポートを変更できません。

  • docker ps で実行中のコンテナを表示します

  • docker rm コンテナ名/コンテナ ID -f を使用すると、実行中のコンテナを強制的に削除できます

  • docker stop コンテナ ID は実行中のコンテナを停止します

  • docker 開始コンテナ ID

1.3.3 コンテナ内のファイルを操作する

docker exec -it コンテナ ID /bin/bash (コンソール) - 対話モードで動作します

コンテナー (小さい nginx) に入り、コンテナー ファイルを変更します。

1.3.4 コンテナの変更をコミットする

ローカル: docker commit -a "作成者" -m "送信されたコンテンツの説明" コンテナー ID 新しいイメージ名。

リモート:あるコンピュータから別のコンピュータにイメージをインポートします。

1.docker save -o xxx.tar イメージ名: バージョン イメージを圧縮パッケージに圧縮します (load -i コマンドを使用して、パッケージをイメージに解凍できます)

イメージIDを直接使用してパッケージ化した場合、解凍後のイメージ名は none となりますが、dockerタグのイメージID xxx: version を使用することができます。

scp xxx.tar [email protected]は圧縮パッケージをホストに送信します

2. イメージをリモートウェアハウスにプッシュします

  • Docker Hubを登録してリポジトリを作成する
  • docker タグ localimage:localtag new-repo:tagname
  • docker Push 新しいリポジトリ:タグ名
  • プッシュする前に docker ログインにログインする必要があります
  • プッシュが完了したら、他のマシンは docker pull のみを必要とします。
1.3.5 Docker を使用して Java プロジェクトをデプロイする方法

1. 関連イメージ (redis) をインストールします。

2. Java プロジェクトを jar パッケージにパッケージ化します。

3. Java プロジェクトをイメージにパッケージ化する Dockerfile を作成します (docker build -t xxxdemo:vxx )。

4.docker run は Java プロジェクト イメージを実行します

2.Kubernetes

ここに画像の説明を挿入します

コンテナ間の環境は隔離されており、他のコンテナの動作に影響を与えないため、仮想マシンが煩わしいという問題が解決されます。ただし、コンテナーは管理が難しいため、コンテナーの管理と調整には K8S が使用されます。

K8sは分散システムを柔軟に運用できるフレームワークです。

  • サービスの検出と負荷分散
  • アプリケーション メモリのメモリ オーケストレーション、割り当て、リサイクル。
  • 自動展開およびロールバック機能
  • 自動ボックス化計算により、各コンテナーに必要なメモリと CPU を指定できます。
  • 自己修復 (アプリケーションが 1 台のマシンでクラッシュすると、他のマシンに自動的に展開されます)
  • 構成管理
2.1 アーキテクチャ
2.1.1 作業方法

N マスター ノード + N ノード
ここに画像の説明を挿入します
ここに画像の説明を挿入します
すべての動作ノードは API サービスを通じてマスター ノードと通信し、動作ノードへの外部アクセスには kube-proxy が必要です。kubelet はノード内のコンテナのアクティビティ状況をリアルタイムに監視し、問題が発見された場合には API サーバーを通じて意思決定者にタイムリーに通知します。すべてのノード データは ETCD (Redis と同様) に保存されます。

2.2 クラスターの展開

kubelet: ノードマネージャー。

プログラマが使用する kubectl:k8s コンソール

kubeadm: k8s ノードを管理し、ノードの管理を容易にします。kubeadm init を通じてノードをマスター ノードとして指定できます。その後、kubelet はマスター ノードの必要なコンポーネント (ダウンロード イメージ) を作成します: スケジューラー (スケジューラー、エージェント、API サーバー、etcd など)。他のノードは、kubeadm join を通じて作業ノードとしてこのクラスターに参加できます。

おすすめ

転載: blog.csdn.net/qq_50876039/article/details/132953883