Kubernetes访问容器中的标签

时间:2015-11-24 10:49:57

标签: docker kubernetes

当我们为复制控制器创建yml时,我们可以为正在创建的pod提供标签。

apiVersion: v1
kind: ReplicationController
metadata:
  name: redis
spec:
  template:
    metadata:
      labels:
        app: redis
        tier: backend

驻留在此pod中的容器可以访问这些标签值吗?

2 个答案:

答案 0 :(得分:4)

查看Downward API,它允许容器更多地了解自己。

答案 1 :(得分:0)

从容器内部访问pod信息的一种方法是使用环境变量。吊舱的yaml文件为:

apiVersion: v1
kind: Pod
metadata:
  name: pod-env
spec:
  containers:
    - name: test-container
      image: ubuntu
      command: [ "sh", "-c"]
      args:
      - while true; do
          echo -en '\n';
          printenv MY_NODE_NAME MY_POD_NAME;
          printenv MY_POD_IP 
          sleep 1000;
        done;
      env:
        - name: MY_NODE_NAME
          valueFrom:
            fieldRef:
              fieldPath: spec.nodeName
        - name: MY_POD_NAME
          valueFrom:
            fieldRef:
              fieldPath: metadata.name
        - name: MY_POD_IP
          valueFrom:
            fieldRef:
              fieldPath: status.podIP
  restartPolicy: Never

mY_POD_NAME环境变量从容器的字段spec.nodeName中获取其值。同样,我们也可以将字段的字段作为值。 要验证此连接,请使用以下命令:

kubectl exec -it pod-env -- /bin/bash

并打印环境变量:

printenv MY_POD_NAME

将信息从吊舱传递到容器的其他方法是使用向下API:https://kubernetes.io/docs/tasks/inject-data-application/downward-api-volume-expose-pod-information/