我想使用Kubernetes窗格名称作为容器中的标识符作为参数。
我已使用以下配置在我的Kubernetes集群上部署了回显容器:
apiVersion: apps/v1
kind: Deployment
metadata:
name: echo1
spec:
selector:
matchLabels:
app: echo1
replicas: 2
template:
metadata:
labels:
app: echo1
spec:
containers:
- name: echo1
image: hashicorp/http-echo
args:
- "-text=echo1"
ports:
- containerPort: 5678
当我执行“ kubectl获得豆荚”时:
NAME READY STATUS RESTARTS AGE
echo1-76c689b7d-48h4v 1/1 Running 0 19h
echo1-76c689b7d-4gq2v 1/1 Running 0 19h
我想通过在上面的配置中传递容器名称来回显容器名称:
args:
- "-text=echo1"
如何访问要在参数中使用的pod名称?
答案 0 :(得分:2)
几件事。首先,您将对环境变量使用fieldRef语法,如https://kubernetes.io/docs/tasks/inject-data-application/environment-variable-expose-pod-information/所示。然后,您可以在参数("-text=$(PODNAME)"
中使用env var。但是,这将为您提供实际的容器名称,例如echo1-76c689b7d-48h4v
。您想要的是部署名称或app
标签的值,后者更容易代替metadata.name
作为字段路径,请使用metadata.labels['app']
之类的东西(需要Kubernetes 1.9+ )。