kstm-su / ictsc_2020_yrfw_pre

0 stars 0 forks source link

経路を受け取れない #11

Open z1ploc opened 3 years ago

z1ploc commented 3 years ago

概要

k8sのクラスターを、マスター1台(master)、ワーカー2台(worker01, worker02)、ロードバランサー1台(lb)という構成で構築しました。 ロードバランサーにはHAProxyを用いており、kube-apiserverであるmaster(172.16.0.1:6433)へのプロキシと、各ワーカーの30080のNodePort(172.16.0.11:30080, 172.16.0.12:30080)へのロードバランシング, k8sクラスタの各ノードのデフォルトゲートウェイとしてiptablesを用いたMasqueradeを行っています。

k8sクラスタでは、nginxをreplica 数1つで展開するDeploymentと、それを外部にNodePort 30080で公開するServiceが作成されています。 このnginxに対して外部(external)からの通信においてhost01からのみアクセスできるといったアクセス制限を行うため、NetworkPolicyを用いて制限をかけたところ、host01からもアクセスできなくなってしまいました。

なぜhost01からもアクセスできないのか原因と解決方法、解決でき再起動しても問題のない作業手順を報告してください。

image

前提条件

アクセス制限はNetworkPolicyを用いること k8sクラスターにはSSHなどでログインできない host01の/home/user/.kube/configにkubeconfigが保存されており、kubectlコマンドでk8sクラスタを利用できる host01の/home/user/manifestsに今回使用した各マニフェストが保存されている

初期状態

host01からcurl -m 2 192.168.0.1:30080 を実行してタイムアウトになる host02からcurl -m 2 192.168.0.1:30080 を実行してタイムアウトになる k8sにNamespace, Deployment, Service, NetworkPolicyが適用されている

終了状態

NetworkPolicyを利用してhost01からの通信のみを許可している host01からcurl -m 2 192.168.0.1:30080 を実行してk8sでデプロイしたnginxのデフォルトページを表示できる host02からcurl -m 2 192.168.0.1:30080 を実行してタイムアウトになる 終了状態が永続化されている(再起動しても上記の終了状態を確認することができる)