我有一个CoreOS Kubernetes集群,我是按照这篇文章开始的:
简而言之:
> kube-aws init
> kube-aws render
> kube-aws up
一切都很顺利,我在AWS上拥有了一个Kubernetes CoreOS集群。文章中有一个警告:
生产注意事项:kube-aws生成的TLS密钥和证书不应用于部署生产Kubernetes集群。每个组件证书仅有效期为90天,而CA有效期为365天。如果要部署生产Kubernetes集群,请首先考虑独立建立PKI。
因此,我想替换默认证书,所以我按照以下文章进行操作:
TLDR;
- 创建如下自签名证书:ca.pem, ca-key.pem
- 为控制器创建证书:apiserver.pem, apiserver-key.pem
- 使用上述创建的证书替换控制器中的证书,并重新启动控制器
- 创建工作节点证书并替换工作节点中的证书,然后重新启动它们
- 配置kubectl使用我创建的新证书,并配置上下文和用户
我在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>
编辑:
我认为错误的原因是这样的: 当我在控制器和工作人员之间切换密钥时,似乎 cloud-config 正在用旧密钥覆盖我的新密钥。我该如何替换密钥并更改 cloud-config 以适应我的更改?
kubeconfig
是什么样子的?你是否将新的 CA 证书设置为clusters.cluster.certificate-authority
?(参见 http://kubernetes.io/docs/user-guide/kubeconfig-file/) - svenwltrkubectl
命令中的--insecure-skip-tls-verify
标记是否可用? - svenwltr