k8s:获取pod的ip

获取pod ip

spec:  
  containers:
  - name: xxx            
    env:
    # 获取pod ip,并赋值给容器内的环境变量POD_IP
    - name: POD_IP
      valueFrom:
        fieldRef:
          apiVersion: v1
          fieldPath: status.podIP

检查

  • 进入pod查看POD_IP:echo $POD_IP

cook

  1. 获取pod的其他属性添加到环境变量,如pod名, pod所在命名空间等

    spec:  
      containers:
      - name: xxx     
        env:
        # 获取pod id,并赋值给容器内的环境变量POD_ID
        - name: POD_ID
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.uid
        # 获取pod 名字,并赋值给容器内的环境变量POD_NAME
        - name: POD_NAME
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.name
        # 获取pod所在namespace,并赋值给容器内的环境变量POD_NAMESPACE
        - name: POD_NAMESPACE
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.namespace
    
  2. 同一应用启n个pod时, 如果对应业务机器数量小于n, 就会有多个pod被部署在同一机器, 而应用日志都会通过数据卷挂载到宿主机, 因此会发生多个pod同时写入日志到宿主机相同文件的情况,这样不仅影响性能, 而且多个pod的日志混杂在一起, 不利于运维分析.

    可以在应用的日志文件名字中加入POD_IP, 因为pod ip是不会重复的

posted @ 2021-01-06 21:16  varyuan  阅读(7402)  评论(0编辑  收藏  举报