質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.13%

GoogleContainerEngine/k8s のポートフォワードがうまくいかない?

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 645

bakaemon

score 35

81番ポートをLISTENするテスト用apacheコンテナを作ったのですが、
k8sに上記をデプロイした後ブラウザからアクセスしても、ERR_CONNECTION_REFUSED になってしまいます。

こちらのサイトを見て、記載のある通りのコマンドが最後まで動くことはまず確認しました。
https://qiita.com/yusukixs/items/11601607c629295d31a7

その後、81番ポートを受け付けるコンテナを作って、それがうまくいっていることはDocker上では確認しました。

[root@os3-374-20202 kubernetes_demo]# docker ps
CONTAINER ID        IMAGE                                                COMMAND                  CREATED             STATUS              PORTS                                      NAMES
8ae07dba6e1f        asia.gcr.io/friendly-access-227417/ga-k8s-test2:ga   "/sbin/init"             About an hour ago   Up About an hour    80/tcp, 0.0.0.0:81->81/tcp                 ga_k8s-test1
b5b9a182ca27        laradock_beanstalkd                                  "/usr/bin/beanstalkd"    8 hours ago         Up 8 hours          0.0.0.0:11300->11300/tcp                   laradock_beanstalkd_1
54de35884935        laradock_nginx                                       "/bin/bash /opt/star…"   8 hours ago         Up 8 hours          0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   laradock_nginx_1
fce505b944c5        laradock_php-fpm                                     "docker-php-entrypoi…"   8 hours ago         Up 8 hours          9000/tcp                                   laradock_php-fpm_1
cc2c20deff49        laradock_workspace                                   "/sbin/my_init"          8 hours ago         Up 8 hours          0.0.0.0:2222->22/tcp                       laradock_workspace_1
5bb8870c05d4        laradock_mysql                                       "docker-entrypoint.s…"   8 hours ago         Up 8 hours          0.0.0.0:3306->3306/tcp, 33060/tcp          laradock_mysql_1
23968ee56bc4        docker:dind                                          "dockerd-entrypoint.…"   8 hours ago         Up 8 hours          2375/tcp                                   laradock_docker-in-docker_1
ef4e1aa9c143        laradock_redis                                       "docker-entrypoint.s…"   8 hours ago         Up 8 hours          0.0.0.0:6379->6379/tcp                     laradock_redis_1

※一番上の コンテナID 8ae07dba6e1f は81番ポートで待ち受けていて、 
http:xxx.xxx.xxx:81 とURLを指定することでブラウザ上から内容を閲覧できることは確認済み。 

なので、コンテナID 8ae07dba6e1f をk8s上でポートフォワードさせればよいかと思ったのですが、うまくいきません。
以下に作業内容を貼りますので何か気づく点があったら教えていただきたいです。

①クラスタを作成する
gcloud container clusters create --num-nodes=2 ga-test-cluster \
--zone asia-northeast1-a \
--machine-type g1-small \
--enable-autoscaling --min-nodes=2 --max-nodes=5

②81番ポートでコンテナID 8ae07dba6e1f を起動させる
kubectl run ga-deploy \
--image=asia.gcr.io/friendly-access-227417/ga-k8s-test2:ga \
--replicas=1 \
--port=81 \
--limits=cpu=200m

③80番へのアクセスを81番へポートフォワードさせる設定で②をexposeする。
kubectl expose deployment ga-deploy --port=80 --target-port=81 --type=LoadBalancer
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

check解決した方法

0

根本解決は全然できていませんが、閲覧することはできました。
なんとなく原因は分かりました・・・。

原因 コンテナ内でsystemctlコマンドは使えない。

コンテナID 8ae07dba6e1f(問題の81番ポートのコンテナ)  は、systemctlを用いてhttpdの起動管理をしていました。
でも、GCEはコンテナをrunさせるときに -d --priviled オプションをつけてくれないので、
起動したコンテナ内では systemctlを使うことができませんでした。

GCEのPODの中の起動しているコンテナに入って、コマンドで直接httpdを実行させたらうまくいきました。
# /usr/sbin/httpd -f /etc/httpd/conf/httpd.conf

もしかして、DockerのCENTOS7ではsystemctlとかは使わなかったりするんでしょうか?
色々ド素人なのでよくわかりません😥

まずはGCEで起動しているPODの中に入って原因調査するべきでした。そうしたら、httpdが起動しているかどうかも分かったと思うので、質問もしなくて済んだかな というカンジです。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.13%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる