Files
website/content/zh/docs/tasks/inject-data-application/environment-variable-expose-pod-information.md
Zach Corleissen abcee2dccd Update localization guidelines (#10485)
* Update localization guidelines for language labels

Continuing work

Continuing work

Continuing work

More work in progress

Add local OWNERS folders

Add an OWNERS file to Chinese

Remove shortcode for repos

Add Japanese

Alphabetize languages, change weights accordingly

More updates

Add Korean in Korean

Add English to languageName

Feedback from gochist

Move Chinese content from cn/ to zh/

Move OWNERS from cn/ to zh/

Resolve merge conflicts by updating from master

Add files back in to prep for resolution

After rebase on upstream/master, remove files

Review and update localization guidelines

Feedback from gochist, tnir, cstoku

Add a trailing newline to content/ja/OWNERS

Add a trailing newline to content/zh/OWNERS

Drop requirement for GH repo project

Clarify language about forks/branches

Edits and typos

Remove a shortcode specific to a multi-repo language setup

Update aliases and owners

Add explicit OWNERS for content/en

Migrate content from Chinese repo, update regex in config.toml

Remove untranslated strings

Add trailing newline to content/en/OWNERS

Add trailing newlines to OWNERS files

add Jaguar project description (#10433)

* add Jaguar project description

[Jaguar](https://gitlab.com/sdnlab/jaguar) is an open source solution for Kubernetes's network based on OpenDaylight.
Jaguar provides overlay network using vxlan and Jaguar CNIPlugin provides one IP address per pod.

* Minor newline tweak

blog post for azure vmss (#10538)

Add microk8s to pick-right-solution.md (#10542)

* Add microk8s to pick-right-solution.md

Microk8s is a single-command installation of upstream Kubernetes on any Linux and should be included in the list of local-machine solutions.

* capitalized Istio

Add microk8s to foundational.md (#10543)

* Add microk8s to foundational.md

Adding microk8s as credible and stable alternative to get started with Kubernetes on a local machine. This is especially attractive for those not wanting to incur the overhead of running a VM for a local cluster.

* Update foundational.md

Thank you for your suggestions! LMK if this works now?

* Rewrote first paragraph

And included a bullet list of features of microk8s

* Copyedit

fix typo (#10545)

Fix the kubectl subcommands links. (#10550)

Signed-off-by: William Zhang <warmchang@outlook.com>

Fix command issue (#10515)

Signed-off-by: mooncake <xcoder@tenxcloud.com>

remove imported community files per issue 10184 (#10501)

networking.md: Markdown fix (#10498)

Fix front matter, federation command-line tools (#10500)

Clean up glossary entry (#10399)

update slack link (#10536)

typo in StatefulSet docs (#10558)

fix discription about horizontal pod autoscale (#10557)

Remove redundant symbols (#10556)

Fix issue #10520 (#10554)

Signed-off-by: William Zhang <warmchang@outlook.com>

Update api-concepts.md (#10534)

Revert "Fix command issue (#10515)"

This reverts commit c02a7fb9f9.

Update memory-constraint-namespace.md (#10530)

update memory request to 100MiB corresponding the yaml content

Blog: Introducing Volume Snapshot Alpha for Kubernetes (#10562)

* blog post for azure vmss

* snapshot blog post

Resolve merge conflicts in OWNERS*

Minor typo fix (#10567)

Not sure what's supposed to be here, proposing removing it.

* Feedback from gochist

Tweaks to feedback

* Feedback from ClaudiaJKang
2018-10-12 14:25:01 -07:00

4.2 KiB
Raw Permalink Blame History

title, content_template
title content_template
通过环境变量将Pod信息呈现给容器 templates/task

{{% capture overview %}}

此页面显示了Pod如何使用环境变量把自己的信息呈现给pod中运行的容器。环境变量可以呈现pod的字段和容器字段。

有两种方式可以将Pod和Container字段呈现给运行中的容器: 环境变量 和[DownwardAPIVolumeFiles](/docs/resources-reference/{{< param "version" >}}/#downwardapivolumefile-v1-core). 这两种呈现Pod和Container字段的方式都称为Downward API

{{% /capture %}}

{{% capture prerequisites %}}

{{< include "task-tutorial-prereqs.md" >}} {{< version-check >}}

{{% /capture %}}

{{% capture steps %}}

Downward API

有两种方式可以将Pod和Container字段呈现给运行中的容器:

  • 环境变量
  • [DownwardAPIVolumeFiles](/docs/resources-reference/{{< param "version" >}}/#downwardapivolumefile-v1-core)

这两种呈现Pod和Container字段的方式都称为Downward API

用Pod字段作为环境变量的值

在这个练习中,你将创建一个包含一个容器的pod。这是该pod的配置文件:

{{< code file="dapi-envars-pod.yaml" >}}

这个配置文件中,你可以看到五个环境变量。env字段是一个[EnvVars](/docs/resources-reference/{{< param "version" >}}/#envvar-v1-core)类型的数组。 数组中第一个元素指定MY_NODE_NAME这个环境变量从Pod的spec.nodeName字段获取变量值。同样,其它环境变量也是从Pod的字段获取它们的变量值。

{{< note >}} 注意: 本示例中的字段是Pod字段,不是Pod中容器的字段。 {{< /note >}}

创建Pod

kubectl create -f https://k8s.io/cn/docs/tasks/inject-data-application/dapi-envars-pod.yaml

验证Pod中的容器运行正常:

kubectl get pods

查看容器日志:

kubectl logs dapi-envars-fieldref

输出信息显示了所选择的环境变量的值:

minikube
dapi-envars-fieldref
default
172.17.0.4
default

要了解为什么这些值在日志中,请查看配置文件中的commandargs字段。 当容器启动时,它将五个环境变量的值写入stdout。每十秒重复执行一次。

接下来,进入Pod中运行的容器,打开一个shell:

kubectl exec -it dapi-envars-fieldref -- sh

在shell中,查看环境变量:

/# printenv

输出信息显示环境变量已经指定为Pod的字段的值。

MY_POD_SERVICE_ACCOUNT=default
...
MY_POD_NAMESPACE=default
MY_POD_IP=172.17.0.4
...
MY_NODE_NAME=minikube
...
MY_POD_NAME=dapi-envars-fieldref

用容器字段作为环境变量的值

前面的练习中,你将Pod字段作为环境变量的值。接下来这个练习,你将用容器字段作为环境变量的值。这里是包含一个容器的pod的配置文件:

{{< code file="dapi-envars-container.yaml" >}}

这个配置文件中,你可以看到四个环境变量。env字段是一个[EnvVars](/docs/resources-reference/{{< param "version" >}}/#envvar-v1-core) 类型的数组。数组中第一个元素指定MY_CPU_REQUEST这个环境变量从容器的requests.cpu字段获取变量值。同样,其它环境变量也是从容器的字段获取它们的变量值。

创建Pod

kubectl create -f https://k8s.io/cn/docs/tasks/inject-data-application/dapi-envars-container.yaml

验证Pod中的容器运行正常:

kubectl get pods

查看容器日志:

kubectl logs dapi-envars-resourcefieldref

输出信息显示了所选择的环境变量的值:

1
1
33554432
67108864

{{% /capture %}}

{{% capture whatsnext %}}

  • 给容器定义环境变量
  • [PodSpec](/docs/resources-reference/{{< param "version" >}}/#podspec-v1-core)
  • [Container](/docs/resources-reference/{{< param "version" >}}/#container-v1-core)
  • [EnvVar](/docs/resources-reference/{{< param "version" >}}/#envvar-v1-core)
  • [EnvVarSource](/docs/resources-reference/{{< param "version" >}}/#envvarsource-v1-core)
  • [ObjectFieldSelector](/docs/resources-reference/{{< param "version" >}}/#objectfieldselector-v1-core)
  • [ResourceFieldSelector](/docs/resources-reference/{{< param "version" >}}/#resourcefieldselector-v1-core)

{{% /capture %}}