3

私は fabric8.io を使用して、Kubernetes でアプリケーション コンテナーを調整しています。特定のポートで特定のラベルを持つポッドを管理するサービスを作成しようとしています。これを行う API の具体的な例はありますか。私は例でそれを見つけることができませんでした

https://github.com/fabric8io/kubernetes-client/blob/master/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/FullExample.java#L75

利用可能なjavadocがないようです???

4

3 に答える 3

6

Fabric8 の Kubernetes クライアントは、生成されたモデルと、JSON および YAML 構成とまったく同じ構造を持つ DSL を使用しています。

したがって、次のような Service インスタンスを作成するには:

 {
   "kind": "Service",
   "apiVersion": "v1",
   "metadata": {
       "name": "myservice"
   },
   "spec": {
       "ports": [
           {
              "protocol": "TCP",
              "port": 80,
              "targetPort": 8080,
          }
      ],
      "selector": {
          "key": "value1",
      },¬
      "portalIP": "172.30.234.134",
      "type": "ClusterIP",
  }

}

次のコードを使用できます。

Service service = new ServiceBuilder()
          .withNewMetadata()
              .withName("myservice")
          .endMetadata()
          .withNewSpec()
            .addNewPort()
              .withProtocol("TCP")
              .withPort(80)
              .withNewTargetPort(8080)
            .endPort()
            .addToSelector("key1", "value1")
            .withPortalIP("172.30.234.134")
            .withType("ClusterIP")
          .endSpec()
          .build();

サービス オブジェクトの参照を保持する必要がなく、作成するだけの場合は、次のようにインライン化できます。

client.services().createNew()
          .withNewMetadata()
              .withName("myservice")
          .endMetadata()
          .withNewSpec()
            .addNewPort()
              .withProtocol("TCP")
              .withPort(80)
              .withNewTargetPort(8080)
            .endPort()
            .addToSelector("key1", "value1")
            .withPortalIP("172.30.234.134")
            .withType("ClusterIP")
          .endSpec()
          .done();

デフォルト値をコミットでき、セレクターのようなものをオプションで 1 行にインライン化できるため、同等の JSON よりもさらにコンパクトです。

これはサービスだけでなく、すべての Kubernetes/Openshift リソースに適用されます。

JSON または YAML が配置されている場合は、クライアントに入力ストリームを提供することで簡単にロードできます。

Service service = client.services().load(inputStream).get();

ここには、サービスを直接作成するなど、さらに多くのオプションがあります。

Service newService = client.services().load(inputStream).create();

言語や形式に関係なく、構造は常に同じであることを常に覚えておくと役に立ちます。ほとんど何でもインライン化できるため、IDE でのタブ補完は非常に役立ちます。

于 2015-11-02T15:03:35.757 に答える
0

作成しているリソース タイプ (ポッド、サービス、デプロイなど) がわからない場合は、使用できます

client.load(inputStream).createOrReplaceAnd();

作成したリソースを作成または更新します。

注: 複数のリソースを 1 つの yaml ファイルで作成し、最新の kubernetes クライアントを使用して作成する場合、最初のリソースのみを作成できます。

kubernetes ダッシュボードまたは kubectl を使用すると、同じ yaml ファイルにリストされた複数のリソースを作成できるはずです。

于 2017-11-22T07:22:24.287 に答える