Kubernetes:为什么我的acme挑战得到EOF /无响应?

如何解决Kubernetes:为什么我的acme挑战得到EOF /无响应?

我正在使用Kops在AWS中设置Kubernetes集群。我有一个nginx入口控制器,并且试图使用letencrypt设置tls。现在我无法启动并运行我的入口,因为我的证书挑战收到此错误:

Waiting for http-01 challenge propagation: failed to perform self check GET request 'http://critsit.io/.well-known/acme-challenge/[challengeId]': Get http://critsit.io/.well-known/acme-challenge/[challengeId]: EOF

我有一个正在占用公共流量的LoadBalancer服务,证书颁发者会自动创建另外两个没有公共IP的服务。

我在这里做错了什么?是否存在一些网络问题阻止Pod完成acme流?也许还有其他东西?

注意:我已经在Route53中设置了一条A记录,以将流量定向到LoadBalancer。

> kubectl get services
NAME                        TYPE           CLUSTER-IP       EXTERNAL-IP                                                               PORT(S)                      AGE
cm-acme-http-solver-m2q2g   NodePort       100.69.86.241    <none>                                                                    8089:31574/TCP               3m34s
cm-acme-http-solver-zs2sd   NodePort       100.67.15.149    <none>                                                                    8089:30710/TCP               3m34s
default-http-backend        NodePort       100.65.125.130   <none>                                                                    80:32485/TCP                 19h
kubernetes                  ClusterIP      100.64.0.1       <none>                                                                    443/TCP                      19h
landing                     ClusterIP      100.68.115.188   <none>                                                                    3001/TCP                     93m
nginx-ingress               LoadBalancer   100.67.204.166   [myELB].us-east-1.elb.amazonaws.com                                       443:30596/TCP,80:30877/TCP   19h

这是我的入口设置:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: critsit-ingress
  namespace: default
  annotations:
    kubernetes.io/ingress.class: "nginx"
    cert-manager.io/acme-challenge-type: "http01"
    cert-manager.io/cluster-issuer: "letsencrypt-prod"
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  tls:
    - hosts:
      - critsit.io
      - app.critsit.io
      secretName: letsencrypt-prod
  rules:
    - host: critsit.io
      http:
        paths:
          - path: /
            backend:
              serviceName: landing
              servicePort: 3001

我的证书颁发者:

apiVersion: cert-manager.io/v1alpha2
kind: ClusterIssuer
metadata:
  name: letsencrypt-prod
spec:
  acme:
    # The ACME server URL
    server: https://acme-v02.api.letsencrypt.org/directory
    # Email address used for ACME registration
    email: michael.vegeto@gmail.com
    # Name of a secret used to store the ACME account private key
    privateKeySecretRef:
      name: letsencrypt-prod
    # Enable the HTTP-01 challenge provider
    solvers:
    - http01:
        ingress:
          class:  nginx
      selector: {}

更新:我注意到我的负载均衡器将所有实例标记为OutOfOrder,因为它们无法通过运行状况检查。我想知道这是否与问题有关。

第二次更新:我完全放弃了这条路线,并使用Istio重建了网络/入口系统

解决方法

您收到的错误消息可能意味着各种各样的问题。但是,您可以进行一些检查/操作以使其起作用:

  1. 删除入口,证书和证书管理器fully。之后,将它们全部重新添加以确保安装干净。有时,陈旧的证书或错误的/多个Ingress路径可能是问题所在。例如,您可以使用Helm:

helm install my-nginx-ingress stable/nginx-ingress
helm repo add jetstack https://charts.jetstack.io
helm repo update 
helm install  cert-manager jetstack/cert-manager  --namespace cert-manager --version v0.15.0 --set installCRDs=true

  1. 确保您的流量允许HTTP或具有受信任证书的HTTPS。

  2. 检查负载均衡器的发夹模式是否正确,并确保其正常工作。

  3. 添加:nginx.ingress.kubernetes.io/ssl-redirect: "false"注释到Ingress规则。请稍等一下,看看是否会创建有效的证书。

  4. 您可以在Kubernetes集群中手动手动颁发证书。为此,请遵循this guide

  5. 问题可以及时解决。当前,如果自检失败,它会 更新状态信息的原因(例如:自检失败),然后 稍后再试一次(以允许传播)。这是预期的行为。

这是一个持续存在的问题,正在herehere中进行跟踪。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 &lt;select id=&quot;xxx&quot;&gt; SELECT di.id, di.name, di.work_type, di.updated... &lt;where&gt; &lt;if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 &lt;property name=&quot;dynamic.classpath&quot; value=&quot;tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-