Kubernetes ConfigMap 将节点详细信息写入文件



如何使用配置映射将集群节点信息写入JSON文件?

下面给了我节点信息:

kubectl get nodes -o jsonpath='{.items[*].status.addresses[?(@.type=="Hostname")].address}'

如何使用配置映射将上述输出写入文本文件?

您可以将命令的输出保存在任何文件中。 然后使用文件或文件内的数据来创建配置映射。 创建配置映射后,您可以将其作为文件挂载到部署/Pod 中。

例如:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
app: appname
name: appname
namespace: development
spec:
selector:
matchLabels:
app: appname
tier: sometier
template:
metadata:
creationTimestamp: null
labels:
app: appname
tier: sometier
spec:
containers:
- env:
- name: NODE_ENV
value: development
- name: PORT
value: "3000"
- name: SOME_VAR
value: xxx
image: someimage
imagePullPolicy: Always
name: appname
volumeMounts:
- name: your-volume-name
mountPath: "your/path/to/store/the/file"
readOnly: true
volumes:
- name: your-volume-name
configMap:
name: your-configmap-name
items:
- key: your-filename-inside-pod
path: your-filename-inside-pod

我在部署中添加了以下配置:

volumeMounts:
- name: your-volume-name
mountPath: "your/path/to/store/the/file"
readOnly: true
volumes:
- name: your-volume-name
configMap:
name: your-configmap-name
items:
- key: your-filename-inside-pod
path: your-filename-inside-pod

要从文件创建配置映射:

kubectl create configmap your-configmap-name --from-file=your-file-path

或者只是使用命令的输出创建 ConfigMap:

apiVersion: v1
kind: ConfigMap
metadata:
name: your-configmap-name
namespace: your-namespace
data:
your-filename-inside-pod: |
output of command

首先将 kubect get nodes 命令的输出保存到 JSON 文件中:

$ exampleCommand > node-info.json

然后创建适当的配置映射。

下面是一个示例:

apiVersion: v1
kind: ConfigMap
metadata:
name: example-config
data:
node-info.json: |
{
"array": [
1,
2
],
"boolean": true,
"number": 123,
"object": {
"a": "egg",
"b": "egg1"
},
"string": "Welcome"
}

然后记得在 pod 配置文件的规范部分下面添加以下行:

env:
- name: NODE_CONFIG_JSON
valueFrom:
configMapKeyRef:
name: example-config
key: node-info.json

您也可以使用 PodPresent。

PodPreset是一个对象,可以在创建时将信息蛋环境变量注入到Pod中。

请看下面的例子:

apiVersion: settings.k8s.io/v1alpha1
kind: PodPreset
metadata:
name: example
spec:
selector:
matchLabels:
app: your-pod
env:
- name: DB_PORT
value: "6379"
envFrom:
- configMapRef:
name: etcd-env-config
key: node-info.json

但请记住,您还必须添加:

env:
- name: NODE_CONFIG_JSON
valueFrom:
configMapKeyRef:
name: example-config
key: node-info.json

部分,以适合您的 PodPresent 和 ConfigMap 配置的 Pod 定义。

您可以在此处找到更多信息:podpresent,pod-present-configuration。

最新更新