「Kubernetes Objects」- Pod(学习笔记) @20210317

本文介绍Kubernetes中如何定义并使用环境变量,包括直接定义环境变量和引用定义中的变量作为环境变量的方法。同时,还介绍了如何定义容器启动命令及参数,通过使用command和args字段来指定容器启动后的执行行为。

定义环境变量,并使用

Expose Pod Information to Containers Through Environment Variables | Kubernetes

apiVersion: v1
kind: Pod
metadata:
  name: dapi-envars-fieldref
spec:
  containers:
    - name: test-container
      image: k8s.gcr.io/busybox
      command: [ "sh", "-c"]
      args:
      - while true; do
          echo -en '\n';
          printenv MY_NODE_NAME MY_POD_NAME MY_POD_NAMESPACE;
          printenv MY_POD_IP MY_POD_SERVICE_ACCOUNT;
          sleep 10;
        done;
      env:
        # 直接定义环境变量
        - name: FOO
          valueFrom:
            fieldRef:
              fieldPath: spec.nodeName
        # 引用定义中的变量作为环境变量
        - name: MY_POD_NAME
          valueFrom:
            fieldRef:
              fieldPath: metadata.name

定义容器启动命令(command)及参数(args)

Define a Command and Arguments for a Container | Kubernetes

使用 command 定义启动命令,使用 args 定义启动参数。在容器启动后,该参数不能修改。

字段 command 对应镜像的 entrypoint 指令;字段 args 对应镜像的 CMD 指令;

使用命令及参数的示例

apiVersion: v1
kind: Pod
metadata:
  name: example-command-demo
spec:
  containers:
  - name: command-demo-container
    image: debian
    command: ["printenv"]
    args: ["HOSTNAME", "KUBERNETES_PORT"]

在命令中,使用环境变量

下面的 YAML 文件演示如何使用环境变量:

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

# 环境变量出现在括号中,这对于在 command 或 args 字段中扩展变量是必需的。

# 以这种方式引用环境变量 ≠ 在 Shell 中引用变量
# 这是两种不同的途径,前者由 Kubernetes API 处理,后者由 Shell 解析

执行 Shell 脚本(用于多命令场景)

How to set multiple commands in one yaml file with Kubernetes? - Stack Overflow

下面的 YAML 文件演示如何执行 Shell 脚本:

# 常用简单格式

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

# 或者使用如下形式

---
command: ["/bin/sh", ""]
args:
  - |
    while true
    do
        echo hello
        sleep 10
    done

# 可以根据需要灵活组合

相关链接

关于 Pod 网络:Understanding kubernetes networking: pods

相关文章

「Kubernetes Objects」- Service(学习笔记)
「Kubernetes」- 使用存储(学习笔记)
「Kubernetes Objects」- CronJob(学习笔记)
「Kubernetes Objects」- ConfigMap(学习笔记)
「Kubernetes Objects」- Managing Compute Resources(学习笔记)
「K8s」- 简单的Ingress示例
「Kubernetes Objects」- PodPreset(学习笔记)
「Kubernetes」- 容器资源管理

参考文献

Kubernetes/Concepts/Pods

(Kriging_NSGA2)克里金模型结合多目标遗传算法求最优因变量及对应的最佳自变量组合研究(Matlab代码实现)内容概要:本文介绍了克里金模型(Kriging)与多目标遗传算法NSGA-II相结合的方法,用于求解最优因变量及其对应的最佳自变量组合,并提供了完整的Matlab代码实现。该方法首先利用克里金模型构建高精度的代理模型,逼近复杂的非线性系统响应,减少计算成本;随后结合NSGA-II算法进行多目标优化,搜索帕累托前沿解集,从而获得多个最优折衷方案。文中详细阐述了代理模型构建、算法集成流程及参数设置,适用于工程设计、参数反演等复杂优化问题。此外,文档还展示了该方法在SCI一区论文中的复现应用,体现了其科学性与实用性。; 适合人群:具备一定Matlab编程基础,熟悉优化算法和数值建模的研究生、科研人员及工程技术人员,尤其适合从事仿真优化、实验设计、代理模型研究的相关领域工作者。; 使用场景及目标:①解决高计算成本的多目标优化问题,通过代理模型降低仿真次数;②在无法解析求导或函数高度非线性的情况下寻找最优变量组合;③复现SCI高水平论文中的优化方法,提升科研可信度与效率;④应用于工程设计、能源系统调度、智能制造等需参数优化的实际场景。; 阅读建议:建议读者结合提供的Matlab代码逐段理解算法实现过程,重点关注克里金模型的构建步骤与NSGA-II的集成方式,建议自行调整测试函数或实际案例验证算法性能,并配合YALMIP等工具包扩展优化求解能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值