如何使用 Kubernetes C# .net 客户端获取自定义资源的状态?

How to get status of custom resource using Kubernetes C# .net Client?

安装 eck-operator 后,我使用下面的 yaml 清单创建了一个 Elasticsearch 资源 here

apiVersion: elasticsearch.k8s.elastic.co/v1
kind: Elasticsearch
metadata:
  name: quickstart
spec:
  version: 7.15.0
  nodeSets:
  - name: default
    count: 1
    config:
      node.store.allow_mmap: false

应用此清单后,我可以通过执行以下命令手动获取状态:

kubectl get elasticsearch -n ecknamespace

输出如下:

> $ kubectl get elasticsearch -n ecknamespace
  NAME          HEALTH   NODES  VERSION   PHASE   AGE 
  quickstart    green    3       7.15.0   Ready   3d17h

如何使用 Kubernetes C# Client,以编程方式获取上述数据?

客户端包含有关如何与自定义资源交互的 example

它将要求您定义文件 cResource.csCustomResourceDefinition.cs 中描述的 classes。

之后,以下代码应列出 elasticsearch 资源:

var config = KubernetesClientConfiguration.BuildConfigFromConfigFile();
var client = new GenericClient(config,  "elasticsearch.k8s.elastic.co", "v1", "elasticsearches");
var elasticSearches = await client.ListNamespacedAsync<CustomResourceList<CResource>>("default").ConfigureAwait(false);
foreach (var es in elasticSearches.Items)
{
    Console.WriteLine(es.Metadata.Name);
}

EDIT 在 OP 的评论之后:要查看自定义资源的所有字段,需要编辑 CustomResource class(文件 CustomResourceDefinition.cs 在示例中)与相应的字段。