我想将软件部署到具有daemonset的节点,但它不是docker应用程序。我创建了一个这样的守护进程json:
"template": {
"metadata": {
"creationTimestamp": null,
"labels": {
"app": "uniagent"
},
"annotations": {
"scheduler.alpha.kubernetes.io/tolerations": "[{\"key\":\"beta.k8s.io/accepted-app\",\"operator\":\"Exists\", \"effect\":\"NoSchedule\"}]"
},
"enable": true
},
"spec": {
"restartPolicy": "Always",
"terminationGracePeriodSeconds": 30,
"dnsPolicy": "ClusterFirst",
"securityContext": {},
"processes": [
{
"name": "foundation",
"package": "xxxxx",
"resources": {
"limits": {
"cpu": "100m",
"memory": "1Gi"
}
},
"lifecyclePlan": {
"kind": "ProcessLifecycle",
"namespace": "engb",
"name": "app-plc"
},
"env": [
{
"name": "SECRET_USERNAME",
"valueFrom": {
"secretKeyRef": {
"name": "key-secret",
"key": "uniagentuser"
}
}
},
{
"name": "SECRET_PASSWORD",
"valueFrom": {
"secretKeyRef": {
"name": "key-secret",
"key": "uniagenthash"
}
}
}
]
},
当app部署成功时,env变量根本不存在。
我该怎么做才能解决这个问题? 感谢
答案 0 :(得分:4)
守护程序集必须是docker容器。您不能将非容器化程序作为守护程序集运行。 https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/ Kubernetes只发布容器。
同样在你的YAML清单文件中,我看到一个"processes"
密钥,我有理由相信它不是一个有效的清单文件,所以我怀疑你是否成功部署了它。
你没有粘贴"完整" YAML文件,但我猜测"模板"开头的键是文件的spec.template键。
运行kubectl explain daemonset.spec.template.spec
,您会发现没有"processes"
字段。