1

我在 Kubernetes 中有一个“部署”,它在 GKE 中运行良好,但在 MiniKube 中失败。我有一个带有 2 个容器的 Pod:-(1)Nginx 作为反向代理(分别在 /etc/tls 和 /etc/nginx 读取秘密和 configMap 卷)(2)基于 JVM 的服务在 localhost 上侦听

minikube 部署中的问题是 Nginx 容器无法读取似乎不存在的 TLS 证书 - 即 Pod 的机密卷装载似乎失败。

nginx: [emerg] BIO_new_file("/etc/tls/server.crt") failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/etc/tls/server.crt','r') error:2006D080:BIO routines:BIO_new_file:no such file)

但是,如果我执行“minikube 日志”,我会得到大量看似“成功”的 tls 卷挂载......

 MountVolume.SetUp succeeded for volume "kubernetes.io/secret/61701667-eca7-11e6-ae16-080027187aca-scriptwriter-tls" (spec.Name: "scriptwriter-tls")

而秘密本身就在集群中,好吧......

$ kubectl get secrets scriptwriter-tls
NAME               TYPE      DATA      AGE
scriptwriter-tls   Opaque    3         1h

因此,从机密的角度来看,就 miniKube 而言,一切似乎都很好。但另一方面,nginx 容器看不到它。

我也无法登录到容器,因为它一直在终止。

为了完整起见,部署 yaml 中的相关部分......首先是 nginx 配置......

  - name: nginx
    image: nginx:1.7.9
    imagePullPolicy: Always
    ports:
    - containerPort: 443
    lifecycle:
      preStop:
        exec:
          command: ["/usr/sbin/nginx", "-s", "quit"]
    volumeMounts:
      - name: "nginx-scriptwriter-dev-proxf-conf"
        mountPath: "/etc/nginx/conf.d"
      - name: "scriptwriter-tls"
        mountPath: "/etc/tls"

其次,容器级别的卷本身......

  volumes:
    - name: "scriptwriter-tls"
      secret:
        secretName: "scriptwriter-tls"
    - name: "nginx-scriptwriter-dev-proxf-conf"
      configMap:
        name: "nginx-scriptwriter-dev-proxf-conf"
        items:
          - key: "nginx-scriptwriter.conf"
            path: "nginx-scriptwriter.conf"

任何帮助指针将不胜感激。

4

1 回答 1

0

我是头等舱!:-) 有时错误只是错误!所以问题是秘密是使用本地 $HOME/.ssh/* 证书创建的......如果你是从具有不同证书的不同计算机生成它们,那么你猜怎么着?!所以现在一切都修复了:-)

于 2017-02-07T14:56:31.963 回答