Kubernetes 1.2.2:api-server失败:无法在etcd上找到TLS的挂载证书

时间:2016-04-21 02:04:42

标签: ssl docker kubernetes coreos etcd

我一直在努力让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不会找到它们。

我一直试图通过简单地切换广告连播中的command来确定文件路径的运行情况

- /hyperkube
- api-server
...

- /bin/sleep
- 60

kubelet由于某些我不明白的原因,无法启动此广告连播。

是否与yaml文件名有关?

我不明白为什么kubelet无法使用此命令运行会发生什么。

对此的任何帮助将不胜感激。

由于

更新

/hyperkube scheduler

替换命令后,我能够进入正在运行的容器中

我可以捕捉apiserver抱怨的文件,所以我不明白为什么找不到它们。

1 个答案:

答案 0 :(得分:0)

嗯,罪魁祸首就像“”

一样简单
--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