首页 文章

Kubernetes kube-dns TLS证书验证

提问于
浏览
0

我正在使用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,如果没有--insecure开关就会失败,它就可以了 .

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

以下是来自clusterip api的描述:[root @ master01 dns] #kubectl describe service kubernetes名称:kubernetes命名空间:default标签:component = apiserver provider = kubernetes选择器:类型:ClusterIP IP:10.254.0.1端口:https 443 / TCP endpoints : 192.168.2.200:6443会话亲和力:ClientIP

谢谢Dubravko

1 回答

  • 1

    如果您正在使用服务IP,则您的API服务器证书 must 将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

相关问题