【问题标题】:Re-deploying certificates after expiry in kubernetes clusterKubernetes集群过期后重新部署证书
【发布时间】:2018-09-12 08:58:33
【问题描述】:

我的 kubernetes 中的证书已过期。重新部署证书的步骤是什么。重新部署后 pod 的运行状况受到影响。我该如何克服呢?

[mdupaguntla@iacap067 K8S_HA_Setup_Post_RPM_Installation_With_RBAC]$ sudo kubectl logs elasticsearch-logging-0
+ export NODE_NAME=elasticsearch-logging-0
+ NODE_NAME=elasticsearch-logging-0
+ export NODE_MASTER=true
+ NODE_MASTER=true
+ export NODE_DATA=true
+ NODE_DATA=true
+ export HTTP_PORT=9200
+ HTTP_PORT=9200
+ export TRANSPORT_PORT=9300
+ TRANSPORT_PORT=9300
+ export MINIMUM_MASTER_NODES=2
+ MINIMUM_MASTER_NODES=2
+ chown -R elasticsearch:elasticsearch /data
+ ./bin/elasticsearch_logging_discovery
F0323 07:18:25.043962       8 elasticsearch_logging_discovery.go:78] kube-system namespace doesn't exist: Unauthorized
goroutine 1 [running]:
k8s.io/kubernetes/vendor/github.com/golang/glog.stacks(0xc4202b1200, 0xc42020a000, 0x77, 0x85)
        /go/src/k8s.io/kubernetes/vendor/github.com/golang/glog/glog.go:766 +0xcf
k8s.io/kubernetes/vendor/github.com/golang/glog.(*loggingT).output(0x1a38100, 0xc400000003, 0xc4200ba2c0, 0x1994cf4, 0x22, 0x4e, 0x0)
        /go/src/k8s.io/kubernetes/vendor/github.com/golang/glog/glog.go:717 +0x322
k8s.io/kubernetes/vendor/github.com/golang/glog.(*loggingT).printf(0x1a38100, 0x3, 0x121acfe, 0x1e, 0xc4206aff50, 0x2, 0x2)
        /go/src/k8s.io/kubernetes/vendor/github.com/golang/glog/glog.go:655 +0x14c
k8s.io/kubernetes/vendor/github.com/golang/glog.Fatalf(0x121acfe, 0x1e, 0xc4206aff50, 0x2, 0x2)
        /go/src/k8s.io/kubernetes/vendor/github.com/golang/glog/glog.go:1145 +0x67
main.main()
        /go/src/k8s.io/kubernetes/cluster/addons/fluentd-elasticsearch/es-image/elasticsearch_logging_dis

【问题讨论】:

    标签: kubernetes google-kubernetes-engine kubernetes-security


    【解决方案1】:

    我的 kubernetes 中的证书已过期。重新部署证书的步骤是什么。重新部署后 pod 的运行状况受到影响。我该如何克服这个问题?

    ...

    F0323 07:18:25.043962 8 elasticsearch_logging_discovery.go:78] kube-system 命名空间不存在:未经授权

    看来您必须重新生成证书的私钥,而不是使用集群的现有密钥生成的 CSR 颁发新证书。

    如果这是真的,那么您将需要(至少)做以下两件事之一:

    从备份中挖掘出旧的私钥文件,从中生成 CSR,重新颁发 API 证书,并将其记为一个宝贵的教训,不要在没有仔细考虑的情况下再次删除私钥

    或者:

    为每个命名空间删除任何 PodserviceAccountName 中命名的所有 serviceAccounts,然后删除这些 pod 本身以使其 volumeMount:s 反弹。补充信息在their admin guide

    如果一切顺利,ServiceAccountController 将重新创建那些 ServiceAccount 秘密,允许那些 Pods 重新启动,您就可以重新开始工作了。

    为集群管理 X.509 证书的具体步骤太多,无法放在一个答案框中,但这是对需要发生的事情的高级概述。

    【讨论】:

    • 尝试了第一种方法。得到了我的问题的解决方案。谢谢。我可以知道使用旧私钥生成新证书的原因吗?
    • 我可以知道使用旧私钥生成新证书的原因,因为私钥代表了 apiserver 和集群其余部分之间的真正契约;如您所见,证书是更多“临时”详细信息,例如 CN 和到期等。该过程与“正常” SSL 续订的工作方式完全相同,并且出于相同的原因。
    • 嗨 Matthew L Daniel 你能帮我解决这个问题吗? stackoverflow.com/questions/51303819/rbac-error-in-kubernetes
    猜你喜欢
    • 2021-03-02
    • 2019-12-16
    • 1970-01-01
    • 2021-07-07
    • 2021-03-08
    • 1970-01-01
    • 1970-01-01
    • 2018-09-27
    • 2019-06-28
    相关资源
    最近更新 更多