クラウドネイティブアーキテクチャ
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 を通じて作業ノードとしてこのクラスターに参加できます。