Ansible の Kubernetes モジュールを使用したコンテナ オーケストレーションの自動化

Ansible の Kubernetes モジュールを使用したコンテナ オーケストレーションの自動化

[[349188]]

Kubernetes と Ansible を組み合わせてクラウドを自動化します。また、Ansible k8s モジュールのチートシートもご覧ください。

Ansible は作業を自動化するための優れたツールであり、Kubernetes はコンテナ オーケストレーションのための強力なツールです。この2つを組み合わせるとどうなるでしょうか?ご想像のとおり、Ansible + Kubernetes はコンテナ オーケストレーションを自動化できます。

Ansibleモジュール

実際、Ansible 自体は YAML ファイルを解釈するためのフレームワークにすぎません。その真の強みは豊富なモジュールにあります。モジュールモジュールつまり、Ansibleではスクリプトプレイブック簡単な設定で外部アプリケーションのいくつかのツールを呼び出すことができます。

AnsibleにはKubernetesを直接操作できるモジュールのほか、関連コンポーネント(DockerやPodmanなど)を操作するモジュールもあります。新しいモジュールの使い方を学習するプロセスは、新しい端末コマンドや API を学習するプロセスと同じです。まず、ドキュメントから、モジュールを呼び出すときにモジュールが受け入れる必要があるパラメータと、これらのパラメータが外部アプリケーションに与える具体的な影響について学習できます。

Kubernetes クラスターへのアクセス

Ansible Kubernetes モジュールを使用する前に、Kubernetes クラスターにアクセスできる必要があります。権限がない場合は、短期のオンライントライアルアカウントを使用して試すこともできますが、Kubernetes 公式サイトの指示に従うか、Braynt Son の「Kubernetes 入門」チュートリアルを参照して Minikube をインストールすることをお勧めします。 Minikube は、完全なクラスターであるかのように構成および操作できる単一ノードの Kubernetes インスタンスのインストールを提供します。

  • Ansible k8s shorthand をダウンロードする (登録が必要)

Minikube をインストールする前に、環境が仮想化をサポートしていることを確認し、 libvirtをインストールして、 libvirtユーザー グループを承認する必要があります。

  1. $ sudo dnf install libvirt
  2. $ sudo systemctl start libvirtd
  3. $ sudo usermod -- append -- groups libvirt `whoami`
  4. $ newgrp libvirt

Pythonモジュールのインストール

Ansible で Kubernetes 関連モジュールを使用するには、次の Python モジュールをインストールする必要があります。

  1. $ pip3 . 6 install kubernetes -- user
  2. $ pip3 . 6 install openshift -- user

Kubernetesを起動する

完全な Kubernetes クラスターの代わりに Minikube を使用している場合は、 minikubeコマンドを使用して最小限の Kubernetes インスタンスをローカルに作成します。

  1. $ minikube start -- driver = kvm2 -- kvm - network default

次に、Minikube の初期化が完了するまで待ちます。このプロセスに必要な時間は、実際の状況によって異なる場合があります。

クラスター情報を取得する

クラスターが起動したら、 cluster-infoオプションを使用してクラスター関連の情報を取得できます。

  1. $ kubectl cluster - info
  2. Kubernetes master is running at https : //192.168.39.190:8443
  3. KubeDNS is running at https : //192.168.39.190:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
  4. To further debug and diagnose cluster problems , use 'kubectl cluster-info dump' .

k8sモジュールの使用

Ansible は、 k8sモジュールを使用して Kubernetes での操作を実装します。スクリプトでk8sモジュールを使用すると、Kuvernetes オブジェクトを管理できます。このモジュールは、 kubectlコマンドの最終ステータスについて説明します。たとえば、 kubectlを使用して新しい名前空間を作成する次の操作の場合:

  1. $ kubectl create namespace my - namespace

これは非常に単純な操作であり、この操作の最終状態は次のように YAML ファイルに記述されます。

  1. - hosts : localhost
  2. tasks :
  3.     - name : create namespace
  4. k8s :
  5. name : my - namespace
  6. api_version : v1
  7. kind : Namespace
  8. state : present

