Docker Compose and Kubernetes with Docker for Desktop

デスクトップでエッジ バージョンの Docker (Docker for Mac または Docker for Windows Desktop ) を実行している場合、ボタンをクリックするだけで単一ノードの Kubernetes クラスターを立ち上げることができるようになりました。 私は開発者ではありませんが、他のツールをインストールしなくても完全に準拠したKubernetesクラスターをすぐに利用できるようになったため、MacbookまたはWindowsラップトップでDockerをすでに使用している何百万人もの開発者にとって、これは素晴らしいニュースだと思います。

Docker を使用してコンテナー化されたアプリケーションを構築する開発者は、多くの場合、Docker Compose ファイルをビルドしてデプロイします。 Kubernetes を Docker 製品ラインに統合することで、一部の開発者は既存の Compose ファイルを活用しながら、これらのアプリケーションを Kubernetes にデプロイしたい場合があります。

デスクトップ上の Docker (および Docker Enterprise Edition) を使用すると、Docker compose を使用してアプリケーションを Kubernetes クラスターに直接デプロイできます。

仕組みは次のとおりです。

Webフロントエンド、ワーカープロセス(words)、データベース)の3層アプリケーションを記述する次のような単純なDocker作成ファイルがあるとしましょう。

Web フロントエンドは、ホスト上のポート 80 からサービス (およびその後の基になるコンテナー) のポート 80 にトラフィックをルーティングするように設定されていることに注意してください。 また、 私たちのワードサービスは5つのレプリカで開始される予定です。

 

サービス:
  ウェブ:
    ビルド: ウェブ
    画像:ドッカーデモス/ラボウェブ
    ボリューム:
     - "./web/static:/static"    ポート:
     - "80:80"

言葉:
    ビルド:ワード[すくりっく:か
    画像:ドッカーデモ/ラボワード
    展開:
      レプリカ: 5
      endpoint_mode: DNSRR
      リソース:
        切り:
          メモリ: 16M
        予約:
          メモリ: 16M

.db:
    ビルド: データベース
    画像:Dockerdemos/Lab-DB

私は Docker for Mac を使用しており、Kubernetes が既定のオーケストレーターとして設定されています。 このアプリケーションをデプロイするには、作成ファイルの名前( words.yaml )を指定して dockerスタックデプロイ を使用するだけですとスタックの名前(単語)。本当にクールなのは、これがDocker Swarmで使用するのとまったく同じコマンドになることです。

$ docker stack deploy --compose-file words.yaml words
スタックワードが作成されました
スタックが安定して実行されるのを待っています...
 - サービスデータベースには1つのコンテナが実行されています
 - サービスワードで 1 つのコンテナが実行されている
 - サービス Web では 1 つのコンテナーが実行されています
スタックワードは安定しており、実行されています

 

内部では、作成ファイルによって、 kubectl を使用して表示できる 一連のデプロイ ポッド 、 およびサービス が作成されています 。

 
$ kubectl get deployment
希望する名前 現在利用可能な年齢
デシベル 1 1 1 1 2m
ウェブ 1 1 1 1 2M
単語 5 5 5 5 2m

$ kubectl Get Pods
名前の準備完了状態が経過時間を再起動します
db-5489494997-2krr2 1/1ランニング0 2m
ウェブ-DD5755876-DHNKH 1/1 ランニング 0 2m
単語-86645d96b7-8whpw 1/1ランニング0 2m
ワード-86645d96b7-dqwxp 1/1ランニング0 2m
単語-86645d96b7-nxgbb 1/1ランニング0 2m
ワード-86645D96B7-p5qxh 1/1ランニング0 2m
単語-86645D96B7-VS8x5 1/1ランニング0 2m

$ kubectl サービスを受ける
名前の種類 クラスタ IP 外部 IP ポートの経過時間
db クラスタ IP なし 55555/TCP 2m
ウェブクラスタIPなし55555/TCP 2m
ウェブ公開ロードバランサー10.104.198.84 80:32315 / TCP 2m
単語 クラスタIP なし 55555/TCP 2m

サービスのリストを見ると、一見少し奇妙に見えることに気付くかもしれません。 ウェブ とウェブ公開 の両方の サービスがあります。Web サービスはアプリケーション内通信を可能にしますが、 Web 公開サービス (Docker for Mac の vpnkit によってサポートされるロード バランサー) は、Web フロントエンドを世界中の人々に 公開 します。

したがって、http://localhost:80 にアクセスすると、アプリケーションが実行されていることがわかります。 あなたは実際にこのビデオでプロセス全体を見ることができますエルトン 記録。

Bb2ab502 568a 40f5 b2a5 7104c485ba75 2

ここで、サービスを削除したい場合は、 kubectlを使用してデプロイを削除すると思うかもしれません(私はそうしました)。 しかし、実際に行うことはdockerスタックrmを使用することであり、スタックを起動したときに作成されたすべてのコンポーネントが削除されます。

$ ドッカースタックrmワード
スタックの削除:単語

$ kubectl get deployment
リソースが見つかりません

そして、私にとってクールなことは、これと同じプロセスをDocker EEで使用できることです-私は単にComposeファイルを取得して、Docker Enterprise Edition(EE)のUIに直接デプロイします-しかし、それは別の投稿です。

自分で試してみませんか? Docker for Mac または Docker for Windows を入手しますが、詳細についてはドキュメント (Mac および Windows) を確認してください。

詳細情報: