首页 > 其他分享 >使用 kubeadm 进行证书管理

使用 kubeadm 进行证书管理

时间:2024-01-30 14:22:25浏览次数:31  
标签:UTC k8s 管理 ca 证书 no etcd kubeadm kube

使用 kubeadm 进行证书管理

1 检查证书是否过期

你可以使用 check-expiration 子命令来检查证书何时过期

kubeadm certs check-expiration

输出类似于以下内容:

[root@k8s-master /]# kubeadm certs check-expiration
[check-expiration] Reading configuration from the cluster...
[check-expiration] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -o yaml'

CERTIFICATE                EXPIRES                  RESIDUAL TIME   CERTIFICATE AUTHORITY   EXTERNALLY MANAGED
admin.conf                 Oct 17, 2024 07:40 UTC   261d            ca                      no      
apiserver                  Oct 17, 2024 07:40 UTC   261d            ca                      no      
apiserver-etcd-client      Oct 17, 2024 07:40 UTC   261d            etcd-ca                 no      
apiserver-kubelet-client   Oct 17, 2024 07:40 UTC   261d            ca                      no      
controller-manager.conf    Oct 17, 2024 07:40 UTC   261d            ca                      no      
etcd-healthcheck-client    Oct 17, 2024 07:40 UTC   261d            etcd-ca                 no      
etcd-peer                  Oct 17, 2024 07:40 UTC   261d            etcd-ca                 no      
etcd-server                Oct 17, 2024 07:40 UTC   261d            etcd-ca                 no      
front-proxy-client         Oct 17, 2024 07:40 UTC   261d            front-proxy-ca          no      
scheduler.conf             Oct 17, 2024 07:40 UTC   261d            ca                      no      

CERTIFICATE AUTHORITY   EXPIRES                  RESIDUAL TIME   EXTERNALLY MANAGED
ca                      Oct 15, 2033 07:40 UTC   9y              no      
etcd-ca                 Oct 15, 2033 07:40 UTC   9y              no      
front-proxy-ca          Oct 15, 2033 07:40 UTC   9y              no 

该命令显示 /etc/kubernetes/pki 文件夹中的客户端证书以及 kubeadm(admin.confcontroller-manager.confscheduler.conf) 使用的 KUBECONFIG 文件中嵌入的客户端证书的到期时间/剩余时间。

另外,kubeadm 会通知用户证书是否由外部管理; 在这种情况下,用户应该小心的手动/使用其他工具来管理证书更新。

警告: kubeadm 不能管理由外部 CA 签名的证书

2 自动更新证书

kubeadm 会在控制面 升级 的时候更新所有证书。

这个功能旨在解决最简单的用例;如果你对此类证书的更新没有特殊要求, 并且定期执行 Kubernetes 版本升级(每次升级之间的间隔时间少于 1 年), 则 kubeadm 将确保你的集群保持最新状态并保持合理的安全性。

3 手动更新证书

你能随时通过 kubeadm certs renew 命令手动更新你的证书。

此命令用 CA(或者 front-proxy-CA )证书和存储在 /etc/kubernetes/pki 中的密钥执行更新。

执行完此命令之后你需要重启控制面 Pods。因为动态证书重载目前还不被所有组件和证书支持,所有这项操作是必须的。 静态 Pods 是被本地 kubelet 而不是 API Server 管理, 所以 kubectl 不能用来删除或重启他们。 要重启静态 Pod 你可以临时将清单文件从 /etc/kubernetes/manifests/ 移除并等待 20 秒 (参考 KubeletConfiguration 结构 中的fileCheckFrequency 值)。 如果 Pod 不在清单目录里,kubelet 将会终止它。 在另一个 fileCheckFrequency 周期之后你可以将文件移回去,为了组件可以完成 kubelet 将重新创建 Pod 和证书更新。

警告: 如果你运行了一个 HA 集群,这个命令需要在所有控制面板节点上执行。

说明: certs renew 使用现有的证书作为属性(Common Name、Organization、SAN 等)的权威来源, 而不是 kubeadm-config ConfigMap。强烈建议使它们保持同步。

4 测试

执行下面的命令

kubeadm certs renew all

命令输出是:

[root@k8s-master /]# kubeadm certs renew all
[renew] Reading configuration from the cluster...
[renew] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -o yaml'

