downwardAPI

downwardAPI – не определяется при помощи kind. Используется для того, чтобы сделать данные API доступными для приложений. Он монтируется как каталог и записывает запрошенные данные в текстовые файлы.

Поддерживается получение следующих данных:

  • Annotations;
  • Labels;
  • Name;
  • Namespace;
  • Resource limits и request:
    •  limits.cpu;
    •  limits.memory;
    • request.cpu;
    • request.memory.

Пример подключения downwardAPI в виде volume:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: openresty
  namespace: volumes-sample
  labels:
    app: openresty
spec:
  replicas: 1
  selector:
    matchLabels:
      app: openresty
  template:
    metadata:
      labels:
        app: openresty
    spec:
      containers:
        - name: openresty
          image: openresty/openresty:centos-rpm
          env:
            - name: NGINX_HOST
              valueFrom:
                fieldRef:
                  fieldPath: metadata.name
          resources:
            limits:
              cpu: "0.2"
              memory: "300Mi"
            requests:
              cpu: "0.1"
              memory: "100Mi"
          ports:
            - containerPort: 80
              name: http
              protocol: TCP
          volumeMounts:
            - mountPath: "/etc/pod-info"
              name: pod-info
              readOnly: true
      volumes:
        - name: pod-info
          downwardAPI:
            items:
              - path: limit-cpu-millicores
                resourceFieldRef:
                  containerName: openresty
                  resource: limits.cpu
                  divisor: 1m
              - path: limit-memory-kibibytes
                resourceFieldRef:
                  containerName: openresty
                  resource: limits.memory
                  divisor: 1Ki
              - path: labels
                fieldRef:
                  fieldPath: metadata.labels

Синим цветом выделено определение volume.

Параметр path определяет имя файла или директории, которая будет создаваться в томе.

resourceFieldRef определяет, что мы будем получать информацию о запросах и лимитах ресурсов контейнера. Напомню, что в поде может быть несколько контейнеров, поэтому необходимо явно указать имя контейнера. Дальше указываем какой ресурс необходимо получить (resource). Если необходимо, указываем множитель (divisor: 1m). Значение по умолчанию у множителя = 1.

В случае annotations, labels и name, все эти данные берутся из раздела metadata. Какой конкретно ресурс требуется получить, определяется при помощи параметра fieldPath.

Volume к контейнеру подключается стандартный способом (отмечено зеленым цветом).