修改apiserver证书

问题:

k8s集群增加了新的虚拟IP和网址,默认的证书包含的名称不能满足我们的要求重新更新证书。

解决:

Kubernetes APIServer 使用数字证书来加密 APIServer 的相关流量以及验证到 APIServer 的连接。所以如果我们想使用命令行客户端(比如 kubectl)连接到 APIServer,并且使用的主机名或者 IP 地址不包括在证书的 subject 的备选名称(SAN)列表中的话,访问的时候可能会出错,会提示对指定的 IP 地址或者主机名访问证书无效。要解决这个问题就需要更新证书,使 SAN 列表中包含所有你将用来访问 APIServer 的 IP 地址或者主机名。

更新 APIServer 证书

首先要修改kubeadm的配置文件,如果你使用配置文件安装的集群可以直接修改,没有可以直接kube-system空间的下的configmap中找到文件,导出到本地

编辑配置文件,添加新的IP或域名

kubectl -n kube-system get configmap kubeadm-config -o jsonpath='{.data.ClusterConfiguration}' > kubeadm.yaml

 

apiServer:
  # 默认没有SAN信息
  certSANs:
  - 10.10.10.10
  extraArgs:
    authorization-mode: Node,RBAC
  timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta2
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns:
  type: CoreDNS
etcd:
  local:
    dataDir: /var/lib/etcd
imageRepository: registry.aliyuncs.com/google_containers
kind: ClusterConfiguration
kubernetesVersion: v1.20.0
networking:
  dnsDomain: cluster.local
  podSubnet: 10.244.0.0/16
  serviceSubnet: 10.96.0.0/16
scheduler: {}

添加完成后需要把已存在的密钥剪切走

# 剪切证书密钥
$ mv /etc/kubernetes/pki/apiserver.{crt,key} ~
# 执行命令生成新的密钥
$ kubeadm init phase certs apiserver --config kubeadm.yaml

验证: 

openssl x509 -in /etc/kubernetes/pki/apiserver.crt -text

在显示的结果中就能看到你添加的IP了,最后记得编辑下kube-system中的map文件

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值