質問: 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上でポートフォワードさせればよいかと思ったのですが、うまくいきません。 以下に作業内容を貼りますので何か気づく点があったら教えていただきたいです。 ``` 1クラスタを作成する 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 281番ポートでコンテナID 8ae07dba6e1f を起動させる kubectl run ga-deploy \ --image=asia.gcr.io/friendly-access-227417/ga-k8s-test2:ga \ --replicas=1 \ --port=81 \ --limits=cpu=200m 380番へのアクセスを81番へポートフォワードさせる設定で2をexposeする。 kubectl expose deployment ga-deploy --port=80 --target-port=81 --type=LoadBalancer ```
回答: 根本解決は全然できていませんが、閲覧することはできました。 なんとなく原因は分かりました・・・。 ### 原因 コンテナ内で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が起動しているかどうかも分かったと思うので、質問もしなくて済んだかな というカンジです。