我有一个coreos kubernetes集群,我从下面这篇文章开始:
TLDR;
> kube-aws init
> kube-aws render
> kube-aws up一切都很好,我在AWS上有一个kubernetes coreos集群。在这篇文章中有一个警告说:
生产注意:不应该使用kube生成的TLS密钥和证书来部署生产Kubernetes集群。每个组件证书的有效期仅为90天,CA的有效期为365天。如果部署生产Kubernetes集群,首先考虑独立于此工具建立PKI。
因此,我希望替换默认证书,因此我遵循了以下文章:
TLDR;
我收到kubectl和集群之间的通信错误,抱怨证书
无法连接到服务器: x509:由未知权威机构签名的证书
我还试图使用指向集群DNS的kubectl签名证书,为集群设置DNS。
如何使kubectl与我的集群通信?
提前感谢
编辑:
我的~/.kube/config看起来是这样的:
apiVersion: v1
clusters:
- cluster:
certificate-authority: /Users/Yariv/Development/workspace/bugeez/bugeez-kubernetes/credentials/ca2.pem
server: https://kubernetes.bugeez.io
name: bugeez
contexts:
- context:
cluster: bugeez
user: bugeez-admin
name: bugeez-system
current-context: bugeez-system
kind: Config
preferences: {}
users:
- name: bugeez-admin
user:
client-certificate: /Users/Yariv/Development/workspace/bugeez/bugeez-kubernetes/credentials/admin2.pem
client-key: /Users/Yariv/Development/workspace/bugeez/bugeez-kubernetes/credentials/admin-key2.pem编辑:
我的所有证书都是由ca2.pem签名的,我还通过运行以下命令验证了这一事实:
openssl verify -CAfile ca2.pem <certificate-name>编辑:
我认为导致错误的原因是:当我切换控制器中的键和工作人员时,看起来就像是用旧的键覆盖了我的新键。如何替换键,以及如何更改云端配置以适应更改?
发布于 2016-07-27 09:09:49
另一种对我有用的解决方案是启动一个新集群,最初使用自定义证书,而不依赖于默认的临时凭据。
按照您使用的相同的教程,我做了以下更改:
> kube-aws init
> kube-aws render在kube-aws up之前,我按照教程创建了证书。本教程的唯一问题是,它适合为现有集群创建新的证书。因此,有必要进行以下修改:
$ openssl req -x509 -new -nodes -key ca-key.pem -days 10000 -out ca.pem -subj "/CN=kube-ca"需要替换为:$ openssl req -x509 -new -nodes -key ca-key.pem -days 10000 -out ca.pemopenssl.cnf
[req]
...
[req_distinguished_name]
[ v3_req ]
...
[alt_names]
DNS.1 = kubernetes
DNS.2 = kubernetes.default
DNS.3 = kubernetes.default.svc
DNS.4 = kubernetes.default.svc.cluster.local
DNS.5 = mydomain.net
IP.1 = ${K8S_SERVICE_IP} # 10.3.0.1
IP.2 = ${MASTER_IP} # 10.0.0.50对于所有工作节点,我还使用了相同的辅助证书。
证书就绪后,输入kube-aws up。
我希望这能帮你离开地面
发布于 2016-07-18 19:39:15
如果键确实被旧键覆盖,则需要更新CloudFormation模板以使用包含新键的新用户数据。
https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks.html
发布于 2016-07-17 11:51:46
这个错误消息基本上意味着服务器证书是由根ca签名的,HTTP客户端不知道这一点。造成这种情况的原因可能是:
apiserver.pem)不是由在kubeconfig.yml中获得的ca签名的(在您的例子中是ca2.pem)。您可以使用:openssl verify -CAfile ca2.pem apiserver.pem验证这一点。文件apiserver.pem是通过--tls-cert-file传递给apiserver的证书(参见http://kubernetes.io/docs/admin/kube-apiserver/)。--tls-cert-file和--tls-private-key-file标志时,它就会创建自签名的标志。apiserver.pem不包含ca证书(请参阅--tls-cert-file标志在http://kubernetes.io/docs/admin/kube-apiserver/中的描述)。我不完全确定HTTPS服务器是否需要了解根ca,但这也可能导致问题。此外,此错误消息也不清楚,无论这是客户端证书还是服务器证书的问题。这意味着客户端证书还必须由根ca签名。
--client-ca-file标志设置。假设此文件也名为ca2.pem,则可以使用:openssl verify -CAfile ca2.pem admin2.pem验证客户端证书。https://stackoverflow.com/questions/38419372
复制相似问题