kubernetes - kubernetes master 的 x509 证书无效

标签 kubernetes kubeadm

我正在尝试从我的工作站访问我的 k8s 主机。我可以很好地从 LAN 访问主站,但不能从我的工作站访问。错误信息是:

% kubectl --context=employee-context get pods
Unable to connect to the server: x509: certificate is valid for 10.96.0.1, 10.161.233.80, not 114.215.201.87

如何将 114.215.201.87 添加到证书中?我是否需要删除旧集群 ca.crt,重新创建它,重新启动整个集群,然后重新签署客户端证书?我已经使用 kubeadm 部署了我的集群,但我不确定如何手动执行这些步骤。

最佳答案

一种选择是告诉 kubectl您不希望验证证书。显然这会带来安全问题,但我猜你只是在测试,所以你去吧:

kubectl --insecure-skip-tls-verify --context=employee-context get pods
更好的选择是修复证书。最简单的方法是通过运行 kubeadm reset 重新初始化集群在包括主节点在内的所有节点上,然后执行
kubeadm init --apiserver-cert-extra-sans=114.215.201.87
也可以在不删除所有内容的情况下修复该证书,但这有点棘手。以 root 身份在 master 上执行如下操作:
rm /etc/kubernetes/pki/apiserver.*
kubeadm init phase certs all --apiserver-advertise-address=0.0.0.0 --apiserver-cert-extra-sans=10.161.233.80,114.215.201.87
docker rm `docker ps -q -f 'name=k8s_kube-apiserver*'`
systemctl restart kubelet

关于kubernetes - kubernetes master 的 x509 证书无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46360361/

相关文章:

kubernetes - 将 JSON 补丁应用于 Kubernetes 自定义资源时出错

kubernetes - 是否可以运行kubeadm init命令来忽略生成证书?

kubernetes - 如何通过kubeadm更改kubelet配置

kubernetes - 为什么要使用 kubeadm 手动生成证书?

如果节点变为离线超时,Kubernetes 重新创建 pod

kubernetes - 配置 Microk8s

kubernetes - Helm 在本地导出 YAML 文件(只使用模板引擎,不要发送到 Kubernetes)

javascript - 使用 nginx 进行 kubernetes 入口的前端 Web 应用程序中的路径路由

java - 使用 Java Kubernetes 客户端 API 部署 Pod 并为其分配节点

image - 使用kubeadm(kubernetes)时,google-containers和google_containers有什么区别