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. 简单的理解 equals和==的区别

    直接上代码: //== 比较的是地址 String test = new String("测试"); String test1 = new String("测试" ...

  2. Codeforces Round #346 (Div. 2) A题 [一道让我生气的思维题·]

    A. Round House Vasya lives in a round building, whose entrances are numbered sequentially by integer ...

  3. MacOs High Sierra 升级失败解决办法

    进入recovery的方法: Command-R 重新安装您在 Mac 上安装过的最新 macOS,但不会升级到更高的版本. Option-Command-R升级到与您的 Mac 兼容的最新 macO ...

  4. 【转载】Dijkstra算法和Floyd算法的正确性证明

      说明: 本文仅提供关于两个算法的正确性的证明,不涉及对算法的过程描述和实现细节 本人算法菜鸟一枚,提供的证明仅是自己的思路,不保证正确,仅供参考,若有错误,欢迎拍砖指正   ----------- ...

  5. windows内核情景分析之中断处理(毛德操)[转]

    中断处理 每个cpu有一张中断表,简称IDT. IDT的整体布局:[异常->空白->5系->硬](推荐采用7字口诀的方式重点记忆) 异常:前20个表项存放着各个异常的描述符(IDT表 ...

  6. 数据结构实验之链表二:逆序建立链表(SDUT 2117)

    题目链接 #include <bits/stdc++.h> using namespace std; struct node { int data; struct node *next; ...

  7. 基于CentOS 7下最小化安装的操作系统搭建Zabbix3.0环境

    环境说明 系统版本:CentOS Linux release 7.3.1611 (Core) 内核版本:3.10.0-514.el7.x86_64 Httpd版本:Apache/2.4.6 (Cent ...

  8. IDEA项目结构只剩下了pom,而代码都找不到了

    大体效果就是下面这个样子的, 只剩下一个pom文件了. 解决方式: 本来想彻底排查下的,但是最后发现 直接删除.idea文件, 重新引入项目,就可以解决,可能就是编译器发神经吧 下面是排查的过程,不过 ...

  9. 第11组 Alpha冲刺(2/6)

    第11组 Alpha冲刺(2/6)   队名 不知道叫什么团队 组长博客 https://www.cnblogs.com/xxylac/p/11860949.html 作业博客 https://edu ...

  10. LeetCode 84. 柱状图中最大的矩形(Largest Rectangle in Histogram)

    题目描述 给定 n 个非负整数,用来表示柱状图中各个柱子的高度.每个柱子彼此相邻,且宽度为 1 . 求在该柱状图中,能够勾勒出来的矩形的最大面积. 以上是柱状图的示例,其中每个柱子的宽度为 1,给定的 ...