certificate embedded in the kubeconfig file for the admin to use and for kubeadm itself renewed
certificate for serving the Kubernetes API renewed
certificate the apiserver uses to access etcd renewed
certificate for the API server to connect to kubelet renewed
certificate embedded in the kubeconfig file for the controller manager to use renewed
certificate for liveness probes to healthcheck etcd renewed
certificate for etcd nodes to communicate with each other renewed
certificate for serving etcd renewed
certificate for the front proxy client renewed
certificate embedded in the kubeconfig file for the scheduler manager to use renewed

Done renewing certificates. You must restart the kube-apiserver, kube-controller-manager, kube-scheduler and etcd, so that they can use the new certificates.
[root@k8s-master /]# kubeadm certs check-expiration
[check-expiration] Reading configuration from the cluster...
[check-expiration] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -o yaml'

CERTIFICATE                EXPIRES                  RESIDUAL TIME   CERTIFICATE AUTHORITY   EXTERNALLY MANAGED
admin.conf                 Jan 29, 2025 06:00 UTC   364d            ca                      no      
apiserver                  Jan 29, 2025 06:00 UTC   364d            ca                      no      
apiserver-etcd-client      Jan 29, 2025 06:00 UTC   364d            etcd-ca                 no      
apiserver-kubelet-client   Jan 29, 2025 06:00 UTC   364d            ca                      no      
controller-manager.conf    Jan 29, 2025 06:00 UTC   364d            ca                      no      
etcd-healthcheck-client    Jan 29, 2025 06:00 UTC   364d            etcd-ca                 no      
etcd-peer                  Jan 29, 2025 06:00 UTC   364d            etcd-ca                 no      
etcd-server                Jan 29, 2025 06:00 UTC   364d            etcd-ca                 no      
front-proxy-client         Jan 29, 2025 06:00 UTC   364d            front-proxy-ca          no      
scheduler.conf             Jan 29, 2025 06:00 UTC   364d            ca                      no      

CERTIFICATE AUTHORITY   EXPIRES                  RESIDUAL TIME   EXTERNALLY MANAGED
ca                      Oct 15, 2033 07:40 UTC   9y              no      
etcd-ca                 Oct 15, 2033 07:40 UTC   9y              no      
front-proxy-ca          Oct 15, 2033 07:40 UTC   9y              no  

重启 kube-apiserver, kube-controller-manager, kube-scheduler and etcd

#进入控制面pod配置文件目录
[root@k8s-master secret]# cd /etc/kubernetes/manifests/
[root@k8s-master manifests]# ls
etcd.yaml  kube-apiserver.yaml  kube-controller-manager.yaml  kube-scheduler.yaml

# 显示控制面pod
[root@k8s-master manifests]# kubectl get po --all-namespaces -l tier=control-plane
NAMESPACE     NAME                                 READY   STATUS    RESTARTS          AGE
kube-system   etcd-k8s-master                      1/1     Running   66 (4h12m ago)    103d
kube-system   kube-apiserver-k8s-master            1/1     Running   72 (22h ago)      103d
kube-system   kube-controller-manager-k8s-master   1/1     Running   122 (4h12m ago)   103d
kube-system   kube-scheduler-k8s-master            1/1     Running   129 (4h12m ago)   103d

# 把配置文件移除
[root@k8s-master manifests]# mv * ../backup/
[root@k8s-master manifests]# ls
[root@k8s-master manifests]# 

# 检查控制面pod
[root@k8s-master manifests]# kubectl get po --all-namespaces -l tier=control-plane
The connection to the server 10.0.0.150:6443 was refused - did you specify the right host or port?

# 把配置文件恢复原位
[root@k8s-master manifests]# cd ../backup/
[root@k8s-master backup]# ls
etcd.yaml  kube-apiserver.yaml  kube-controller-manager.yaml  kube-scheduler.yaml
[root@k8s-master backup]# cp * ../manifests/

# 检查控制面pod
[root@k8s-master backup]# kubectl get po --all-namespaces -l tier=control-plane
NAMESPACE     NAME                                 READY   STATUS    RESTARTS   AGE
kube-system   etcd-k8s-master                      1/1     Running   0          103d
kube-system   kube-apiserver-k8s-master            1/1     Running   0          103d
kube-system   kube-controller-manager-k8s-master   1/1     Running   0          103d
kube-system   kube-scheduler-k8s-master            1/1     Running   0          103d

