1、k8s 集群架构描述

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

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

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

3、故障排定,查看证书

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

  

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

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

# kubeadm alpha phase certs -h        # 创建证书
Usage:
kubeadm alpha phase certs [command]
Available Commands:
all Generates all PKI assets necessary to establish the control plane
apiserver Generates an API server serving certificate and key
apiserver-etcd-client Generates a client certificate for the API server to connect to etcd securely
apiserver-kubelet-client Generates a client certificate for the API server to connect to the kubelets securely
ca Generates a self-signed kubernetes CA to provision identities for components of the cluster
etcd-ca Generates a self-signed CA to provision identities for etcd
etcd-healthcheck-client Generates a client certificate for liveness probes to healthcheck etcd
etcd-peer Generates an etcd peer certificate and key
etcd-server Generates an etcd serving certificate and key
front-proxy-ca Generates a front proxy CA certificate and key for a Kubernetes cluster
front-proxy-client Generates a front proxy CA client certificate and key for a Kubernetes cluster
sa Generates a private key for signing service account tokens along with its public key
# kubeadm alpha phase kubeconfig -h    # 生成配置文件(例如:admin.conf|controller-manager.conf|kubelet.conf|scheduler.conf)
Usage:
kubeadm alpha phase kubeconfig [command]
Available Commands:
admin Generates a kubeconfig file for the admin to use and for kubeadm itself
all Generates all kubeconfig files necessary to establish the control plane and the admin kubeconfig file
controller-manager Generates a kubeconfig file for the controller manager to use
kubelet Generates a kubeconfig file for the kubelet to use. Please note that this should be used *only* for bootstrapping purposes.
scheduler Generates a kubeconfig file for the scheduler to use
user Outputs a kubeconfig file for an additional user
# kubeadm alpha phase certs apiserver -h
--apiserver-advertise-address string 填写本机apiserver ip。
--apiserver-cert-extra-sans strings 多master节点,在创建apiserver证书时,需要指定每个节点的IP,代理IP、域名。
--cert-dir string The path where to save the certificates (default "/etc/kubernetes/pki")
--config string Path to kubeadm config file (WARNING: Usage of a configuration file is experimental)
-h, --help help for apiserver
--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")
--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需要连接国外

# 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证书
# kubeadm alpha phase certs apiserver-kubelet-client # 创建apiserver-kubelet-client证书
# kubeadm alpha phase certs front-proxy-client # 创建front-proxy-client证书

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

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

  

8、准备替换

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

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

 

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

    

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

  

9、重启服务

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

  

10、验证

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

  

11、恢复其它master节点

# 注意拷贝kubelet.conf文件到其它服务器(其它服务器自己生成)
# scp admin.conf controller-manager.conf scheduler.conf 10.18.60.4:/etc/kubernetes
# 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
# 其它两个节点只生成各自的kubelet配置文件
# kubeadm alpha phase kubeconfig kubelet
# grep 'server:' kubelet.conf
server: https://k8s.m.api:6443

   

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

    

# kubelet 客户端签发的不需要备份
# rm -rf /var/lib/kubelet/pki/*
# 重启本机所有docker容器
# docker restart $(docker ps -q) # 重启kubelet
# systemctl restart kubelet.service

  

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

