2

DevOps エンジニアとして Kubernetes と spring cloud マイクロサービスに取り組んでいます。

私が尋ねている問題は、kubernetes クラスターでいくつかのマイクロサービスを実行する開発環境があり (マイクロサービスは kube-dns を使用して相互接続できます)、ローカルで実行されている他のマイクロサービス (開発者が作業している) があるかどうかです。 Eclipse IDE で) いくつかのテストを行います。

ローカルで実行されているこれらのマイクロサービスは、クラスターで実行されている他のマイクロサービスに参加して、正確なジョブを実行する必要があります。どうすればその問題を解決できますか?

4

3 に答える 3

0

これには 2 つの方法があります。接続する必要があるサービスをパブリック (NodePort/LB/Ingress) に公開するか、開発者が実際にクラスター内にアクセスできるようにして、これらのサービスに接続できるようにします。

最初のものは、NginX IngressController や vhost ベースのサービスの公開のようなもので簡単になるはずです (つまり、基本認証でそれらを保護することもできます)。

2番目のものはieで行うことができます。Weave Net (使用するオーバーレイ ネットワークである場合)。このように開発者を中央の k8s クラスターに接続すると、開発者はノードで kube-proxy を実行し、コンテナーを k8s DNS にポイントするだけで済みます。明らかに、これは開発/ステージ クラスターの場合にのみお勧めし、製品にはお勧めしません。

于 2016-12-12T10:39:46.470 に答える
0

kubernetes ポート フォワーディングを使用して、開発中にローカル ホストから kubernetes ネットワーク内のサービスにアクセスします。ポート転送がセットアップされたら、開発時に kubernetes ネットワーク上の他のサービスにアクセスする必要があるサービスのソース コードを変更します。

POD を見つけるには:

kubectl get pods

POD 名は のようなものmy-service-4254283044-n9ik9です。ポート転送を設定します。

kubectl port-forward <POD-TO-FORWARD-TO> 8083:80

編集:ポート転送を行う前に、ターミナルから(1回)Googleクラウドにログインする必要があることに注意してください!次に例を示します。ゾーン、クラスター、およびプロジェクトを必ず配置してください。gcloud container clusters get-credentials example-cluster --zone europe-west1-c --project example-148812

--------いくつかの例--------

Java/Spring/Ribbonapplication.yml 、場所を変更

account-service.ribbon.listOfServers: http://account-service

に置き換えられます

account-service.ribbon.listOfServers: http://localhost:8081

Java/Feign、Feign/HystrixFeign ビルダーのターゲットを変更

HystrixFeign.builder().target(http://localhost:8081, <fallback>);

C# :

client = new HttpClient
{
    BaseAddress = new Uri(@"http://localhost:8081")
};

もちろん、必要なソースコードの変更は構成によって行うことができます...

于 2017-02-02T13:10:50.303 に答える