k8s tasks_为应用注入数据

为容器设置启动时要执行的命令和参数

创建Pod时设置命令及参数

bash 复制代码
# 查看命令使用
kubectl run --help 
  # Start the nginx pod using a different command and custom arguments
  kubectl run nginx --image=nginx --command -- <cmd> <arg1> ... <argN>
# 创建pod 打印变量
kubectl run demo --image=debian --command -- printenv HOSTNAME KUBERNETES_PORT  

controlplane ~ ➜  kubectl logs demo 
demo
tcp://10.96.0.1:443

使用环境变量设置参数

bash 复制代码
# 设置变量并打印
controlplane ~ ✖ kubectl run set-args --image=busybox --env=MSG1=hello --env=MSG2=k8s --command -- sh -c 'echo $MSG1 $MSG2'
pod/set-args created

controlplane ~ ➜  kubectl logs set-args 
hello k8s

通过环境变量将 Pod 信息呈现给容器

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

yaml 复制代码
apiVersion: v1
kind: Pod
metadata:
  name: pod-spec-env
spec:
  containers:
    - name: pod-spec-env
      image: debian
      command: ["printenv"]
      args: ["MY_NODE_NAME","MY_POD_NAME","MY_POD_NAMESPACE","MY_POD_IP","MY_POD_SERVICE_ACCOUNT"]
      env:
        - name: MY_NODE_NAME
          valueFrom:
            fieldRef:
              fieldPath: spec.nodeName
        - name: MY_POD_NAME
          valueFrom:
            fieldRef:
              fieldPath: metadata.name
        - name: MY_POD_NAMESPACE
          valueFrom:
            fieldRef:
              fieldPath: metadata.namespace
        - name: MY_POD_IP
          valueFrom:
            fieldRef:
              fieldPath: status.podIP
        - name: MY_POD_SERVICE_ACCOUNT
          valueFrom:
            fieldRef:
              fieldPath: spec.serviceAccountName
bash 复制代码
controlplane ~ ➜  kubectl apply -f pod-sepc-env.yml 
pod/pod-spec-env created

controlplane ~ ➜  kubectl logs pod-spec-env 
controlplane
pod-spec-env
default
10.244.0.8
default

jq教程

bash 复制代码
# 可以通过jq工具确定字段
controlplane ~ ➜  kubectl get pod -o json | jq '.items[].spec.nodeName'
"controlplane"

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

bash 复制代码
# 目前支持的字段
"limits.cpu", "limits.ephemeral-storage", "limits.memory", "requests.cpu", "requests.ephemeral-storage", "requests.memory"
yaml 复制代码
apiVersion: v1
kind: Pod
metadata:
  name: nginx-pod
spec:
  containers:
    - name: nginx
      image: nginx
      command: ["printenv"]
      args: ["NGINX_REQ_MEM"]
      resources:
        requests:
          memory: "32Mi"
      env:
        - name: NGINX_REQ_MEM
          valueFrom:
            resourceFieldRef:
              containerName: nginx
              resource: requests.memory


# controlplane ~ ➜  kubectl logs nginx-pod 
33554432

使用 Secret 安全地分发凭据

将 Secret 数据转换为 base-64 形式

yaml 复制代码
controlplane ~ ➜  echo -n 'dean' | base64
ZGVhbg==
controlplane ~ ➜  echo -n 'pwd12345' | base64
cHdkMTIzNDU=

Secret创建

yaml 复制代码
apiVersion: v1
kind: Secret
metadata:
  name: srt
data:
  usr: ZGVhbg==
  pwd: cHdkMTIzNDU=

创建

bash 复制代码
controlplane ~ ➜  kubectl apply -f srt.yml 
secret/srt created

controlplane ~ ➜  kubectl describe secrets srt 
Name:         srt
Namespace:    default
Labels:       <none>
Annotations:  <none>

Type:  Opaque

Data
====
pwd:  8 bytes
usr:  4 bytes
yaml 复制代码
apiVersion: v1
kind: Pod
metadata:
  name: demo
spec:
  containers:
    - name: demo
      image: nginx
      volumeMounts:
        # name 必须与下面的卷名匹配
        - name: secret-volume
          mountPath: /etc/secret-volume
          readOnly: true
  # Secret 数据通过一个卷暴露给该 Pod 中的容器
  volumes:
    - name: secret-volume
      secret:
        secretName: srt

查看信息

bash 复制代码
controlplane ~ ➜  kubectl apply -f demo.yml 
pod/demo created

controlplane ~ ✖ kubectl exec -it demo -- sh
# echo "$( cat /etc/secret-volume/usr)"
dean
# echo "$( cat /etc/secret-volume/pwd )"
pwd12345
相关推荐
阿望要努力上研究生2 小时前
Docker入门常用指令和Docker概念
运维·docker·容器
战南诚2 小时前
docker的使用技巧
运维·docker·容器
無限神樂2 小时前
docker,docker compose,k8s之间的区别
docker·容器·kubernetes
小峰编程3 小时前
二进制安装Nginx——详细
linux·运维·服务器·nginx·云原生
AC赳赳老秦3 小时前
2026多智能体协同趋势:DeepSeek搭建多智能体工作流,实现复杂任务自动化
人工智能·python·microsoft·云原生·virtualenv·量子计算·deepseek
AI攻城狮4 小时前
OpenClaw 的 reserveTokensFloor 到底怎么影响 auto-compaction?
人工智能·云原生·aigc
Elastic 中国社区官方博客5 小时前
Elasticsearch Serverless 的无状态架构
大数据·数据库·elasticsearch·搜索引擎·云原生·架构·serverless
岁岁种桃花儿5 小时前
kubenetes从入门到上天系列第十二篇:Kubernetes的Deployment控制器
云原生·容器·kubernetes
向右看齐--5 小时前
Docker 进阶(一) Compose
docker·容器
我爱小疯喵喵6 小时前
1 Docker 完全操作指南
docker·容器·eureka