[英]Deploy a Pod and assign it a node using Java Kubernetes Client API
我正在使用kubeadm创建一个kubernetes集群。 如何在特定节点上部署Pod。 在用于将Pod部署到简单minikube集群中的代码下面。 谢谢
ApiClient client = Config.defaultClient();
Configuration.setDefaultApiClient(client);
CoreV1Api api = new CoreV1Api();
V1ObjectMeta meta = new V1ObjectMeta();
meta.name("ms2-pod");
Map<String, String> labels = new HashMap<>();
labels.put("app", "ms2-pod");
meta.labels(labels);
V1ContainerPort port = new V1ContainerPort();
port.containerPort(9090);
V1Container container = new V1Container();
container.name("ms2-container");
container.image("ms2");
container.imagePullPolicy("IfNotPresent");
container.ports(Arrays.asList(port));
V1PodSpec spec = new V1PodSpec();
spec.containers(Arrays.asList(container));
V1Pod podBody = new V1Pod();
podBody.apiVersion("v1");
podBody.kind("Pod");
podBody.metadata(meta);
podBody.spec(spec);
V1Pod pod = api.createNamespacedPod("default", podBody, null, null, null);
我们如何使用Java中的K8S Client Api充分利用kubeadm集群内部的kubectl功能?
您可以根据要执行的操作使用节点选择器或节点相似性或反相似性 。
下面是一个使用节点选择器的示例(假设您向节点添加了值为“ nodeLabelValue”的标签“ nodeLabelKey”):
ApiClient client = Config.defaultClient();
Configuration.setDefaultApiClient(client);
CoreV1Api api = new CoreV1Api();
V1ObjectMeta meta = new V1ObjectMeta();
meta.name("ms2-pod");
Map<String, String> labels = new HashMap<>();
labels.put("app", "ms2-pod");
meta.labels(labels);
V1ContainerPort port = new V1ContainerPort();
port.containerPort(9090);
V1Container container = new V1Container();
container.name("ms2-container");
container.image("ms2");
container.imagePullPolicy("IfNotPresent");
container.ports(Arrays.asList(port));
V1PodSpec spec = new V1PodSpec();
spec.containers(Arrays.asList(container));
V1Pod podBody = new V1Pod();
podBody.apiVersion("v1");
podBody.kind("Pod");
podBody.metadata(meta);
podBody.spec(spec);
Map<String, String> nodeSelectorMap = new HashMap<>();
nodeSelectorMap.put("nodeLabelKey", "nodeLabelValue");
spec.nodeSelector(nodeSelectorMap);
V1Pod pod = api.createNamespacedPod("default", podBody, null, null, null);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.