k8s集群证书过期(kubeadm 1.10.2 )的更多相关文章

  1. 如何处理 Kubeadm 搭建的集群证书过期问题

    Kubeadm 证书过期处理 以下内容参考了如下链接:https://www.cnblogs.com/skymyyang/p/11093686.html 一.处理证书已过期的集群 使用 kubeadm ...

  2. 采用二进制方式安装K8S集群,版本etcd-v3.3.10,flannel-v0.11.0,kubernetes-server-linux-amd64

    官方提供的几种Kubernetes部署方式 minikube Minikube是一个工具,可以在本地快速运行一个单点的Kubernetes,尝试Kubernetes或日常开发的用户使用.不能用于生产环 ...

  3. K8S 使用Kubeadm搭建高可用Kubernetes(K8S)集群 - 证书有效期100年

    1.概述 Kubenetes集群的控制平面节点(即Master节点)由数据库服务(Etcd)+其他组件服务(Apiserver.Controller-manager.Scheduler...)组成. ...

  4. K8S集群证书已过期且etcd和apiserver已不能正常使用下的恢复方案

    在这种比较极端的情况下,要小心翼翼的规划和操作,才不会让集群彻底死翘翘.首先,几个ca根证书是10年期,应该还没有过期.我们可以基于这几个根证书,来重新生成一套可用的各组件认证证书. 前期,先制定以下 ...

  5. 关于k8s集群证书1年过期后,使用kubadm重新生成证书及kubeconfig配置文件的变化

    这个证书很重要,不用说. 但手工生成证书,确实工作量大且容易出错. 推荐的方式,是保留/etc/kubernetes/pki目录下的ca.crt,ca.key,sa.crt,sa.key. 这四个文件 ...

  6. kubernetes集群证书过期之后--转发

    步骤 如果有多master,需要在每个master上进行以下操作. 需要进行以下步骤 重新生成证书 重新生成对应的配置文件 重启docker 和 kubelet 拷贝kubectl 客户端文件 [ro ...

  7. 使用Kubeadm创建k8s集群之节点部署(三十一)

    前言 本篇部署教程将讲述k8s集群的节点(master和工作节点)部署,请先按照上一篇教程完成节点的准备.本篇教程中的操作全部使用脚本完成,并且对于某些情况(比如镜像拉取问题)还提供了多种解决方案.不 ...

  8. kubernetes集群证书更新

    kubeadm 默认证书为一年,一年过期后,会导致api service不可用,使用过程中会出现:x509: certificate has expired or is not yet valid. ...

  9. 配置k8s集群context-rbac实践

    说明 在openshift环境中,可以通过oc project {project_name}命令来切换project,那么在k8s中式如何切换namespace的呢?(ocp的project即相当于k ...

随机推荐

  1. queue的一些用法

    import queue q = queue.Queue(3)# 指定队列大小,如果为空则为无限大 print(q.empty()) q.put('厉智') q.put('程劲') q.put('陈培 ...

  2. struts2之登陆拦截

    针对登录拦截功能,我们需要设置拦截哪些方法和不拦截哪些方法 action action类中,处理登录时,将用户.密码绑定到session ActionContext ac = ActionContex ...

  3. SpringBoot——》WebMvcConfigurerAdapter详解

    一.WebMvcConfigurerAdapter是什么二.WebMvcConfigurerAdapter常用的方法1.addInterceptors:拦截器2.addCorsMappings:跨域3 ...

  4. Educational Codeforces Round 33 (Rated for Div. 2) D题 【贪心:前缀和+后缀最值好题】

    D. Credit Card Recenlty Luba got a credit card and started to use it. Let's consider n consecutive d ...

  5. LA 6979 Known Notation 构造+贪心 铜牌题

    题意:给出一个字符串,有两种操作: 1.插入一个数字  2.交换两个字符   问最少多少步可以把该字符串变为一个后缀表达式(操作符只有*) #include <cstdio> #inclu ...

  6. 2018CCPC桂林站G Greatest Common Divisor

    题目描述 There is an array of length n, containing only positive numbers.Now you can add all numbers by ...

  7. HGOI 20191101am 题解

    Problem A awesome 给出一个序列$A_i$,任取序列中三个数组成三元组$(a_i , a_j , a_k)$. 输出本质不同的且$abc \equiv 1 (mod  P)$且满足$a ...

  8. python 鼠标输入

    import win32con import win32api import time win32api.SetCursorPos([,]) # 设置鼠标位置 time.sleep(0.1) #win ...

  9. Codeforces 1111 E. Tree(虚树,DP)

    题意 有一棵树,q个询问,每次询问,指定一个点做树根,再给定k个点,要求把这些点分成不超过m组的方案数,分配的限制是任意两个有祖先关系的点不能分在同一组.题目还保证了所有的询问的k加起来不超过1e5. ...

  10. Dubbo API 笔记——Dubbo架构与使用

    转载于: https://blog.csdn.net/benhuo931115/article/details/78457149 架构演变 单一应用架构 所有功能部署在一个应用上,用于简化增删改查工作 ...