# 检查业务

说明一下:

重启控制面pod这个操作,对正在运行的负载和服务是没有影响的,可以Online进行的。但是,在控制面的pod启动前不能对集群做管理

标签:UTC,k8s,管理,ca,证书,no,etcd,kubeadm,kube
From: https://www.cnblogs.com/goldtree358/p/17997002

相关文章

  • 预定管理
    controllerpackagecom.rome.hotel.data.controller;importjava.util.Calendar;importjava.util.Date;importjava.util.GregorianCalendar;importjava.util.List;importjavax.servlet.http.HttpServletResponse;importio.jsonwebtoken.lang.Assert;importor......
  • VMware Aria Automation Config 8.16 - Aria Automation 的软件配置管理与安全性
    VMwareAriaAutomationConfig8.16-AriaAutomation的软件配置管理与安全性请访问原文链接:https://sysin.org/blog/vmware-aria-automation-config/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgAriaAutomation的软件配置管理与安全性AriaAutomationConfi......
  • 精细化客户管理,企业需要做到这些事情
    如何做好客户精细化管理?对于企业来说,不止要做到客户拉新,同时,也要做到让新客户变成老客户,让客户多次高频次购买。否则客户如果只是来购买一次,客户回购率低,长期以往,那企业的生存资本,将会逐渐缩小,直至耗完,消失在历史的尘埃中。那么企业要如何做到客户精细化管理?想要做到客户精细......
  • 什么是客户关系管理系统?为什么企业需要它?
    客户关系管理的目的是什么?客户关系管理(CRM)使企业能够降低成本并增加利润。CRM系统用于组织、自动化和跟踪业务流程,例如潜在客户生成、营销、预测、销售、投资回报率测量和客户服务。因此,CRM系统的目的是促进这些领域的整合,并衡量和跟踪客户关系的价值,最终目标是提高盈利能力和......
  • CRM管理系统选型技巧,企业如何通过CRM获利?
    随着数据时代的发展和企业业务的不断扩大,数据的比例开始增加,传统的数据计算方法不再适合现代企业。客户管理已成为企业最重要的组成部分之一,越来越多的企业开始关注客户管理。在crm管理系统上,企业希望通过crm管理系统,为企业经营带来更直观的效益!选择一个crm管理系统不是一件简单......
  • 打造高效经营:开发连锁餐饮管理系统的技术深度解析
    为了适应市场的快速发展和提高经营效率,许多连锁餐饮企业纷纷投入开发连锁餐饮管理系统。 一、数字化转型的动力传统的餐饮经营面临着诸多挑战,如订单管理、库存控制、人力资源等问题。在这样的背景下,连锁餐饮企业迫切需要一种全面而高效的解决方案,以提升业务水平、降低成本。开发连......
  • 组织机构管理页面,使用左树右表,还是树形表格进行展示更加合理?给出最佳实践
    在组织机构管理页面的设计中,左树右表和树形表格都是用来展示具有层级结构数据的有效方式。选择哪种布局取决于具体的使用场景、交互需求和用户体验目标。以下是对两种方式的分析以及最佳实践:左树右表优点:结构清晰:左侧树用于展现层级关系,右侧表格详细展示选中节点下的成员信......
  • nvm管理node
    -//nvm用来管理node版本//下载地址https://github.com/coreybutler/nvm-windows/releases//下载nvm-setup.exe//常用命令//nvmlistavailable显示所有可以下载的nodejs版本//nvmlist显示已安装的版本//nvminstall18.12.1安装18.12.1的nodejs//nvmins......
  • windows 宝塔本地部署ssl证书
    1、使用 mkcert-v1.4.4-windows-amd64.exe参考《https本地自签名证书添加到信任证书访问》1#进入到mkcert-v1.4.4-windows-amd64.exe下载文件位置2#执行命令3./mkcert-v1.4.4-windows-amd64.exe*.game.localaiPlatform.devlocalhost127.0.......
  • 网络管理 SNMP Qos
    一、网络管理基础网络管理五大功能:故障管理、配置管理、计费管理、性能管理、安全管理;关键词:安配能计障。故障管理的目的:尽快发现故障,找出故障原因,以便采取补救措施。网管系统中代理与监视器两种通信方式:轮询和事件报告。 二、网络管理系统的组成网络管理......