《Kubernets证书篇:基于Kylin V10+ARM架构CPU修改K8S 1.26.15版本证书时间限制》

一、背景

Kubernetes 默认的证书有效期只有1年,因此需要每年手动更新一次节点上面的证书,特别麻烦而且更新过程中可能会出现问题,因此我们要对 Kubernetes 的 SSL 证书有效期进行修改,这里将证书的时间限制修改为100年。

环境信息如下:

K8S版本 系统版本 CPU架构 内核版本
1.26.15 Kylin Linux Advanced Server V10 aarch64 4.19.90-17.5.ky10.aarch64

二、查看证书有效期

bash 复制代码
[root@k8s-master-42 ~]# kubeadm certs check-expiration

如下图所示:

由上图可见,除了ca根证书,其他证书有效期都是1年。


三、go环境部署

由下图可见,需要安装go1.21.8版本。


操作步骤如下:

bash 复制代码
# 1、安装go语言
[root@k8s-master-42 ~]# wget https://studygolang.com/dl/golang/go1.21.8.linux-arm64.tar.gz
[root@k8s-master-42 ~]# tar axf go1.21.8.linux-arm64.tar.gz -C /usr/local/
# 2、配置环境变量
[root@k8s-master-42 ~]# echo "export PATH=$PATH:/usr/local/go/bin" >> /etc/profile
# 3、环境变量生效命令
[root@k8s-master-42 ~]# source /etc/profile

四、下载K8S源码

bash 复制代码
[root@k8s-master-42 ~]# mkdir -p /data/k8s-src && cd /data/k8s-src
[root@k8s-master-42 k8s-src]# wget https://github.com/kubernetes/kubernetes/archive/refs/tags/v1.26.15.zip
[root@k8s-master-42 k8s-src]# unzip v1.26.15.zip

五、修改Kubeadm源码包更新证书策略

1、修改 NewSelfSignedCACert 方法的 NotAfter 为(100年): now.Add(duration365d * 100).UTC()

bash 复制代码
[root@k8s-master-42 ~]# cd kubernetes-1.26.15
[root@k8s-master-42 kubernetes-1.26.15]# vim ./staging/src/k8s.io/client-go/util/cert/cert.go
                NotAfter:              now.Add(duration365d * 10).UTC(),

如下图所示:

2、修改 CertificateValidity 为: time.Hour * 24 * 365 * 100

bash 复制代码
[root@k8s-master-42 kubernetes-1.26.15]# vim ./cmd/kubeadm/app/constants/constants.go
         CertificateValidity = time.Hour * 24 * 365 * 100

如下图所示:

3、执行编译

bash 复制代码
[root@k8s-master-42 kubernetes-1.26.15]# make clean && KUBE_BUILD_PLATFORMS=linux/arm64 make all DBG=1 WHAT=cmd/kubeadm

如下图所示:

4、原证书备份

bash 复制代码
[root@k8s-master-42 kubernetes-1.26.15]# cp -arp /etc/kubernetes /etc/kubernetes_`date +%F`
[root@k8s-master-42 kubernetes-1.26.15]# mv /usr/bin/kubeadm /usr/bin/kubeadm_`date +%F`
[root@k8s-master-42 kubernetes-1.26.15]# cp -a _output/bin/kubeadm /usr/bin

5、证书更新

bash 复制代码
[root@k8s-master-42 kubernetes-1.26.15]# kubeadm certs renew all 
[root@k8s-master-42 kubernetes-1.26.15]# crictl pods --namespace kube-system --name 'kube-scheduler-*|kube-controller-manager-*|kube-apiserver-*|etcd-*' -q | /usr/bin/xargs crictl rmp -f
[root@k8s-master-42 kubernetes-1.26.15]# kubeadm certs check-expiration

如下图所示:


总结:整理不易,如果对你有帮助,可否点赞关注一下?

更多详细内容请参考:企业级K8s集群运维实战

相关推荐
运维大师18 小时前
【K8S 运维实战】37-金融企业多集群落地
运维·金融·kubernetes
凌虚(失业了求个工作)20 小时前
Kubernetes 编年史:从 Borg 到云原生操作系统
云原生·容器·kubernetes
SLD_Allen20 小时前
从Cloud Native到AI Native:K8s DRA与Agent协议栈
人工智能·云原生·kubernetes·cloud native·ai native
冰封之寂20 小时前
Kubernetes Pod 管理完全指南:从基础命令到高级调度
云原生·容器·kubernetes
ZzzZZzzzZZZzzzz…20 小时前
K8s实战: 用OpenELB破解Service外部访问难题
云原生·容器·kubernetes
风曦Kisaki1 天前
Kubernetes(K8s)笔记Day06: 持久化存储(emptyDir,hostPath,NFS),PV 和 PVC,StorageClass存储类
linux·运维·笔记·云原生·容器·kubernetes
Crazy________1 天前
k8s部署若依微服务架构流程,v3.6.6
运维·云原生·容器·kubernetes·状态模式
xiaoxiangsiyan2 天前
GitLab CI/CD 自托管(EE 企业版)+ Kubernetes Runner 集群 + ArgoCD(GitOps 部署)
运维·网络·ci/cd·容器·kubernetes·gitlab·argocd
PC2005-cloud2 天前
KubeSphere 安装到插件管理实战:本地 K8s 搭建可视化容器平台
云原生·容器·kubernetes
沉迷学习 日益消瘦2 天前
19-集群升级与维护
kubernetes