使用 cert-manager 为 rancher 获取 letsencrypt 证书时连接被拒绝

Connection refused when using cert-manager to get a letsencrypt certificate for rancher

我使用这些说明在新安装的 Ubuntu 20.04 服务器上安装了 MicroK8s:https://microk8s.io/

然后我按照这些说明安装了 helm:https://helm.sh/docs/intro/install/

最后我使用这些说明安装了 rancher:https://rancher.com/docs/rancher/v2.x/en/installation/install-rancher-on-k8s/

它似乎有效。牧场主 pods 是 运行,但是牧场主本身无法访问。系统上没有活动的防火墙。 所以我查看了日志:

kubectl -n cattle-system describe certificate

...
Spec:
  Dns Names:
    <domain>
  Issuer Ref:
    Group:      cert-manager.io
    Kind:       Issuer
    Name:       rancher
  Secret Name:  tls-rancher-ingress
Status:
  Conditions:
    Last Transition Time:  2020-10-16T16:12:11Z
    Message:               Waiting for CertificateRequest "tls-rancher-ingress-3273743932" to complete
    Reason:                InProgress
    Status:                False
    Type:                  Ready
Events:
  Type    Reason        Age   From          Message
  ----    ------        ----  ----          -------
  Normal  GeneratedKey  78m   cert-manager  Generated a new private key
  Normal  Requested     78m   cert-manager  Created new CertificateRequest resource "tls-rancher-ingress-3273743932"

kubectl -n cert-manager logs cert-manager-86b8b4f4b7-jvrg9

I1016 17:25:13.476038       1 sync.go:86] cert-manager/controller/issuers "msg"="Error initializing issuer: Get \"https://acme-v02.api.letsencrypt.org/directory\": dial tcp: lookup acme-v02.api.letsencrypt.org on 127.0.0.53:53: read udp 127.0.0.1:34709-\u003e127.0.0.53:53: read: connection refused" "resource_kind"="Issuer" "resource_name"="rancher" "resource_namespace"="cattle-system"

我是 kubernetes 的新手,这个日志不是很好。连接到底在哪里被拒绝?在发行人(letsencrypt)本身?我该如何解决?

编辑:主要是我在解释最后一条试图告诉我出了什么问题的日志消息时遇到了问题。 “在 127.0.0.53:53 上查找 acme-v02.api.letsencrypt.org” 读起来好像它在错误地解析该 dns 条目。如果我在主机上 ping 它,它会正确解析它。我需要为 kubernetes pods 做一些 DNS 配置才能使用主机的 dns 吗?我在这里也可能完全错了。

安装 microk8s dns 和入口插件解决了这个问题。