https://github.com/fabric8io/kubernetes-client
客户端使用的是fabric8io开发的kubernetes-client项目。
<!--kubernetes-client 中包括了 对应版本的kubernetes-model依赖 -->
<dependency>
<groupId>io.fabric8</groupId>
<artifactId>kubernetes-client</artifactId>
<version>4.0.0</version><!-- 对应k8s的1.9版本-->
</dependency>
Config config = new ConfigBuilder().withMasterUrl("http://x.x.x.x:1234").build();
KubernetesClient client = new DefaultKubernetesClient(config);//使用默认的就足够了
client.namespaces()
client.services()
client.pods()
client.customResources()
client.storage()
client.network()
创建:
Service service = client.services().inNamespace(namespace).create(service);
更新:
Namespace namespace = client.namespaces().withName(name).get();
//update resources
client.namespaces().createOrReplace(namespace);
查询:
ServiceList services = client.services().inNamespace("default").list();
Service service = client.services().inNamespace("default").withName("myservice").get()
删除:
client.services().inNamespace("default").withName("myservice").delete();
注:以上是连缀调用,先修改资源,再进行资源的操作,还有一种内建的方式,如下,但是不方便维护。
client.services().inNamespace("default").withName("myservice").edit()
.editMetadata()
.addToLabels("another", "label")
.endMetadata()
.done();
customresourcedefinition (aka 'crd')
自定义资源定义,用来生成自定义资源的一个模板。
#1、自定义资源的model,必须继承于基本的model,才能被client管理起来。
#**
* @param <FtpCluster> The Kubernetes resource type.
* @param <FtpList> The list variant of the Kubernetes resource type.
* @param <DoneableFtp> The doneable variant of the Kubernetes resource type.
*/
public class FtpCluster extends CustomResource
public class FtpList extends CustomResourceList<FtpCluster>
public class DoneableFtp extends CustomResourceDoneable<FtpCluster>
#2、获取自定义资源模板(如果想操作模板,替换get方法即可)
String crdName = "ftpclusters.ftp.bonc.com";
CustomResourceDefinition ftpCrd = client.customResourceDefinitions()
.withName(crdName).get();
#3、获取自定义资源操作类,也可以叫CRD client(指的是通过模板生成的实例的操作权)
MixedOperation<FtpCluster, FtpList, DoneableFtp, Resource<FtpCluster, DoneableFtp>> ftpClient = client.customResources(ftpCrd, FtpCluster.class, FtpList.class, DoneableFtp.class);
#4、同操作k8s内置资源一样,使用对应的client(自定义操作类)进行自定义资源操作。
CustomResourceList<FtpCluster> customResourceList = ftpClient.list();
ftpClient.create(ftpCluster); //创建自定义资源
ftpClient.createOrReplace(ftpCluster); //更新自定义资源
...
#注:上述操作均是操作yaml(k8s资源),自定义资源落地成服务的话,需要自己写operator。