【问题标题】:Kubernetes kube-dns TLS certificate validationKubernetes kube-dns TLS 证书验证
【发布时间】:2017-08-15 18:04:32
【问题描述】:

我使用的是 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 实际上提供来自主节点的证书(端口 6443 上的 api)(192.168.0.200),但是如何解决它,10.254.0.1 提供其有效证书。

这是来自 clusterip api 的描述: [root@master01 dns]# kubectl 描述服务 kubernetes 名称:kubernetes 命名空间:默认 标签:组件=apiserver 提供者=kubernetes 选择器: 类型:集群IP IP:10.254.0.1 端口:https 443/TCP 端点:192.168.2.200:6443 会话亲和性:ClientIP

谢谢 杜布拉夫科

【问题讨论】:

  • 您使用的是自定义 SSL 证书吗?你是怎么生成的?
  • 我正在使用 SAN 证书,我如何拥有 DNS:master01、DNS:master01.lab.cs、IP 地址:192.160.2.200、IP 地址:10.254.0.1
  • 是的,我在问你是否自己生成了证书。

标签: dns kubernetes


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-23
    • 2018-12-12
    • 1970-01-01
    • 2021-11-11
    • 2015-05-19
    • 1970-01-01
    • 2020-01-17
    相关资源
    最近更新 更多