经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » Kubernetes » 查看文章
k8s集群证书过期(kubeadm 1.10.2 )
来源:cnblogs  作者:笔下生风  时间:2019/5/27 8:39:16  对本文有异议

 

1、k8s 集群架构描述

  • kubeadm v1.10.2创建k8s集群。
  • master节点高可用,三节点(10.18.60.3、10.18.60.4、10.18.60.5)。
  • LVS实现master三节点代理。

 

2、K8S集群证书过期,日志报错如下

  1. Unable to authenticate the request due to an error: x509: certificate has expired or is not yet valid

 

3、故障排定,查看证书

  1. # openssl x509 -noout -text -in apiserver-kubelet-client.crt | grep Not
  2. Not Before: May 22 01:58:06 2018 GMT
  3. Not After : May 22 01:58:07 2019 GMT    # 2019-5-22日过期

  

4、kubeadm 命令介绍(v1.10.2)  

注:本次只需用到以下两个参数命令,其它参数不做介绍

  1. # kubeadm alpha phase certs -h        # 创建证书
  2. Usage:
  3. kubeadm alpha phase certs [command]
  4. Available Commands:
  5. all Generates all PKI assets necessary to establish the control plane
  6. apiserver Generates an API server serving certificate and key
  7. apiserver-etcd-client Generates a client certificate for the API server to connect to etcd securely
  8. apiserver-kubelet-client Generates a client certificate for the API server to connect to the kubelets securely
  9. ca Generates a self-signed kubernetes CA to provision identities for components of the cluster
  10. etcd-ca Generates a self-signed CA to provision identities for etcd
  11. etcd-healthcheck-client Generates a client certificate for liveness probes to healthcheck etcd
  12. etcd-peer Generates an etcd peer certificate and key
  13. etcd-server Generates an etcd serving certificate and key
  14. front-proxy-ca Generates a front proxy CA certificate and key for a Kubernetes cluster
  15. front-proxy-client Generates a front proxy CA client certificate and key for a Kubernetes cluster
  16. sa Generates a private key for signing service account tokens along with its public key


  1. # kubeadm alpha phase kubeconfig -h    # 生成配置文件(例如:admin.conf|controller-manager.conf|kubelet.conf|scheduler.conf)
  2. Usage:
  3. kubeadm alpha phase kubeconfig [command]
  4. Available Commands:
  5. admin Generates a kubeconfig file for the admin to use and for kubeadm itself
  6. all Generates all kubeconfig files necessary to establish the control plane and the admin kubeconfig file
  7. controller-manager Generates a kubeconfig file for the controller manager to use
  8. kubelet Generates a kubeconfig file for the kubelet to use. Please note that this should be used *only* for bootstrapping purposes.
  9. scheduler Generates a kubeconfig file for the scheduler to use
  10. user Outputs a kubeconfig file for an additional user
  11.  
  1. # kubeadm alpha phase certs apiserver -h
  2. --apiserver-advertise-address string 填写本机apiserver ip
  3. --apiserver-cert-extra-sans strings master节点,在创建apiserver证书时,需要指定每个节点的IP,代理IP、域名。
  4. --cert-dir string The path where to save the certificates (default "/etc/kubernetes/pki")
  5. --config string Path to kubeadm config file (WARNING: Usage of a configuration file is experimental)
  6. -h, --help help for apiserver
  7. --service-cidr string Alternative range of IP address for service VIPs, from which derives the internal API server VIP that will be added to the API Server serving cert (default "10.96.0.0/12")
  8. --service-dns-domain string Alternative domain for services, to use for the API server serving cert (default "cluster.local")  

 

5、备份节点配置文件与证书

# cp -rfp /etc/kubernetes /etc/kubernetes.2019.5.23  

6、创建证书

