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 ボリュームとは何でしょうか?使い方から徹底解説まで!

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

推薦する

IaaS とは何でしょうか?

「クラウド コンピューティング」という概念は 2006 年に初めて提案されて以来、もはや奇妙な概念で...

ikoula、E3-1220V5/16g メモリ/1T ハードディスク/100M 無制限トラフィック

ikoula は、非常に優れた構成条件と安価な価格の特別なサーバーを立ち上げました。ご興味があれば、...

簡単な分析: 個人ブログサイトから利益を得る方法

この記事の著者は、まったくの初心者で、まったくの初心者です。以下では、ブログを運営して収益を上げる方...

V.PSはどうですか?英国AS9929ネットワーククラウドサーバーの評価

v.psはどうですか? v.ps イギリスはどうですか?公式発表によると、v.ps UKクラウドサー...

Baidu の最近の調整か​​らどのような洞察が得られましたか?

最近、百度は多大な努力をしています。多くのジャンクサイト、重複サイトなどがダウングレードまたはK化さ...

新疆のウェブマスターの皆様へ:9月15日には6,000以上のウェブサイトが登録抹消される予定です

以前、A5は、関連する専門資格が必要であるため、新疆のウェブマスターの登録が拒否されたと報じた。ウェ...

デジタル経済の展望に関する白書

「デジタル経済白書」は​​、アナリシスがデジタル経済の各業界で培った経験とデータの蓄積を凝縮し、デジ...

ビッグデータ環境におけるニッチなウェブサイト向けのインターネットマーケティング手法の例

少し前にA5で「ビッグデータ環境における起業のチャンス」という記事を見たのを覚えています。私は主流の...

14 個の PPT ですべてのプロモーション チャネルとその特徴を習得できます。

モバイルアプリケーション製品プロモーションサービス: ASO最適化サービス Cucumber Adv...

推奨: TmzVPS - $6/2g メモリ/8 コア/100g ハードディスク/2T トラフィック/G ポート/ロサンゼルス/webnx

tmzvps.com の最新の VPS プロモーション情報: 50% オフの割引コード: L5T6Y...

さらにパワフルなパフォーマンス! Nehalem サーバー プラットフォームがテストされました。

45nm Xeon プロセッサ (コード名 Penryn) については、皆さんすでにご存知だと思いま...

瞬きする間に、情報は 17 億回更新されます。 Alibaba Cloud オープンソースのリアルタイムコンピューティングプラットフォーム

Alibaba Cloud は、コンピューティングの「エベレスト」に挑戦するオープンソースのリアルタ...

Zadig + Dongtai IAST: 継続的デリバリーへのセキュリティの統合

IAST は現在注目されているセキュリティテスト技術です。 Zadig のランタイム環境管理機能を使...

hostvds: 月額 5.49 元、ロシアの OpenStack クラウド サーバー、1G メモリ/1 コア/10g NVMe、無制限のトラフィック

Skyhostは新しいブランドhostvdsを立ち上げました。このブランドは、OpenStackクラ...

ウェブサイトを最適化したいですか?これらの重要なポイントに気づきましたか?

月収10万元の起業の夢を実現するミニプログラム起業支援プランウェブサイトの最適化は、今日多くの企業に...