目标:完成Pod创建删除服务的开发

环境: IntelliJ IDEA

步骤:Kubernetes Client简介->Kubernetes Pod YAML文件说明->Pod服务编写->运行测试

1.Kubernetes Client简介

kubernetes client为fabric8框架下的kubernetes api封装,提供了多种操作类,可调用API  Server完成相应功能。

Github地址:
https://github.com/fabric8io/kubernetes-client.git
2.Kubernetes Pod YAML文件说明

首先在kubernetes master上编写Pod的YAML文件,测试Pod的创建删除功能是否可用。

vim Pod-test.yaml
apiVersion: v1 kind: Pod metadata: name: nginx-2018067 namespace: test-caoxin
spec: containers: - name: nginx-20180607 image: nginx ports: - containerPort:
80 hostPort: 30011
其中kind表示需要使用的类别,metadata为基本信息,spec包含容器信息。

在Master节点上执行:

kubectl create -f Pod-test.yaml

创建pod

kubectl delete -f Pod-test.yaml

删除pod

3.Pod服务编写

在上一节的项目中新增pod创建与删除代码:

(1)服务类-DevK8sApiService.java
//创建Pod public static Pod createPod(String nameSpace, String podName, String
containerName, String imageName, int cnPort, int htPort){ //ObjectMeta 配置
ObjectMeta objectMeta = new ObjectMetaBuilder(). withName(podName).
withNamespace(nameSpace). build(); //Container 端口配置 ContainerPort containerPort
= new ContainerPortBuilder(). withContainerPort(cnPort). withHostPort(htPort).
build(); //Container 配置 Container container = new ContainerBuilder().
withName(containerName). withImage(imageName). withPorts(containerPort).
build(); //Spec 配置 PodSpec podSpec = new PodSpecBuilder().
withContainers(container). build(); //Pod 配置 Pod pod = new PodBuilder().
withApiVersion("v1"). withKind("Pod"). withMetadata(objectMeta).
withSpec(podSpec). build(); try { //Pod 创建 kubernetesClient.pods().create(pod);
System.out.println("pod create success"); }catch (Exception e) {
System.out.println("pod create failed"); } return pod; } //删除pod public static
Pod deletePod(String namespaceName, String podName){ Pod pod = new Pod(); try {
//获取要删除的pod pod =
kubernetesClient.pods().inNamespace(namespaceName).withName(podName).get();
//Pod 删除
kubernetesClient.pods().inNamespace(namespaceName).withName(podName).delete();
System.out.println("pod delete success"); }catch (Exception e){
System.out.println("pod create failed"); } return pod; }

(2)控制类-DevK8sApiController.java

//k8s pod create @ApiOperation(value = "CreatePod", notes = "CreatePod")
@RequestMapping(value = "/createpod", method = RequestMethod.POST) public Pod
createk8spod(@RequestParam(value = "NameSpaceName") String nsName,
@RequestParam(value = "PodName") String pdName, @RequestParam(value =
"ContainerName") String ctName, @RequestParam(value = "ImageName") String
imName, @RequestParam(value = "ContainerPort") int cnPort, @RequestParam(value
= "HostPort") int htPort){ return
devK8sApiService.createPod(nsName,pdName,ctName,imName, cnPort, htPort); }
//k8s pod delete @ApiOperation(value = "DeletePod", notes = "DeletePod")
@RequestMapping(value = "/deletepod", method = RequestMethod.DELETE) public Pod
deletek8spod(@RequestParam(value = "NameSpaceName") String nsName,
@RequestParam(value = "PodName") String pdName){ return
devK8sApiService.deletePod(nsName,pdName); }
4.运行测试

访问http://MasterIP:10099/swagger-ui.html
<http://10.80.25.141:10099/swagger-ui.html>

(1)创建pod

传入参数:




执行:





kubectl get pods -n test-caoxin 查看





以NodePort方式访问服务:http://NodeIP:30011 <http://nodeip:30011/>







(2)删除pod

传入参数




执行





查看







以上,pod创建与删除功能开发完成。



友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:637538335
关注微信