Pod容器共享、ConfigMap及在容器内获取Pod信息

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Pod容器共享、ConfigMap及在容器内获取Pod信息相关的知识,希望对你有一定的参考价值。

参考技术A

(1) 通过--from-file参数从 文件 中进行创建,可以 指定key的名称 ,也可以在一个命令行中创建包含多个key的ConfigMap,语法为:

(2)通过--from-file参数从 目录 中进行创建,该目录下的 每个配置文件名 都被设置为 key 文件的内容 被设置为 value ,语法为:

(3)使用--from-literal时会从 文本 中进行创建,直接将指定的key#=value#创建为ConfigMap的内容,语法为:

Downward API可以通过以下 两种方式 Pod信息注入容器内部

(1) 环境变量 :用于 单个变量 ,可以将 Pod信息 Container信息 注入容器内部。

(2) Volume挂载 :将 数组类信息 生成为 文件 挂载到容器内部

注意到上面 valueFrom这种特殊的语法 Downward API 的写法。

目前Downward API提供了 以下变量

在容器内获取 Pod 信息

文章目录

可供使用的 Pod 信息

1)可供 feildRef 设置的元数据如下:

metadate.name					# Pod 名称
metadate.namespace				# Pod 所在的命名空间
metadate.uid					# Pod 的 UID
metadate.labels					# Pod 的 label
metadate.labels['key']			# Pod 的某个 Label
metadate.annotations			# Pod 的 annotation
metadate.annotations['key']		# Pod 的某个 annotation

2)可以通过 resourceFieldRef 设置的数据如下:

Container 级别的 CPU Limit
Container 级别的 CPU Request
Container 级别的 Memory Limit
Container 级别的 Memory Request
Container 级别的 临时存储空间 Limit
Container 级别的 临时存储空间 Request

3)可供 feildRef 设置的其他数据如下:

status.podIP
spec.serviceAccountName	# Pod 使用的 ServiceAccount 名称
spec.nodeName			# Pod 所在的 Node 的名称
status.hostIP			# Pod 所在的 Node 的 IP 地址

环境变量方式

将 pod 信息设置为容器内的环境变量

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

注意:env 不直接设置 value,而是使用 valueFrom 对 Pod 的元数据进行引用


将 Container 信息设置为容器内环境变量

apiVersion: v1
kind: pod
metadate:
  name: depi-envvars-resourcefieldref
spec:
  containers:
  - name: test-container
    image: busybox
    command: [ "sh", "-c" ]
    args:
    - while true; do
	    echo -en '\\n';
	    printenv MY_CPU_REQUEST MY_MEMORY_LIMIT;
	    sleep 10;
	  done;
	resources:
	  requests:
	    memory: "1Gi"
	    cpu: "250m"
	  limits:
	    memory: "2Gi"
	    cpu: "500mi"
	env:
	  - name: MY_CPU_REQUEST 
	    valueFrom:
	      resourceFieldRef:
	        containerName: test-container
	        resource: requests.cpu
	  - name: MY_MEMORY_LIMIT
	    valueFrom:
	      resourceFieldRef:
	        containerName: test-container
	        resource: limits.memory
	restartPolicy: Never

以上是关于Pod容器共享、ConfigMap及在容器内获取Pod信息的主要内容,如果未能解决你的问题,请参考以下文章

k8s volume

19.Kubernetes深入Pod之容器共享Volume

在容器内获取 Pod 信息

在容器内获取 Pod 信息

在容器内获取 Pod 信息

Kubernetes 系列K8S 进阶 容器和 Pod 分配内存资源