Kubernetes容器设置参数

2024-02-20 74

Kubernetes 集群中运行容器时,通常需要根据应用程序的需求或环境条件来配置容器的行为。这可以通过设置参数来实现,例如环境变量、命令行参数或者设备映射等。本教程将展示如何为 Pod 中容器设置启动时要执行的命令及其参数。

一、准备

必须拥有一个 Kubernetes 的集群,同时必须配置 kubectl 命令行工具与集群通信。 建议在至少有两个不作为控制平面主机的节点的集群上运行本教程。 如果还没有集群,可以通过 Minikube 构建一个自己的集群。

二、创建Pod时设置

创建 Pod 时,可以为其下的容器设置启动时要执行的命令及其参数。如果要设置命令,就填写在配置文件的 command 字段下,如果要设置命令的参数,就填写在配置文件的 args 字段下。 一旦 Pod 创建完成,该命令及其参数就无法再进行更改了。

如果在配置文件中设置了容器启动时要执行的命令及其参数,那么容器镜像中自带的命令与参数将会被覆盖而不再执行。 如果配置文件中只是设置了参数,却没有设置其对应的命令,那么容器镜像中自带的命令会使用该新参数作为其执行时的参数。

本示例中,将创建一个只包含单个容器的 Pod。在此 Pod 配置文件中设置了一个命令与两个参数:

apiVersion: v1
kind: Pod
metadata:
name: command-demo
labels:
purpose: demonstrate-command
spec:
containers:
- name: command-demo-container
image: debian
command: ["printenv"]
args: ["HOSTNAME", "KUBERNETES_PORT"]
restartPolicy: OnFailure

1、基于 YAML 文件创建一个 Pod:

kubectl apply -f https://k8s.io/examples/pods/commands.yaml

2、获取正在运行的 Pod:

kubectl get pods

查询结果显示在 command-demo 这个 Pod 下运行的容器已经启动完成。

3、如果要获取容器启动时执行命令的输出结果,可以通过 Pod 的日志进行查看:

kubectl logs command-demo

日志中显示了 HOSTNAME 与 KUBERNETES_PORT 这两个环境变量的值:

command-demo
tcp://10.3.240.1:443

三、使用环境变量

在上面的示例中,我们直接将一串字符作为命令的参数。除此之外,我们还可以将环境变量作为命令的参数。

env:
- name: MESSAGE
value: "hello world"
command: ["/bin/echo"]
args: ["$(MESSAGE)"]

这意味着可以将那些用来设置环境变量的方法应用于设置命令的参数,其中包括了 ConfigMap 与 Secret。

注意:环境变量需要加上括号,类似于 “$(VAR)”。这是在 command 或 args 字段使用变量的格式要求。

四、在Shell来执行命令

有时候,需要在 Shell 脚本中运行命令。 例如,要执行的命令可能由多个命令组合而成,或者它就是一个 Shell 脚本。 这时,就可以通过如下方式在 Shell 中执行命令:

command: ["/bin/sh"]
args: ["-c", "while true; do echo hello; sleep 10;done"]
  • 广告合作

  • QQ群号:707632017

温馨提示:
1、本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。邮箱:2942802716#qq.com(#改为@)。 2、本站原创内容未经允许不得转裁,转载请注明出处“站长百科”和原文地址。