kubespray续签k8s证书
查看证书过期时期
[root@node1 ~]# openssl x509 -in /etc/kubernetes/pki/apiserver.crt -noout -text |grep ' Not '
Not Before: Sep 4 08:29:00 2019 GMT
Not After : Sep 3 08:29:02 2020 GMT
备份etcd
[root@node1 etcd-backup]# export ETCDCTL_API=3
[root@node1 etcd-backup]# etcdctl snapshot save "/root/$(date +%Y%m%d_%H%M%S)_snapshot.db" --cacert=/etc/ssl/etcd/ssl/ca.pem --cert=/etc/ssl/etcd/ssl/node-node1.pem --key=/etc/ssl/etcd/ssl/node-node1-key.pem --endpoints=https://192.168.10.132:2379
Snapshot saved at /root/20200814_142210_snapshot.db
master1备份证书
cp -ar /etc/kubernetes{,.bak}
Kubespray部署的k8s会生成以下证书
K8s组件之间认证需要的证书
ca.crt ca.key
apiserver.crt apiserver.key
apiserver-kubelet-client.crt apiserver-kubelet-client.key
front-proxy-ca.crt front-proxy-ca.key front-proxy-client.crt front-proxy-client.key
sa.key sa.pub
Etcd认证的证书
ca.pem ca-key.pem
admin-node*.pem admin-node*-key.pem
member-node*.pem member-node*-key.pem
node-node*.pem node-node*-key.pem
ca.crt默认是10年,apiserver.crt apiserver-kubelet-client.crt默认一年,front-proxy-ca.crt是独立的ca证书,默认是10年, front-proxy-client.crt默认1年。Etcd的证书默认是100年
我们只需要更新apiserver.crt apiserver-kubelet-client.crt front-proxy-client即可
Master1节点重新生成证书,并同步证书至其他master节点
kubeadm alpha certs renew apiserver --config "/etc/kubernetes/kubeadm-config.yaml"
kubeadm alpha certs renew apiserver-kubelet-client --config "/etc/kubernetes/kubeadm-config.yaml"
kubeadm alpha certs renew front-proxy-client --config "/etc/kubernetes/kubeadm-config.yaml"
删除所有主机组件之间认证的kubeconfig
Kubeconfig是k8s其他组件与apiserver通信的认证密钥,apiserver证书更新了,这些密钥文件都需要更新。
ansible -i /tools/kubespray/inventory/inventory.cfg all -m shell -a "cd /etc/kubernetes && rm -rf admin.conf scheduler.conf controller-manager.conf kubelet.conf bootstrap-kubelet.conf"
Master节点分别再次生成kubeconfig(所有master节点都需要执行)
kubeadm init phase kubeconfig all --config "/etc/kubernetes/kubeadm-config.yaml"
安装有kubectl的节点覆盖config
\cp /etc/kubernetes/admin.conf /root/.kube/config
master1节点重启k8s相关组件
docker ps |grep apiserver|grep -v pause|awk '{print $1}'|xargs docker kill -s HUP
docker ps |grep kube-scheduler|grep -v pause|awk '{print $1}'|xargs docker kill -s HUP
docker ps |grep kube-controller|grep -v pause|awk '{print $1}'|xargs docker kill -s HUP
systemctl restart kubelet
拷贝master1的证书到master2上
scp -r /etc/kubernetes/ssl root@192.168.10.133:/etc/kubernetes/
master2上删除旧配置
cd /etc/kubernetes && rm -rf admin.conf scheduler.conf controller-manager.conf kubelet.conf bootstrap-kubelet.conf
重新生成新配置
kubeadm init phase kubeconfig all --config "/etc/kubernetes/kubeadm-config.yaml"
master2节点重启k8s相关组件
docker ps |grep apiserver|grep -v pause|awk '{print $1}'|xargs docker kill -s HUP
docker ps |grep kube-scheduler|grep -v pause|awk '{print $1}'|xargs docker kill -s HUP
docker ps |grep kube-controller|grep -v pause|awk '{print $1}'|xargs docker kill -s HUP
systemctl restart kubelet
查看节点状态
kubectl get node
worker node节点无需操作,证书会通过kubelet自动更新,各节点执行以下命令验证续签是否生效:
# Cert from api-server
echo -n | openssl s_client -connect localhost:6443 2>&1 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' | openssl x509 -text -noout | grep Not
# Cert from controller manager
echo -n | openssl s_client -connect localhost:10257 2>&1 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' | openssl x509 -text -noout | grep Not
# Cert from scheduler
echo -n | openssl s_client -connect localhost:10259 2>&1 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' | openssl x509 -text -noout | grep Not
kubespray续签k8s证书的更多相关文章
- k8s 证书反解
k8s证书反解 1.将k8s配置文件(kubelet.kubeconfig)中client-certificate-data:内容拷贝 2.echo "client-certificate- ...
- 关于K8S证书生成方面的脚本草稿
周日在家里计划的. 俺不加班,但在家学习的时间一样没少! 还没弄完,只粗粗弄了etcd证书. #! /usr/bin/env bash set -e set -u set -x THIS_HOST=$ ...
- k8s 证书之ca-csr.json,ca-config.json
这是后面生成的所有证书的基础. 但如果是公司内使用,使用基于这些证书生成的ca, 在保证安全性的情况下,可以更方便的部署. ca-csr.json { "CN": "ku ...
- k8s 证书更新操作
kubernetes证书更新 版本:1.14.2,以下操作在3台master节点上操作 1.各个证书过期时间 /etc/kubernetes/pki/apiserver.crt #1年有效期 /etc ...
- k8s证书之etcd,api,front-proxy配置文件
这几个文件,是要结合前面的master安装脚本的. 所以有的json文件中会出现一些LOCAL_HOSTS_L,THIS_HOST之类的变量. 如果手工单独使用这些文件,要将这些变量替换为合适的IP或 ...
- kubespray部署k8s
0.把外网的/usr/local/bin/*拷过来覆盖 1.把部署好的集群的 calicoctl cni-plugins-linux-amd64-v0.8.1.tgz kubeadm-v1.16.3- ...
- K8S-kubeadm-集群证书续签
ETCD证书 自签证书颁发机构(CA) ca.crt ca.key etcd集群中相互通信事业的客户端证书 peer.crt peer.key pod中定义Liveness探针事业的客户端证书 hea ...
- k8s采坑记 - 解决二进制安装环境下证书过期问题
前言 上一篇k8s采坑记 - 证书过期之kubeadm重新生成证书阐述了如何使用kubeadm解决k8s证书过期问题. 本篇阐述使用二进制安装的kubernetes环境,如何升级过期证书? k8s配置 ...
- 一键安装基于dns的高可用k8s集群(3节点,etcd https)
在公司,使用dns切换,可能会比keepalived+haproxy,更精简的易维护. 毕竟,高可用只是偶尔切换,不是时时切换. 且dns解析在自己可控时,更不会影响k8s线上使用了. (部分代码,由 ...
随机推荐
- JAVA 判断一个字符串是否是合法的日期格式?
采用SimpleDateFormat类的parse方法进行判断,如果转换不成功,就会出现异常.另外,还需要判断字符串的长度,若不判断,第二个字符串就会验证通过,实际上也不是合法的.话不多说,且看代码: ...
- python爬虫模拟登录验证码解决方案
[前言]几天研究验证码解决方案有三种吧.第一.手工输入,即保存图片后然后我们手工输入:第二.使用cookie,必须输入密码一次,获取cookie:第三.图像处理+深度学习方案,研究生也做相关课题,就用 ...
- 【转载】Java泛型详解
[转载]http://www.importnew.com/24029.html 对java的泛型特性的了解仅限于表面的浅浅一层,直到在学习设计模式时发现有不了解的用法,才想起详细的记录一下. 本文参考 ...
- 40. 组合总和 II + 递归 + 回溯 + 记录路径
40. 组合总和 II LeetCode_40 题目描述 题解分析 此题和 39. 组合总和 + 递归 + 回溯 + 存储路径很像,只不过题目修改了一下. 题解的关键是首先将候选数组进行排序,然后记录 ...
- HDOJ-3001(TSP+三进制状态压缩)
Traving HDOJ-3001 这题考察的是状态压缩dp和tsp问题的改编 需要和传统tsp问题区分的事,这题每个点最多可以经过两次故状态有3种:0,1,2 这里可以模仿tsp问题的二进制压缩方法 ...
- C#中事件流程的简单理解
C#中事件流程的简单理解 C#中事件基于委托,要理解事件要先理解委托,但是现在我还没想好怎么写委托,如果不懂委托可以先找找委托的文章 事件基于委托,为委托提供了一种发布/订阅机制 一上来就是这句话,很 ...
- Chrome OS超便捷安装指南
Chrome OS是一款Google开发的基于PC的操作系统. Google Chrome OS是一款基于Linux的开源操作系统.Google在自己的官方博客表示,初期,这一操作系统将定位于上网本. ...
- CloudQuery v1.3.4 版本更新
Hello,大家好久不见! 上一个版本(v1.3.3)发布已是春节前的事情了,此次 v1.3.4 是 CloudQuery 社区版在辛丑牛年的第一个版本发布.本次更新增加了新功能,优化了原有功能点.同 ...
- Spring MVC获取请求参数的其中两张方式
1 @RequestParam 从请求地址获取参数 例如 username=xxxx 2 @PathVariable 从请求路径获取参数 例如 /req/{123}
- webpack4.x 从零开始配置vue 项目(一)基础搭建项目
序 现在依旧记得第一次看到webpack3.x 版本配置时候的状态 刚开始看到这些真的是一脸懵.希望这篇文章能帮到刚开始入门的同学. webpack 是什么? webpack是一个模块化打包工具,w ...