k8s 证书过期解决
时间:2019-12-18
本文章向大家介绍k8s 证书过期解决,主要包括k8s 证书过期解决使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
下载kubernetest 源码
apt -get install git
git clone https://github.com/kubernetes/kubernetes.git,
切换分支
cd kubernetes && git checkout -b remotes/origin/release-1.13 v1.13.0
下载docker编译环境
https://hub.docker.com/r/gcrcontainer/kube-cross/tags?page=2 在dockerhub 下载相应的版本
docker pull gcrcontainer/kube-cross:v1.9.1-1
docker run --rm -v /root/kubernetes/:/go/src/k8s.io/kubernetes -it gcrcontainer/kube-cross:v1.9.1-1 bash
修改源码
vim /kubernetes/staging/src/k8s.io/client-go/util/cert/cert.go maxAge := time.Hour * 24 * 365 #修改前 NotAfter: time.Now().Add(duration365d).UTC() maxAge := time.Hour * 24 * 365 * 50 #修改后 给证书期限为50年 NotAfter: time.Now().Add(duration365d * 50).UTC()
编译
cd /go/src/k8s.io/kubernetes # 编译kubeadm, 这里主要编译kubeadm 即可 make all WHAT=cmd/kubeadm GOFLAGS=-v
拷贝编译的文件 cp ./_output/local/bin/linux/amd64/kubeadm
master
备份证书和配置文件
#!/usr/bin/env bash set -e sudo mv /etc/kubernetes/pki/apiserver.key /etc/kubernetes/pki/apiserver.key.old sudo mv /etc/kubernetes/pki/apiserver.crt /etc/kubernetes/pki/apiserver.crt.old sudo mv /etc/kubernetes/pki/apiserver-kubelet-client.crt /etc/kubernetes/pki/apiserver-kubelet-client.crt.old sudo mv /etc/kubernetes/pki/apiserver-kubelet-client.key /etc/kubernetes/pki/apiserver-kubelet-client.key.old sudo mv /etc/kubernetes/pki/front-proxy-client.crt /etc/kubernetes/pki/front-proxy-client.crt.old sudo mv /etc/kubernetes/pki/front-proxy-client.key /etc/kubernetes/pki/front-proxy-client.key.old sudo mv /etc/kubernetes/pki/front-proxy-ca.crt /etc/kubernetes/pki/front-proxy-ca.crt.old sudo mv /etc/kubernetes/pki/front-proxy-ca.key /etc/kubernetes/pki/front-proxy-ca.key.old sudo mv /etc/kubernetes/admin.conf /etc/kubernetes/admin.conf.old sudo mv /etc/kubernetes/kubelet.conf /etc/kubernetes/kubelet.conf.old sudo mv /etc/kubernetes/controller-manager.conf /etc/kubernetes/controller-manager.conf.old sudo mv /etc/kubernetes/scheduler.conf /etc/kubernetes/scheduler.conf.old
拷贝编译后的kubeadm
\cp kubeadm /usr/bin/
创建kubeadm-conf
.yaml 文件
cat > /tmp/kubeadm-conf.yaml <<EOF apiVersion: kubeadm.k8s.io/v1alpha1 kind: MasterConfiguration networking: podSubnet: 192.169.0.0/16 serviceSubnet: 10.96.0.0/12 #apiServerCertSANs: #- master01 #- master02 #- master03 #- 172.16.2.1 #- 172.16.2.2 #- 172.16.2.3 #- 172.16.2.100 #etcd: # endpoints: # - http://192.168.188.160:2379 # - http://192.168.188.161:2379 # - http://192.168.188.162:2379 #token: 2wt8ap.ev8cvrpuzt81zwm7 #tokenTTL: "0" kubernetesVersion: v1.11.5 #imageRepository: api: advertiseAddress: 192.168.188.160 kubeletConfiguration: baseConfig: evictionHard: imagefs.available: 6Gi memory.available: 512Mi nodefs.available: 3Gi EOF
sudo kubeadm alpha phase certs apiserver --config /tmp/kubeadm-conf.yaml sudo kubeadm alpha phase certs front-proxy-ca --config /tmp/kubeadm-conf.yaml sudo kubeadm alpha phase certs apiserver-kubelet-client --config /tmp/kubeadm-conf.yaml sudo kubeadm alpha phase certs front-proxy-client --config /tmp/kubeadm-conf.yaml sudo kubeadm alpha phase kubeconfig all --config /tmp/kubeadm-conf.yaml
sudo rm -rf $HOME/.kube mkdir -p mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
查看证书时间
openssl x509 -in /etc/kubernetes/pki/front-proxy-client.crt -noout -dates
追加部分:
为了不要每年都更新客户端证书可以在/etc/kubernetes/manifests/kube-controller-manager.yaml的26行左右添加下面内容(主要空格对其):
- --experimental-cluster-signing-duration=876000h0m0s
修改完成后,需要删除/var/lib/kubelet/pki/下的文件,重新启动kubelet服务就可以了
注意:如果为生成证书,请查看时间是否同步
创建永久token
kubeadm token create --ttl 0 rm -rf /var/lib/kubelet/pki/* sudo sed -i "s/56d5fi.18j8g4fgca4lf1a1/06cymx.d1vcolksn9uwthqz/g" /etc/kubernetes/bootstrap-kubelet.conf systemctl restart kubelet
node
删除/var/lib/kubelet/pki/下的所有文件
rm -rf /var/lib/kubelet/pki/*
替换/etc/kubernetes/bootstrap-kubelet.conf中的token(红色框的部分)为上面创建的token值
sudo sed -i "s/56d5fi.18j8g4fgca4lf1a1/06cymx.d1vcolksn9uwthqz/g" /etc/kubernetes/bootstrap-kubelet.conf
重启kubelet 服务,systemctl restart kubelet
检测是否成功,ls /var/lib/kubelet/pki/
https://www.cnblogs.com/skymyyang/p/11093686.html https://www.cnblogs.com/kuku0223/p/10509637.html https://hub.docker.com/r/gcrcontainer/kube-cross/tags?page=2
原文地址:https://www.cnblogs.com/hanwei666/p/12058978.html
- 网站代码优化我们必须要做的那些事
- 真是热闹! Slade.com等多个域名被曝交易
- python编码问题之"encode"&"decode"
- python3编码问题终结者--还搞不懂你来找我
- Pycharm集成PyQt4并使用
- python遍历一个目录,输出所有文件名
- pyqt4实现tab界面切换
- 腾讯云Fintech云端系列论坛首站北京,揭秘如何全链路赋能互联网金融
- Flask入门笔记(一)
- 刷脸还是指纹识别,that's a question
- c#:使用using关键字自动释放资源未必一定就会有明显好处
- MongoDB 学习笔记(原创)
- Silverlight:ScorllViewer随Tab键自动跟随子控件的Focus滚动
- 老域名做新站如何能快速得上首页?
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 急速 debug 实战二(浏览器 - 调试线上篇)
- via the 'serverTimezone' configuration property
- 急速 debug 实战一(浏览器-基础篇)
- MongoDB系列一: Replica Set 集群搭建实战
- 函数式编程看React Hooks(一)简单React Hooks实现
- 函数式编程看React Hooks(二)事件绑定副作用深度剖析
- Vue 开发必须知道的 36 个技巧【近1W字】
- 吃透 Vue 项目开发实践|16个方面深入前端工程化开发技巧《上》
- 【漫游Github】无编译/无服务器,实现浏览器的 CommonJS 模块化
- 《秋风日常第一期》白板协作工具 LeanBoard
- 《秋风日常第二期》一个快速找出待SEO图片的技巧
- 《模块化系列》snowpack,提高10倍打包速度。
- 《秋风日常第三期》11个前端开发者必备的网站
- 专为程序员定制的垃圾清理工具(Node Cli实现)
- CodePen vue SFC 、flutter 在线玩耍来袭