Minikube を使用している場合は、ホスト名 ( hosts ) をlocalhostとして定義する必要があります。使用しているモジュールによって、使用可能なパラメータ ( api_versionkindパラメータなど) の構文も定義されることに注意してください。

このスクリプトを実行する前に、 yamllintコマンドを使用してエラーがないか確認してください。

  1. $ yamllint example . yaml

エラーがないことを確認した後、スクリプトを実行します。

  1. $ ansible - playbook ./ example . yaml

新しい名前空間が作成されたかどうかを確認できます。

  1. $ kubectl get namespaces
  2. NAME STATUS AGE
  3. default           Active   37h
  4. kube - node - lease Active   37h
  5. kube - public       Active   37h
  6. kube - system Active   37h
  7. demo Active   11h
  8. my - namespace       Active   3s

Podman を使用してコンテナ イメージをプルする

コンテナは、ほぼ最小限で、Kubernetes によって管理できる Linux システムです。 LXC プロジェクトと Docker は、コンテナ仕様の大部分を定義します。コンテナ ツールセットに最近追加されたのが Podman です。これは実行にデーモンを必要としないため、多くのユーザーに歓迎されています。

Podman を使用すると、Docker Hub や Quay.io などのリポジトリからコンテナ イメージをプルできます。この操作の Ansible 構文も非常にシンプルです。リポジトリ Web サイトによって提供されるミラー パスをスクリプト内の対応する位置に記述するだけです。

  1.     - name : pull an image
  2. podman_image :
  3. name : quay . io / jitesoft / nginx

yamllintを使用して検証します。

  1. $ yamllint example . yaml

プレイブックを実行します。

  1. $ ansible - playbook ./ example . yaml
  2. [ WARNING ]: provided hosts list is empty , only localhost is available .
  3. Note that the implicit localhost does not match 'all'
  4. PLAY [ localhost ] ************************
  5. TASK [ Gathering Facts ] ************************
  6. ok : [ localhost ]
  7. TASK [ create k8s namespace ] ************************
  8. ok : [ localhost ]
  9. TASK [ pull an image ] ************************
  10. changed : [ localhost ]
  11. PLAY RECAP ************************
  12. localhost : ok = 3 changed = 1 unreachable = 0 failed = 0
  13. skipped = 0 rescued = 0 ignored = 0

Ansibleを使用したデプロイメント

Ansible は、小さなメンテナンス タスクを実行するだけでなく、2 つの YAML ファイルの間にわずかな違いしかないため、プレイブックを通じてkubectlによって実装された他の機能も実装できます。 Kubernetes で使用される YAML ファイルは、わずかな変更を加えるだけで Ansible プレイブックで使用できます。たとえば、次の YAML ファイルは、 kubectlコマンドを使用して Web サーバーをデプロイするために使用されます。

  1. apiVersion : apps / v1
  2. kind : Deployment
  3. metadata :
  4. name : my - webserver
  5. spec :
  6. selector :
  7. matchLabels :
  8. run : my - webserver
  9. replicas : 1
  10.   template :
  11. metadata :
  12. labels :
  13. run : my - webserver
  14. spec :
  15. containers :
  16.       - name : my - webserver
  17. image : nginx
  18. ports :
  19.         - containerPort : 80

パラメータに精通している場合は、YAML ファイルの内容のほとんどをプレイブックのdefinition部分に配置すると、Ansible でパラメータを使用できます。

  1.     - name : deploy a web server
  2. k8s :
  3. api_version : v1
  4.         namespace : my - namespace
  5. definition :
  6. kind : Deployment
  7. metadata :
  8. labels :
  9. app : nginx
  10. name : nginx - deploy
  11. spec :
  12. replicas : 1
  13. selector :
  14. matchLabels :
  15. app : nginx
  16.             template :
  17. metadata :
  18. labels :
  19. app : nginx
  20. spec :
  21. containers :
  22.                   - name : my - webserver
  23. image : quay . io / jitesoft / nginx
  24. ports :
  25.                       - containerPort : 80
  26. protocol : TCP

