ファブリック8 kubernetes Java &スカラクライアントAPIは、kubernetes(またはOpenShift)との会話には最適ですが、ドキュメントは非常にまばらです。 kubernetesポッドで実行されているコンテナにリソース要件を追加するコード例は何ですか?fabric8 kubernetes Java&ScalaクライアントAPIを使用してコンテナにリソース要件を設定する方法
2
A
答えて
4
JavaおよびScala用のfabric8 kubernetes-client APIを使用している場合は、ポッドで実行されているコンテナにリソース要件を追加する方法を示すコードスニペットを示します。このコードは、スカラからコピーされましたが、Javaコードは非常に似ています:
// other fabric8 imports not included; just focusing on resource
// requirements logic in this example
import io.fabric8.kubernetes.api.model.Quantity
import io.fabric8.kubernetes.api.model.ResourceRequirementsBuilder
// Use Java style Map (as opposed to Scala's Map class)
val reqMap: java.util.Map[String, Quantity] =
new java.util.HashMap[String, Quantity]()
// add CPU and memory requirements to the map
reqMap.put("cpu", new Quantity("1"))
reqMap.put("memory", new Quantity("1500Mi"))
// Build a ResourceRequirements object from the map
val reqs = new ResourceRequirementsBuilder()
.withRequests(reqMap)
.build()
// pass the ResourceRequirements object to the container spec
val pod = new PodBuilder()
.withNewMetadata()
.withName(podName)
.endMetadata()
.withNewSpec()
.withRestartPolicy("OnFailure")
.addNewContainer()
.withName(containerName)
.withImage(containerImage)
.withImagePullPolicy("Always")
.withResources(reqs) // <-- resource reqs here
.withCommand(commandName)
.withArgs(commandArguments)
.endContainer()
.endSpec()
.build()
// create the new pod with resource requirements via the
// fabric8 kube client:
client.pods().inNamespace(nameSpace).withName(podName).create(pod)
0
if(EmptyUtil.isNotNull(template.getComputeRequest()) ||
EmptyUtil.isNotNull(template.getComputeLimit())) {
containerBuilder.withResources(buildResources(template.getComputeRequest(), template.getComputeLimit()));
}
private ResourceRequirements buildResources(InstanceType request, InstanceType limit){
_logger.info("Building computeResources");
ResourceRequirementsBuilder requirementsBuilder = new ResourceRequirementsBuilder(isValidationEnabled);
if(EmptyUtil.isNotNull(request)){
requirementsBuilder.withRequests(K8ComputeResourceUtil.buildCompute(request));
}
if(EmptyUtil.isNotNull(limit)){
requirementsBuilder.withLimits(K8ComputeResourceUtil.buildCompute(limit));
}
return requirementsBuilder.build();
}
public static Map<String, Quantity> buildCompute(InstanceType compute){
Map<String, Quantity> computeResourceMap = new HashMap<>();
if(EmptyUtil.isNotNull(compute.getCpu())) {
computeResourceMap.putAll(buildCpu(compute.getCpu()));
}
if(EmptyUtil.isNotNull(compute.getMemory())) {
computeResourceMap.putAll(buildMemory(compute.getMemory()));
}
return computeResourceMap;
}
private static Map<String, Quantity> buildCpu(Float cpu){
Map<String, Quantity> cpuMap = new HashMap<>();
try {
Quantity cpuQuantity = new Quantity();
if (EmptyUtil.isNotNull(cpu)) {
cpuQuantity.setAmount(String.valueOf(cpu));
cpuMap.put(K8Constants.CPU, cpuQuantity);
}
} catch (NumberFormatException nfe){
_logger.error("Failed to convert cpu '{}'", cpu, nfe);
}
return cpuMap;
}
private static Map<String, Quantity> buildMemory(Integer memory){
Map<String, Quantity> cpuMap = new HashMap<>();
try {
Quantity cpu = new Quantity();
if (EmptyUtil.isNotNull(memory)) {
cpu.setAmount(String.valueOf(memory));
cpuMap.put(K8Constants.MEMORY, cpu);
}
} catch (NumberFormatException nfe){
_logger.error("Failed to convert memory '{}'", memory, nfe);
}
return cpuMap;
}
は、ここで私は、CPUとメモリを構築するためのいくつかのビルダーを持っています。 これは、フローを理解することです。 整数または文字列でcpu/memoryの値を指定できます。
関連する問題
- 1. Kubernetes fabric8 Java API - StorageClassオブジェクトをリストする方法
- 2. Kubernetes API固有のホストではないIPを使用してKubernetes DNSを設定する方法
- 3. kubernetesとfabric8を使い始める
- 4. GoクライアントAPIを使用してkubernetesでボリュームを作成して使用する方法は?
- 5. Java: "リソースを試して"ソケットタイムアウトを設定する方法
- 6. Kubernetesによって起動されたコンテナのworkdirを設定する方法
- 7. Feignクライアントを使用してリクエストヘッダーを設定する方法は?
- 8. Kubernetes Java API(KubernetesClient)
- 9. JBoss Fuse(Karaf)でファブリックモードを使用してJavaコンテナをデプロイする方法
- 10. Javaを使用してkubernetesで終端ポッドを識別する方法
- 11. elasticsearch javaクライアントを使用してインデックス設定を更新する
- 12. scalaでJava APIを使用してelasticsearch集計を作成する方法
- 13. Javaの設定を使用して春にワッフルを設定する方法
- 14. httpsを使用してkubernetes apiサーバーを呼び出す方法
- 15. SoftLayer APIを使用してハードウェアノートを設定する方法
- 16. Win APIを使用してショートカットタイトルを設定する方法
- 17. Foo.classをscalaに指定する方法は?私はJavaのAPIを使用しています
- 18. IBM bluemixコンテナでkubernetesを使用する方法
- 19. fabric8 APIを使用してkubernetesクラスタのevents()ウォッチを設定すると、JsonMappingExceptionが発生します:種類のリソースタイプが見つかりません:
- 20. プライベートドッカーレジストリを使用してKubernetesジョブを定義する方法は?
- 21. Java WebServiceを使用してクライアントにデータをプッシュする方法
- 22. Kubernetes-クライアントAPI
- 23. Spark-Javaを使用してコンテキストパスを設定する方法
- 24. バッチファイルを使用してJavaパスを設定する方法
- 25. クライアントJavaヒープメモリを気にせずにJavaクライアントを使用してEasticSearchを使用してクエリを行う方法
- 26. Javaのファブリック8 - 私はFabric8のJava API</p> <p>ConnectionExample.java使用Kubernetesサービスの利用可能ポッドを取得するためのコードの下にしようとしていますFabric8のJava API
- 27. fabric8 Javaクライアントを使用してkubernetesサービスアカウントのアクセストークンを取得するにはどうすればよいですか?
- 28. goクライアントを使用してkubernetesサービスでイベントを監視する方法
- 29. Pythonクライアントを使用してKubernetesで対話型シェルを接続する方法
- 30. Javaを使用してJson文字列をJavaオブジェクトに設定する方法
これは便利です:)私は通常、[spec](http://kubernetes.io/docs/user-guide/pods/multi-container/#the-spec-schema)とYAMLデータtype(list/map/...)は、fabric8の流暢なビルダーを使用する際に有益です。 –