【发布时间】:2016-08-13 23:44:41
【问题描述】:
我一直在努力让 api-server 1.2.2 与使用 TLS 保护的 etcd 一起运行。
我正在从 1.1.2 升级到 1.2.2
在1.1.2 中,我使用了--etcd-config 标志并且有一个看起来像这样的文件:
{
"cluster": {
"machines": [
"https://XXX.XXX.XXX.XXX:2379",
"https://XXX.XXX.XXX.XXY:2379",
"https://XXX.XXX.XXX.XXZ:2379"
]
},
"config": {
"certFile": "/etc/ssl/etcd/etcd-peer.cert.pem",
"keyFile": "/etc/ssl/etcd/private/etcd-peer.key.pem",
"caCertFiles": [
"/etc/ssl/etcd/ca-chain.cert.pem"
],
"consistency": "STRONG_CONSISTENCY"
}
}
现在不再支持此功能,我转而使用标志:
--etcd-cafile="/etc/ssl/etcd/ca-chain.cert.pem"
--etcd-certfile="/etc/ssl/etcd/etcd-peer.cert.pem"
--etcd-keyfile="/etc/ssl/etcd/private/etcd-peer.key.pem"
--etcd-servers="https://XXX.XXX.XXX.XXX:2379, https://XXX.XXX.XXX.XXY:2379,https://XXX.XXX.XXX.XXZ:2379"
现在我收到此错误:
F0421 00:54:40.133777 1 server.go:291] Invalid storage version or misconfigured etcd: open "/etc/ssl/etcd/etcd-peer<nodeIP>.cert.pem": no such file or directory
所以,它似乎找不到证书文件。
文件路径和名称和之前一样,挂载hostPath和v1.1.2完全一样,所以我不明白为什么api-server找不到它们。
我一直试图通过简单地从 pod 中切换 command 来弄清楚文件路径发生了什么
- /hyperkube
- api-server
...
到
- /bin/sleep
- 60
但kubelet 出于某种我不明白的原因不会启动此 pod。
它与yaml文件名或其他什么有关吗?
我不明白为什么kubelet 无法使用此命令运行。
对此的任何帮助将不胜感激。
谢谢
更新
用/hyperkube scheduler替换命令后,我能够进入正在运行的容器
我可以 cat apiserver 抱怨的文件,所以我不明白为什么找不到它们。
【问题讨论】:
-
这里也有报道:github.com/kubernetes/kubernetes/issues/24578 供交叉参考
-
我试过 v1.2.1 和同样的问题。只有 1.1.2 似乎可以工作
标签: ssl docker kubernetes coreos etcd