Kubernetes 上にデプロイ¶
Docker デスクチップはスタンドアロン Kubernetes サーバとクライアントを含むだけでなく、Docker コマンドライン・インターフェースと統合しています。 Kubernetes サーバはローカルの Docker インスタンス内で実行します。設定の変更はできず、単一ノードのクラスタです。
ローカルシステム上の Docker コンテナ内で Kubernetes サーバが稼働します。また、用途はローカルでのテストのみです。Kubernetes サポートを有効化したら、Kubernetes 、 Swarm 、そしてスタンドアロン・コンテナを、それぞれ並列にワークロードをデプロイ可能となります。
Kubernetes を有効化し、 Kubernetes 上にワークロードをデプロイするテストを開始するには、 Docker Desktop for Mac > Docker for Mac を始めよう を御覧ください。
Docker コマンドを使う¶
docker stack deploy
に docker-compose.yml
ファイルとスタック名を使い、Kubernetes 上にスタックをデプロイ可能です。
docker stack deploy --compose-file /path/to/docker-compose.yml mystack
docker stack services mystack
デプロイしたサービスは kubectl get services
コマンドで表示できます。
名前空間の指定¶
デフォルトでは default
namespace (名前空間)が使われます。名前空間は --namespace
フラグで指定します。
docker stack deploy --namespace my-app --compose-file /path/to/docker-compose.yml mystack
kubectl get services -n my-app
の実行は、 my-app
名前空間にデプロイしているサービスのみ表示します。
デフォルトのオーケストレータを上書き¶
Kubernetes でテストをしながら、複数のワークロードを swarm モードにデプロイしたい場合があるでしょう。 DOCKER_STACK_ORCHESTRATOR
環境変数を使い、操作中のターミナル・セッションや単一の Docker コマンドで、デフォルトのオーケストレータを上書きします。この環境変数は 設定されていない (デフォルト、この場合はオーケストレータが Kubernetes)か、 swarm
または kubernetes
をセットします。以下はコマンドを実行する前に環境変数を設定し、単一デプロイメント用のオーケストレータを上書きするコマンドです。
DOCKER_STACK_ORCHESTRATOR=swarm docker stack deploy --compose-file /path/to/docker-compose.yml mystack
あるいは、デプロイメント向けのデフォルト・オーケストレータをデプロイ時に上書きする場合は、 --orchestrator
フラグでも設定できます。
docker stack deploy --orchestrator swarm --compose-file /path/to/docker-compose.yml mystack
注釈
Kubernetes と swarm モードで同じアプリをデプロイすると、ポートやサービス名に競合を引き起こす場合があります。
kubectl コマンドを使う¶
Windows Kubernetes 統合機能により、Kubernetes CLI コマンドが /usr/local/bin/kubectl
に提供されています。この場所はシェルの PATH
変数に入っていない場合があるため、コマンドはフルパスで実行するか、 PATH
に追加する必要があります。 kubectl
に関する情報は、 公式 kubectl ドキュメント を御覧ください。コマンドのテストは、利用可能なノード一覧の表示で行えます。
kubectl get nodes
NAME STATUS ROLES AGE VERSION
docker-desktop Ready master 3h v1.8.2
アプリ例¶
Docker は以下のデモ用アプリケーションを作成しました。 docker stack deploy
コマンドを使って swarm モードや Kubernetes にデプロイできます。
version: '3.3'
services:
web:
image: dockersamples/k8s-wordsmith-web
ports:
- "80:80"
words:
image: dockersamples/k8s-wordsmith-api
deploy:
replicas: 5
endpoint_mode: dnsrr
resources:
limits:
memory: 50M
reservations:
memory: 50M
db:
image: dockersamples/k8s-wordsmith-db
既に Kubernetes YAML ファイルがある場合は、 kubectl
コマンドを使ってデプロイできます。
参考
- Deploy on Kubernetes
- https://docs.docker.com/docker-for-mac/kubernetes/