【问题标题】:Isolated Azure Kubernetes Service (AKS) SSL Error隔离 Azure Kubernetes 服务 (AKS) SSL 错误
【发布时间】:2020-09-16 03:12:27
【问题描述】:

我在一个隔离的服务器上部署了一个舵图,并在自签名证书 HTTPS 中发布它到 kube-api 它失败并出现以下错误:

curl: (35) OpenSSL SSL_connect: SSL_ERROR_SYSCALL 连接到 kubernetes.default.svc:443

有人看过吗?这是“POST”:

echo "Creating a secret for the certificate and keys"
 STATUS=$(curl -ik \
            -o ${TMP_DIR}/output \
            -w "%{http_code}" \
            -X POST \
            -H "Authorization: Bearer $TOKEN" \
            -H 'Accept: application/json' \
            -H 'Content-Type: application/json' \
            -d '{
            "kind": "Secret",
            "apiVersion": "v1",
            "metadata": {
              "name": "spark-webhook-certs",
              "namespace": "'"$NAMESPACE"'"
            },
            "data": {
              "ca-cert.pem": "'"$ca_cert"'",
              "ca-key.pem": "'"$ca_key"'",
              "server-cert.pem": "'"$server_cert"'",
              "server-key.pem": "'"$server_key"'"
            }
           }' \
           https://kubernetes.default.svc/api/v1/namespaces/${NAMESPACE}/secrets 

错误是由于自签名证书的 .sh 被此处的 docker image 命令调用:https://github.com/GoogleCloudPlatform/spark-on-k8s-operator/blob/master/hack/gencerts.sh

我知道它还没有走到尽头,因为它没有泄露它试图发布的秘密。你们都认为我应该从哪里开始排除故障?我在这里发布了其他信息,包括屏幕截图:https://github.com/GoogleCloudPlatform/spark-on-k8s-operator/issues/926

【问题讨论】:

    标签: ssl curl kubernetes kubernetes-helm azure-aks


    【解决方案1】:

    我会尝试更新gencerts.sh 的内容以获取有关错误的更多上下文:

    1. -v--verbose 选项添加到curl 命令。
    2. 使用strace 调用curl 命令

    这两个选项都会向stderr 发送更多输出,因此您应该能够在日志中检查并更好地了解故障模式。公平警告:strace 将产生大量输出。

    另一个信息来源是 kube-apiserver 日志。您需要通过调整集群配置来enable collection of master logs。您应该期望 kube-apiserver 记录每个 API 请求。

    这里的第一个问题是控制平面是否接收到请求。为了解决这个问题,我会在集群内的容器上获得一个 shell,并尝试重新创建 gencerts.sh 正在发出的 curl 请求。在 kubernetes 文档中有一些关于 accessing the cluster API without kubectl 的信息。

    【讨论】:

    • 我想这样做,唯一的问题是我没有权限访问生成包含图像的 gencert.sh 的 dockerfile。我需要考虑是否可以基于该图像创建图像并以某种方式删除和替换该文件。
    • 我添加了一些关于收集kube-apiserver 日志的信息,这些信息应该告诉你失败的请求是否通过(我怀疑不是)。此外,您可以尝试在为故障排除而创建的任意容器中复制故障,而不是操纵图像。
    • 你是对的:k8s.io/client-go/informers/factory.go:134:密切关注 - *v1beta1.ValidatingWebhookConfiguration 共收到 0 个项目但是 kube-apiserver 并没有给我太多信息。我也在 kubectl 日志中执行以下操作:1) 未安装的卷=[webhook-certs],未附加的卷=[webhook-certs sparkoperator-1590335342-token-49pmd]:等待条件超时 2)“webhook-certs " : secret "spark-webhook-certs" not found 你怎么看:github.com/jetstack/cert-manager/issues/1425 我看到的是:"spark-webhook-certs timeout" 随后是 404
    猜你喜欢
    • 2021-09-20
    • 2022-01-21
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    • 1970-01-01
    • 2019-05-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多