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

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

推薦する

Pinduoduoの成功がもたらしたウェブサイトSEO最適化におけるユーザーエクスペリエンスについて考える

2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っています大学に入学...

#Cyber​​Monday# インターネットポート: スウェーデンの VPS、年間 15 ユーロ、4G メモリ/3 コア/100g SSD/10T トラフィック/1Gbps 帯域幅

2008年に設立されたスウェーデンの会社Internetportは現在、サイバーマンデー特別プロモー...

OLTP と OLAP のハイパーコンバージェンス: 次世代クラウドネイティブ データベースの設計

MatrixOne は、将来志向のハイパーコンバージド異機種クラウドネイティブ データベース管理シス...

ミ・メンが撮影した「ミ・メン」のビデオ広告がエアチャイナで紹介された。これはセルフメディアブランドマーケティングの始まりに過ぎない。

ミミ・メンさんは、他人のために何十本もの広告を書いた後、ついに自分自身のビデオ広告を撮影し、春節の旅...

hosteons: 無制限トラフィックの VPS、年間 15 ドルから、メモリ 2 倍 + 20% 割引、Alipay

hosteons の新しいアクティビティ: (1) クーポンコード「DOUBLERAM」を使用して ...

彼は年間何億ドルも稼いでいます。電子書籍を販売している彼は私が今まで見た中で最も素晴らしい人です!

注: この記事はインターネット マーケティングに関する調査とコミュニケーションのみを目的としており、...

クラウドへの効果的な移行のための 7 つのヒント

[[358359]]調査会社ガートナーは、適切な戦略を採用しないと、クラウド プラットフォームに移行...

分散システムに基づく7つのユニークID実装ソリューション、収集する価値がある

概要システムの一意の ID は、システムを設計するときによく遭遇する問題であり、私たちはこの問題に苦...

A5 Yuehuai: SEOはユニークであるべきです。SEOの戦術に従うことの欠点

いつから始まったのかは分かりませんが、「競合他社が新しいコンテンツを発見したら、それに従う」「競合他...

悠雲亭:JD.comがYitaoの価格検索とプラグインをブロックするのは違法ですか?

本日は、B2C ショッピング サイト JD.com と Alibaba グループ傘下の価格比較サイト...

YingxiaotongとGuanjiapo Distribution ERPがMengniu Groupのスマートネットワークの強化を支援

月収10万元の起業の夢を実現するミニプログラム起業支援プラン近年、経済発展と消費のグレードアップに伴...

有名酒類メーカーのネットワークマーケティングを統合する方法

今日、インターネット マーケティングが復活し、無数の中小企業がインターネットに注目しています。今日、...

ホームページのウェブサイトキーワード最適化でウェブサイトを上位にランク付けする

A5で2回連続で記事を公開したところ、なかなかの反響でした。スナップショットが更新されない問題だけで...

Baidu入札広告キーワード配信戦略の詳細な説明

電子商取引を行う者にとって、将来的にさらに大きく成長し、強くなりたいのであれば、百度入札広告は間違い...

コンテナは運用と保守に不可欠な機能となっています。それらがどのようにして生まれたのか知っていますか?

運用・保守業界は2019年に大きな変化を遂げました。多くの新技術の登場に加え、もともと概念段階にあっ...