Kubernetes kube-dns TLS证书验证

时间:2017-03-23 09:18:07

标签: dns kubernetes

我使用kubernetes v1.5.2,并在tls上实现了api。问题是,在部署kube-dns时,我在minion上收到消息:

Mar 23 10:06:27 node01 journal: I0323 09:06:27.007407       1 dns.go:172]   Ignoring error while waiting for service default/kubernetes: Get  https://10.254.0.1:443/api/v1/namespaces/default/services/kubernetes: x509: cannot validate certificate for 10.254.0.1 because it doesn't contain any IP SANs. Sleeping 1s before retrying.

我尝试过使用curl,来自另一个pod并且在没有--Ucure切换的情况下失败了,它就可以了。

据我所知10.254.0.1:443实际上是从主节点(api在端口6443上)(192.168.0.200)提供证书,但如何解决它,10.254.0.1提供其有效证书。

以下是来自clusterip api的说明:     [root @ master01 dns] #kubectl描述服务kubernetes     名称:kubernetes     命名空间:默认     标签:component = apiserver                             供应商= kubernetes     选择:     类型:ClusterIP     IP:10.254.0.1     端口:https 443 / TCP     端点:192.168.2.200:6443     会话亲和力:ClientIP

由于 Dubravko

1 个答案:

答案 0 :(得分:1)

如果您正在使用服务IP,则您的API服务器证书必须将IP:10.254.0.1作为SAN。

同样,如果您使用服务名称kubernetes.default访问API,则证书必须具有此名称作为SAN。

一个好的做法是申请至少包含以下SAN的证书:

  • IP :(服务CIDR的第一个IP)
  • DNS:kubernetes
  • DNS:kubernetes.default
  • DNS:kubernetes.default.svc
  • DNS:kubernetes.default.svc.cluster.local

检查此util脚本以供参考:util.sh