Kubernetesのドキュメントを何時間も掘り下げてきました。コアデザイン、およびサービス、コントローラー、ポッドなどの概念を理解しています。
しかし、私が理解していないのは、クラスターを宣言的に構成できるプロセスです。つまり、構成ファイル(またはそのセット)を作成して、クラウド展開の構成とスケーリングオプションを定義する方法です。大量のcliコマンドを実行せずに、どのポッドにどのコンテナーが必要か、どのように通信するか、どのようにスケーリングするかなどを宣言できるようにしたいと思います。
あります docker-compose Kubernetesの機能?
手動のcli対話に依存せずに、バージョン管理されたgitでアプリケーションを定義する必要があります。
これを簡潔に行うことは可能ですか?公式文書よりも明確な参照はありますか?
Dockerは、kubernetesクラスターのdocker-compose
機能を正式に発表しました。そのため、今後は、kubernetesリソースをファイルに構成し、その単一のファイルを使用してそれらを適用できます。
まず、KubernetesコントローラーにComposeをKubernetesクラスターにインストールする必要があります。このコントローラーは、標準のKubernetes拡張ポイントを使用して、Stack
をKubernetes APIに導入します。完全なドキュメントを確認して、docker composeコントローラーをインストールします。
簡単なyamlファイルを作成してみましょう。
version: "3.7"
services:
web:
image: dockerdemos/lab-web
ports:
- "33000:80"
words:
image: dockerdemos/lab-words
deploy:
replicas: 3
endpoint_mode: dnsrr
db:
image: dockerdemos/lab-db
次に、ドッカークライアントを使用して、コントローラーを実行しているKubernetesクラスターにこれをデプロイします。
$ docker stack deploy --orchestrator=kubernetes -c docker-compose.yml words
Waiting for the stack to be stable and running...
db: Ready [pod status: 1/1 ready, 0/1 pending, 0/1 failed]
web: Ready [pod status: 1/1 ready, 0/1 pending, 0/1 failed]
words: Ready [pod status: 1/3 ready, 2/3 pending, 0/3 failed]
Stack words is stable and running
その後、Kubernetes APIを介してこれらのオブジェクトと対話できます。ここで、Services、Pod、Deployments、ReplicaSetsなどの下位レベルのオブジェクトが自動的に作成されていることがわかります。
$ kubectl get deployments
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
deployment.apps/db 1 1 1 1 57s
deployment.apps/web 1 1 1 1 57s
deployment.apps/words 3 3 3 3 57s
これは1回限りのコンバージョンではないことに注意してください。 Kubernetes APIサーバーでの構成では、Kubernetes APIにStackリソースが導入されています。したがって、アプリケーションを構築するのと同じ抽象化レベルですべてをクエリおよび管理できます。これにより、上記の詳細を掘り下げて、物事の仕組みを理解したり、問題をデバッグしたりできますが、ほとんどの場合は必要ありません。
$ kubectl get stack
NAME STATUS PUBLISHED PORTS PODS AGE
words Running 33000 5/5 4m
まだ探しているなら、このツールが役立つかもしれません: https://github.com/kelseyhightower/compose2kube
作成ファイルを作成できます。
# sample compose file with 3 services
web:
image: nginx
ports:
- "80"
- "443"
database:
image: postgres
ports:
- "5432"
cache:
image: memcached
ports:
- "11211"
次に、ツールを使用してkubernetesオブジェクトに変換します。
compose2kube -compose-file docker-compose.yml -output-dir output
これらはこれらのファイルを作成します:
output/cache-rc.yaml
output/database-rc.yaml
output/web-rc.yaml
その後、kubectl
を使用してそれらをkubernetesに適用できます。
既存のDocker Composerファイルがある場合は、 Komposeプロジェクト をご覧ください。
kompose
は、docker-composeに慣れているユーザーがKubernetesに移行するのを支援するツールです。 komposeはDocker Composeファイルを取得し、Kubernetesリソースに変換します。
kompose
は、ローカルDocker開発からKubernetesを使用したアプリケーションの管理に移行するための便利なツールです。 Docker Compose形式のKubernetesリソースマニフェストへの変換は正確ではない場合がありますが、Kubernetesにアプリケーションを最初にデプロイするときに非常に役立ちます。
docker-compose.yaml
ファイルまたは独自のファイルを実行するには、次を実行します。
kompose up
1つの簡単なコマンドでdocker-compose.yaml
をKubernetesの展開とサービスに変換するには:
$ kompose convert -f docker-compose.yaml
INFO Kubernetes file "frontend-service.yaml" created
INFO Kubernetes file "redis-master-service.yaml" created
INFO Kubernetes file "redis-slave-service.yaml" created
INFO Kubernetes file "frontend-deployment.yaml" created
INFO Kubernetes file "redis-master-deployment.yaml" created
INFO Kubernetes file "redis-slave-deployment.yaml" created
詳細については、以下を確認してください: http://kompose.io/
Kubernetesには独自のyamlがあります(「 Deploying Applications 」に示すとおり)
しかし、「 Docker Clustering Tools Compared:Kubernetes vs Docker Swarm 」のように、(ちょうど)Docker用に書かれておらず、独自のシステムがあります。
「 vyshane/kid
」に示すように、docker-composeを使用してKubernetesを起動することもできます: kubectl
コマンドでスクリプトのCLI (バージョン管理可能)。