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

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

推薦する

mivocloud - 高セキュリティ無制限トラフィック VPS/5 ユーロ/2g メモリ/40g SSD/openstack

安価で強力なヨーロッパの VPS が必要な場合は、mivocloud を試してみてください。データ ...

PBレベルの分散ストレージであるCephを見てみましょう

最近、友人からストレージ アプリケーションにブロックチェーンを使用するというトピックについて尋ねられ...

vietnix: ベトナム VPS、無制限トラフィック、月額 4.8 ドル、KVM/768m メモリ/15gssd

ベトナムのホスティングプロバイダーである vietnix.vn には、完全な住所、登録番号、電話番号...

WeChatインタラクティブマーケティング運用テンプレート設定戦略

WeChat インタラクティブ マーケティングの別の言い方は、実際には感情マーケティングです。これは...

クラウド導入における高可用性と災害復旧のための 4 つの専門家のヒント

障害が発生した場合でも中断することなく運用を継続するために、高可用性 (HA) と災害復旧 (DR)...

モノのインターネットとクラウド コンピューティングの間にはどのような依存関係があるのでしょうか?

1970 年代には、メインフレーム コンピュータ システムのレンタルが企業の間で人気がありました。こ...

WeChatプロモーションの9つの一般的な方法とテクニック

WeChatプロモーションは、現在多くの人が注目しているものですが、非常に難しい作業でもあります。以...

RedSwitches-55 ユーロ/E3-1230/16 GB RAM/4X1 TB HDD/100 TB Flow/オランダ

Redswitches は 6 歳だと言われていますが、実際のところはわかりません。現在はサーバーレ...

外部リンク環境は楽観的ではないため、ウェブサイトの最適化は内部から始める必要があります

4月25日、Baiduの外部リンク判定に関する議論では、スパム外部リンクの分類と影響が明確に示されま...

Photonvps が全面的に 50% オフ。この機会をお見逃しなく

Photonvps は全品 50% オフ。この機会をお見逃しなく。クーポンコード: HALFOFF ...

Microsoft Azure Kubernetes Serviceには、より効率的で、より安全で、よりスケーラブルな多くの新機能があります。

Microsoft は最近、効率性の向上、コストの最適化、スケーラビリティ、ネットワークとセキュリテ...

2018 Oracle Cloud Conferenceが盛大に開幕

2018 Oracle Cloud Conferenceが昨日上海で盛大に開幕しました。 「未来に向...

ウェブサイトの販売機会を増やすためのインバウンド マーケティングの 6 つのステップ

導入6つのステップでウェブサイトの販売機会を増やすことができます。ぜひお試しください!①成功するマー...

SEOERの道は困難です。困難に直面しても前進し続けてください。

SEO に携わるほとんどの同僚にとって、現段階で SEO を行うことは確かに非常に困難であり、将来は...

404 公共福祉の観点から見たソーシャルメディアの社会的責任

毎日、何百万、何千万もの 404 プロンプト ページが表示されます。このような退屈なページ リソース...