3

kubernetes のセットアップは正常に実行されていますが、サービスを外部に公開していないようです。ネットワークが正しく設定されていないと思います:

kubernetes サービス アドレス: --service-cluster-ip-range=172.16.0.1/16

フランネルネットワーク構成: etcdctl get /test.lan/network/config {"Network":"172.17.0.0/16"}

docker サブネット設定: --bip=10.0.0.1/24

ホストノード IP: 192.168.4.57

nginx サービスを実行しており、次のように公開しようとしました。

[root@kubemaster ~]# kubectl get pods
NAME          READY     STATUS    RESTARTS   AGE
nginx-px6uy   1/1       Running   0          4m
[root@kubemaster ~]# kubectl get services
NAME         LABELS                                    SELECTOR    IP(S)           PORT(S)    AGE
kubernetes   component=apiserver,provider=kubernetes   <none>      172.16.0.1      443/TCP    31m
nginx        run=nginx                                 run=nginx   172.16.84.166   9000/TCP   3m

次に、次のようにサービスを公開しました。

kubectl expose rc nginx --port=9000 --target-port=9000 --type=NodePort
NAME      LABELS      SELECTOR    IP(S)     PORT(S)    AGE
nginx     run=nginx   run=nginx             9000/TCP   292y

ホストノード IP (192.168.4.57) で nginx コンテナーにアクセスできるようになることを期待しています - ネットワークを誤解していませんか? もしあれば、説明をいただければ幸いです:(

注: これは、クラウド プロバイダーが提供するロード バランサーのない物理ハードウェア上にあるため、NodePort が唯一の選択肢だと思います。

4

3 に答える 3

2

ここでの問題は、nodePort を使用するときにパズルのピースが欠けていることです。

また、コマンドを間違えていました。

まず、適切なポート (この場合は nginx の場合は 80) を公開していることを確認する必要があります。

kubectl expose rc nginx --port=80 --type=NodePort

次に、使用する必要がありkubectl describe svc nginx、各ノードに割り当てられている NodePort が表示されます。

[root@kubemaster ~]# kubectl describe svc nginx
Name:           nginx
Namespace:      default
Labels:         run=nginx
Selector:       run=nginx
Type:           NodePort
IP:         172.16.92.8
Port:           <unnamed>   80/TCP
NodePort:       <unnamed>   32033/TCP
Endpoints:      10.0.0.126:80,10.0.0.127:80,10.0.0.128:80
Session Affinity:   None
No events.

もちろん、デプロイ時に割り当てることもできますが、ランダムに割り当てられたポートを使用している場合、この情報がありませんでした。

于 2015-12-24T12:55:04.733 に答える