Kubernetes 1.2.2:api-服务器失败:在 etcd 上找不到 TLS 的安装证书
Kubernetes 1.2.2: api-server fails: can't find mounted certs for TLS on etcd
我一直在努力将 api-server 1.2.2
变为 运行 etcd
TLS.
我正在从 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
后,我能够进入 运行ning 容器
我可以找到 api 服务器抱怨的文件,所以我不明白为什么找不到它们。
嗯,罪魁祸首很简单,就像“”
--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"
错误
但这行得通:
--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:237
我一直在努力将 api-server 1.2.2
变为 运行 etcd
TLS.
我正在从 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
我可以找到 api 服务器抱怨的文件,所以我不明白为什么找不到它们。
嗯,罪魁祸首很简单,就像“”
--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"
错误
但这行得通:
--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:237