2021-03-31

dotnet core get k8s self POD name

k8s 中的 dotnet core 應用取得 POD name

三種方式取得的結果相同

class Program
{
  static async Task Main(string[] args)
  {
   Console.WriteLine("MachineName:"+Environment.MachineName);
   Console.WriteLine("HostName:"+ System.Net.Dns.GetHostName());
   Console.WriteLine("ENV K8S_POD_NAME:"+Environment.GetEnvironmentVariable("K8S_POD_NAME"));

   await Task.Run(() =〉 Thread.Sleep(Timeout.Infinite));
  }
}

result on dotnet 3.1.11-alpine3.12

MachineName:mqsend-7d9579cc47-kld6v
HostName:mqsend-7d9579cc47-kld6v
ENV K8S_POD_NAME:mqsend-7d9579cc47-kld6v

ENV需要在deployment時額外加入參考

    spec:
      containers:
      - env:
        - name: K8S_POD_NAME
          valueFrom:
            fieldRef:
              fieldPath: metadata.name

ref

  • https://kubernetes.io/docs/tasks/inject-data-application/environment-variable-expose-pod-information/#use-container-fields-as-values-for-environment-variablesƒ

adsense