podname用作为环境变量

yaml示例

apiVersion: v1
kind: Pod
metadata:
  name: dapi-envars-fieldref
spec:
  containers:
    - name: test-container
      image: k8s.gcr.io/busybox
      command: [ "sh", "-c"]
      args:
      - while true; do
          echo -en '\n';
          printenv MY_NODE_NAME MY_POD_NAME MY_POD_NAMESPACE;
          printenv MY_POD_IP MY_POD_SERVICE_ACCOUNT;
          sleep 10;
        done;
      env:
        - name: MY_NODE_NAME
          valueFrom:
            fieldRef:
              fieldPath: spec.nodeName
        - name: MY_POD_NAME
          valueFrom:
            fieldRef:
              fieldPath: metadata.name
        - name: MY_POD_NAMESPACE
          valueFrom:
            fieldRef:
              fieldPath: metadata.namespace
        - name: MY_POD_IP
          valueFrom:
            fieldRef:
              fieldPath: status.podIP
        - name: MY_POD_SERVICE_ACCOUNT
          valueFrom:
            fieldRef:
              fieldPath: spec.serviceAccountName
  restartPolicy: Never

程序

private Container buildContainer(SpiderGroupPO po) {
    //EnvVar
    List<EnvVar> envList = new ArrayList<>();
    
    ObjectFieldSelector os = new ObjectFieldSelector();
    os.setFieldPath("metadata.name");
    EnvVarSource envVarSource = new EnvVarSource();
    envVarSource.setFieldRef(os);
    //podname
    envList.add(new EnvVar("POD_NAME", null, envVarSource));
   
    CommonEnum.ResourceEnum res = CommonEnum.ResourceEnum.getByCode(po.getStandard());
    return new ContainerBuilder()
            .withName(po.getSpiderGroupId())
            .withImage(po.getImages())
            .addNewPort()
            .withContainerPort(port)
            .withName("http")
            .withProtocol("TCP")
            .endPort()
            .withEnv(envList)
            .withNewResources()
            .addToLimits(CPU, new Quantity(res.getCpu(), res.getCpuFormat()))
            .addToLimits(RAM, new Quantity(res.getRam(), res.getRamFormat()))
            .addToRequests(CPU, new Quantity(res.getCpu(), res.getCpuFormat()))
            .addToRequests(RAM, new Quantity(res.getRam(), res.getRamFormat()))
            .endResources()
            .build();
}

查看

printenv

在这里插入图片描述

在Java应用程序中获取当前运行的Pod名称,可以通过Kubernetes Downward API 或 Kubernetes Java客户端库来实现。 1. 使用Kubernetes Downward API: Kubernetes Downward API 可以在Pod环境变量中提供一些有关Pod信息,包括Pod名称。你可以在Java应用程序中读取环境变量来获取Pod名称。 ```java String podName = System.getenv("HOSTNAME"); System.out.println("Pod name: " + podName); ``` 在上面的示例中,通过读取`HOSTNAME`环境变量来获取Pod名称。 2. 使用Kubernetes Java客户端库: 如果你在Java应用程序中使用Kubernetes Java客户端库,你可以通过调用相应的API来获取Pod名称。 ```java import io.kubernetes.client.openapi.ApiClient; import io.kubernetes.client.openapi.ApiException; import io.kubernetes.client.openapi.Configuration; import io.kubernetes.client.openapi.apis.CoreV1Api; import io.kubernetes.client.openapi.models.V1ObjectMeta; import io.kubernetes.client.util.Config; public class PodUtils { public static String getPodName() throws ApiException { ApiClient client = Config.defaultClient(); Configuration.setDefaultApiClient(client); CoreV1Api api = new CoreV1Api(); String namespace = "default"; // 如果不是默认命名空间,请修改为实际的命名空间 String podName = ""; V1ObjectMeta metadata = api.readNamespacedPod("your-pod-name", namespace, null, null, null).getMetadata(); if (metadata != null) { podName = metadata.getName(); } return podName; } } ``` 在上面的示例中,使用Kubernetes Java客户端库来读取Pod的元数据,并获取Pod名称。 无论使用哪种方法,你都可以在Java应用程序中轻松地获取当前运行的Pod名称,并进行后续操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值