前提・実現したいこと
compose-on-kubernetesという、docker-composeのyamlファイルを元にKubernetes上で動かしてくれるツールがあります。
公式リポジトリのサンプルを動かしてブラウザから接続できるようにしたいです。
発生している問題・エラーメッセージ
公式リポジトリのトップのREADMEの通りに動かしていますが、起動したサービスに期待した通りにブラウザから接続できません。
こちらのサイト(Compose on Kubrenetes を使ってみる)でもサンプルの動かし方が説明されています。
そこでは起動後に以下のようにブラウザからアクセスできると書いてありますが、http://localhost:33000
では以下の画像のようにアクセスできませんでした。
docker-compose.yml にあるように http://localhost:33000 にアクセスできる。
該当のソースコード
実行したコマンドを書きます。以下のステップで起動します。
bash
1#リポジトリのクローン 2$ git clone https://github.com/docker/compose-on-kubernetes.git 3 4#サンプルのディレクトリに移動 5$ cd compose-on-kubernetes/samples 6 7#起動 8$ docker stack deploy --orchestrator=kubernetes -c docker-compose.yml hellokube
実行すると、以下のような状態になりました。
$ kubectl get all --all-namespaces NAMESPACE NAME READY STATUS RESTARTS AGE default pod/db-0 1/1 Running 0 31s default pod/web-7d58dc945-5dl92 1/1 Running 0 31s default pod/words-84d9ff9d4d-569n7 1/1 Running 0 31s default pod/words-84d9ff9d4d-8m57r 1/1 Running 0 31s default pod/words-84d9ff9d4d-hjtnf 1/1 Running 0 31s default pod/words-84d9ff9d4d-hltrt 1/1 Running 0 31s default pod/words-84d9ff9d4d-pjrhm 1/1 Running 0 31s docker pod/compose-7b7c5cbbcc-zn7mm 1/1 Running 0 89s docker pod/compose-api-dbbf7c5db-fp52g 1/1 Running 0 89s kube-system pod/coredns-5c98db65d4-7zq4w 1/1 Running 1 2m37s kube-system pod/coredns-5c98db65d4-fgwdk 1/1 Running 1 2m37s kube-system pod/etcd-docker-desktop 1/1 Running 0 92s kube-system pod/kube-apiserver-docker-desktop 1/1 Running 0 92s kube-system pod/kube-controller-manager-docker-desktop 1/1 Running 0 90s kube-system pod/kube-proxy-vz7cn 1/1 Running 0 2m37s kube-system pod/kube-scheduler-docker-desktop 1/1 Running 0 80s NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE default service/db ClusterIP None <none> 55555/TCP 31s default service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 2m47s default service/web ClusterIP None <none> 55555/TCP 31s default service/web-published LoadBalancer 10.109.159.146 localhost 80:31672/TCP 31s default service/words ClusterIP None <none> 55555/TCP 31s docker service/compose-api ClusterIP 10.102.27.216 <none> 443/TCP 89s kube-system service/kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP,9153/TCP 2m46s NAMESPACE NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE kube-system daemonset.apps/kube-proxy 1 1 1 1 1 beta.kubernetes.io/os=linux 2m45s NAMESPACE NAME READY UP-TO-DATE AVAILABLE AGE default deployment.apps/web 1/1 1 1 31s default deployment.apps/words 5/5 5 5 31s docker deployment.apps/compose 1/1 1 1 89s docker deployment.apps/compose-api 1/1 1 1 89s kube-system deployment.apps/coredns 2/2 2 2 2m46s NAMESPACE NAME DESIRED CURRENT READY AGE default replicaset.apps/web-7d58dc945 1 1 1 31s default replicaset.apps/words-84d9ff9d4d 5 5 5 31s docker replicaset.apps/compose-7b7c5cbbcc 1 1 1 89s docker replicaset.apps/compose-api-dbbf7c5db 1 1 1 89s kube-system replicaset.apps/coredns-5c98db65d4 2 2 2 2m37s NAMESPACE NAME READY AGE default statefulset.apps/db 1/1 31s
試したこと
kubectl proxy
を使っての接続
次のコマンドで接続するべきサービス名を見つけます。接続するのは web-published
ということにします。
$ kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE db ClusterIP None <none> 55555/TCP 35m kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 37m web ClusterIP None <none> 55555/TCP 35m web-published LoadBalancer 10.109.159.146 localhost 80:31672/TCP 35m words ClusterIP None <none> 55555/TCP 35m
次のコマンドを打ちます。
$ kubectl proxy
そしてブラウザからURL http://127.0.0.1:8001/api/v1/namespaces/default/services/web-published:80/proxy/
にアクセスしました。
不完全ながらページが表示されます。(おもちゃのブロックの中の文字が出てない点が不完全。 Chromeの開発者ツールのコンソールには次のように出ています。 Failed to load resource: net::ERR_CONNECTION_REFUSED :8001/words/noun:1
)
なお本来どういうページかは参考サイト(Compose on Kubrenetes を使ってみる)に画像があります。
参考サイトの画像だとサイトのタイトルがdockercon18EUで、僕が試したらdockercon17EUと出るのはなんかひっかかりますが…。もしかしてなにか古いのかも?
Kubernetes環境のリセット
docker desktopのGUIメニューのTroubleshootからReset Kubernetes cluster
とReset disk image
を実行し、再起動しました。
再チャレンジしても同じでした。
補足情報(FW/ツールのバージョンなど)
macOS 10.14.6,
docker desktop ver. 2.2.0.3です
docker engine 19.03.5
Compose 1.25.4
Kubernetes v1.15.5
あなたの回答
tips
プレビュー