実行が完了したら、 kubectlコマンドを使用して期待される結果を確認できます。展開する展開:

  1. $ kubectl - n my - namespace get pods
  2. NAME READY STATUS
  3. nginx - deploy - 7fdc9 - t9wc2 1 / 1     Running

クラウド上のモジュールの使用

開発と展開の作業がクラウドに移行するにつれて、クラウド上で自動化を実現する方法を理解する必要があります。 k8sモジュールとpodman_imageモジュールは、クラウド開発のほんの一部にすぎません。ワークフローには自動化が必要なタスクがいくつかあり、Ansible を使用してこれらのタスクをより効率的に実行する方法を学ぶことができます。

<<:  Docker ボリュームとは何でしょうか?使い方から徹底解説まで!

>>:  クラウド コンピューティングの容量管理の重要性とその実装方法

推薦する

メガレイヤー:CN2ネットワークVPS/無制限トラフィック、最低199元/年、オプションで香港/米国/シンガポール/フィリピンのデータセンター

Megalayer は、香港、中国、サンノゼ、米国、シンガポール、フィリピンのデータセンターで VP...

Linux システムのハードディスクがいっぱいになった場合はどうすればいいですか?

VPS や専用サーバーを使用すると、システムディスクがいっぱいになって使用できなくなる状況によく遭遇...

ジャック・マーが大手Vを莱王に招待、最初のパブリックアカウントのテストを開始 - A5ウェブマスターネットワーク

モーニングポストニュース(記者 韓元佳)アリババ会長のジャック・マーは「WeChatとの別れ」を発表...

中国本土居住者向け香港株投資ガイド

中国本土の住民の投資チャネルは比較的狭く、銀行の貯蓄金利は低く、A株市場は長期の弱気相場にあり、ベビ...

ウェブサイトの構築は静的ではいけません。長期的なランキングを維持するには革新が唯一の方法です。

インターネットの発展に伴い、検索エンジンはユーザーエクスペリエンスにますます重点を置くようになりまし...

tripodcloud: 信頼性の高い米国の cn2 gia vps、12% 割引、3 つのネットワークへの直接接続 (China Telecom CN2 GIA\China Unicom AS4837\China Mobile CMI)

Tripodcloud は本当に変わったビジネスです。2001 年の設立以来、宣伝やプロモーションを...

クラウド コンピューティングはホテルに例えられるでしょうか?クラウドコンピューティングについて話しましょう

クラウドコンピューティングは国家戦略のレベルにまで高められており、工業情報化部は「2019年までに中...

タイトルの長さがSEOの結果に与える影響についての簡単な説明

タイトルの長さは SEO に影響しますか? 答えは、間違いなく「はい」です。しかし、長くすべきか短く...

ローカルWeChatパブリックアカウントとウェブサイトを組み合わせる操作パス

私は10年以上ウェブサイトを作ってきましたが、PCウェブサイトの操作がますます難しくなっていると感じ...

キーワードの多様性の重要性

Xiaoshou は、潜在的な顧客とキーワード最適化の単語について話し合ったことを今でも覚えています...

maximumvps-kvmは、最低年間8.5ドルの支払いで完全に利用可能です。

MaximumVPS は長い間在庫切れでした。MaximumVPS.net がプロモーション情報をリ...

百度のホームページで急速にランク付けするための6つの単語のマントラ

すべてのウェブマスターがウェブサイトの構築に一生懸命取り組んだ後、次に最も重要なことは、正確にターゲ...

中小規模の販売業者が陥りやすい検索トラップ

中小規模の販売者にとって、ダイヤモンドブースを設置する資金があまりない場合、電車やタオバオの顧客を通...

短編動画の戦いでは、Xigua VideoとiQiyiのどちらが優れているでしょうか?

2019年10月20日、西瓜動画の任立峰社長は、今後1年間で西瓜動画が動画クリエイターに少なくとも2...

マイクロソフト、グローバル教育の未来をサポートする新しい Teams 機能をリリース

マイクロソフトは本日、教師と生徒が来年度に向けて新しいリモートおよびハイブリッド教育方法を導入できる...