注:

    1、因为之前三个master节点的配置文件中全部填写的是LVS VIP(没做域名解析),为了今后切换方便给VIP配置了一个域名,而apiserver证书中没有配置该域名的认证,所以利用openssl对apiserver证书做了重签替换,并设置apiserver证书有效期10年,所以这次证书过期不涉及apiserver,只需要对apiserver-kubelet-client与front-proxy-client证书重新创建,而下边给出了对apiserver证书重签的命令。

 2、创建证书时需要配置VPN,kubeadm需要连接国外

  1. # kubeadm alpha phase certs apiserver --apiserver-advertise-address 10.18.60.3 --apiserver-cert-extra-sans 10.18.60.4 --apiserver-cert-extra-sans 10.18.60.5 --apiserver-cert-extra-sans 10.16.60.6 --apiserver-cert-extra-sans k8s.m.api # 创建apiserver证书
  2. # kubeadm alpha phase certs apiserver-kubelet-client # 创建apiserver-kubelet-client证书
  3. # kubeadm alpha phase certs front-proxy-client # 创建front-proxy-client证书

 

7、创建配置文件(admin.conf|controller-manager.conf|kubelet.conf|scheduler.conf)

  1. # 创建完会看到/etc/kubernetes下面出现了配置文件
  2. # kubeadm alpha phase kubeconfig all --apiserver-advertise-address 10.18.60.3 

  

8、准备替换

因为我三节点的代理IP配置了域名,所以需要做下替换。

  1. # sed -i 's/10\.18\.60\.3/k8s.m.api/g' admin.conf
  2. # sed -i 's/10\.18\.60\.3/k8s.m.api/g' controller-manager.conf
  3. # sed -i 's/10\.18\.60\.3/k8s.m.api/g' scheduler.conf
  4. # sed -i 's/10\.5\.38\.39/k8s.m.api/g' kubelet.conf
  5. # grep 'host:' /etc/kubernetes/manifests/kube-apiserver.yaml
  6. host: k8s.m.api

 

  1. # 直接覆盖(注意文件权限)
  2. # cp -rfp /etc/kubernetes/admin.conf ~/.kube/config

    

  1. # kubelet 客户端签发的不需要备份
  2. # rm -rf /var/lib/kubelet/pki/*

  

9、重启服务

  1. # 重启本机所有docker容器
  2. # docker restart $(docker ps -q)
  3.  
  4. # 重启kubelet
  5. # systemctl restart kubelet.service

  

10、验证

  1. # 可以看到已经恢复
  2. # kubectl get node

  

11、恢复其它master节点

  1. # 注意拷贝kubelet.conf文件到其它服务器(其它服务器自己生成)
    # scp admin.conf controller-manager.conf scheduler.conf 10.18.60.4:/etc/kubernetes
  2. # scp admin.conf controller-manager.conf scheduler.conf 10.18.60.5:/etc/kubernetes
    # scp apiserver-kubelet-client.crt apiserver-kubelet-client.key front-proxy-client.crt front-proxy-client.key 10.18.60.4:/etc/kubernetes/pki
    # scp apiserver-kubelet-client.crt apiserver-kubelet-client.key front-proxy-client.crt front-proxy-client.key 10.18.60.5:/etc/kubernetes/pki

 

  1. # 其它两个节点只生成各自的kubelet配置文件
  2. # kubeadm alpha phase kubeconfig kubelet
  3. # grep 'server:' kubelet.conf
  4. server: https://k8s.m.api:6443

   

  1. # 直接覆盖(注意文件权限)
  2. # cp -rfp /etc/kubernetes/admin.conf ~/.kube/config

    

  1. # kubelet 客户端签发的不需要备份
  2. # rm -rf /var/lib/kubelet/pki/*

 

  1. # 重启本机所有docker容器
  2. # docker restart $(docker ps -q)
  3.  
  4. # 重启kubelet
  5. # systemctl restart kubelet.service

  

  1. # 可以看到已经恢复
  2. # kubectl get node

 

原文链接:http://www.cnblogs.com/chineseall/p/10920361.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号