Kubernetes 1.2.2:api-server失败:在etcd上找不到已安装的TLS证书
我一直在努力让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
所以,它似乎无法find证书文件。 文件path和名称与以前一样,并且使用hostPath
以与hostPath
完全相同的方式装载它们,所以我不明白为什么api-server不会find它们。
我一直试图通过简单地切换窗口中的command
来查看文件path
- /hyperkube - api-server ...
至
- /bin/sleep - 60
但是因为某些原因, kubelet
不会启动这个吊舱,我不明白。
它是否与yaml文件名或什么有关?
我不明白为什么kubelet
不能用这个命令运行。
任何帮助,将不胜感激。
谢谢
UPDATE
在使用/hyperkube scheduler
replace命令后,我能够进入正在运行的容器
我可以捕捉apiserver抱怨的文件,所以我不明白为什么他们没有find。
那么,罪魁祸首就像“”一样简单
--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