首页 > 其他分享 >Kubernetes-etcd集群证书更新

Kubernetes-etcd集群证书更新

时间:2024-09-20 12:24:53浏览次数:1  
标签:key Kubernetes ssl -- pem 集群 etcd k8s

目录

问题现象

开发环境集群突然无法连接到apiserver,报错如下

排错思路

查看kubelet状态

从kubelet状态中可以看见无法连接6443端口

查看apiserver容器日志

可以看见提示About to store object in database(将要在数据库中存储对象)之后开始报错无法将对象或者在数据库获取对象,那么接下来需要查看etcd状态

查看etcd状态

果不其然可以看到etcd证书过期could not connect:x509:certificate has expired or is not yet valid

由于etcd证书过期导致apiserver无法存储到etcd数据库导致启动失败

查看证书到期时间

etcd集群证书更新

查看证书路径

systemctl cat   etcd

所有节点备份证书

cd /etc/etcd/ssl
mkdir	 /tmp/etcd_cert_backup
mv ./*  /tmp/etcd_cert_backup

所有节点备份etcd数据

停止Etcd操作
systemctl stop etcd

备份Etcd数据
cd /var/lib
tar -zvcf etcd.tar.gz etcd/

生成etcd集群配置文件

配置文件,在证书目录创建openssl.conf,最下面一行,如果是三台机器构建的Etcd集群,则三台ip都需要加上

[root@k8s-master1 ssl]# vi openssl.conf
[req]
req_extensions = v3_req
distinguished_name = req_distinguished_name

[req_distinguished_name]

[ v3_req ]
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names

[ ssl_client ]
extendedKeyUsage = clientAuth, serverAuth
basicConstraints = CA:FALSE
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid,issuer
subjectAltName = @alt_names

[ v3_ca ]
basicConstraints = CA:TRUE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names
authorityKeyIdentifier=keyid:always,issuer

[alt_names]
DNS.1 = localhost
DNS.2 = etcd.kube-system.svc.cluster.local
DNS.3 = etcd.kube-system.svc
DNS.4 = etcd.kube-system
DNS.5 = etcd
DNS.6 = lb.kubesphere.local
DNS.7 = k8s-master1
DNS.8 = k8s-master2
DNS.9 = k8s-master3
IP.1 = 127.0.0.1
IP.2 = 10.100.1.31
IP.3 = 10.100.1.32
IP.4 = 10.100.1.33

生成ca证书

openssl genrsa -out ca-key.pem 2048 > /	dev/null 2>&1
openssl req -x509 -new -nodes -key ca-key.pem -days 3650 -out ca.pem -subj "/CN=etcd-ca" > /dev/null 2>&1

生成etcd证书

for host in node1 node2 node3; do
  # Member key
  # 用于 etcd 节点之间的通信
  openssl genrsa -out member-${host}-key.pem 2048 > /dev/null 2>&1
  openssl req -new -key member-${host}-key.pem -out member-${host}.csr -subj "/CN=etcd-member-${host}" -config openssl.conf > /dev/null 2>&1
  openssl x509 -req -in member-${host}.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out member-${host}.pem -days 3650 -extensions ssl_client -extfile openssl.conf > /dev/null 2>&1

  # Admin key
  # 用于 etcd 集群的管理
  openssl genrsa -out admin-${host}-key.pem 2048 > /dev/null 2>&1
  openssl req -new -key admin-${host}-key.pem -out admin-${host}.csr -subj "/CN=etcd-admin-${host}" > /dev/null 2>&1
  openssl x509 -req -in admin-${host}.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out admin-${host}.pem -days 3650 -extensions ssl_client -extfile openssl.conf > /dev/null 2>&1

  # Node keys
  # 用于 etcd 节点与客户端之间的通信
  openssl genrsa -out node-${host}-key.pem 2048 > /dev/null 2>&1
  openssl req -new -key node-${host}-key.pem -out node-${host}.csr -subj "/CN=etcd-node-${host}" > /dev/null 2>&1
  openssl x509 -req -in node-${host}.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out node-${host}.pem -days 3650 -extensions ssl_client -extfile openssl.conf > /dev/null 2>&1

  # 将证书复制到每个节点
  scp -r /etc/etcd/ssl/* root@${host}:/etc/etcd/ssl/
done

查看新证书

openssl x509 -in ca.pem -noout -text | grep 'Not'
openssl x509 -in member-k8s-master1.pem -noout -text | grep 'Not'
openssl x509 -in admin-k8s-master1.pem -noout -text | grep 'Not'
openssl x509 -in node-k8s-master1.pem -noout -text | grep 'Not'

修改etcd启动配置文件

master1

Type=notify
WorkingDirectory=/var/lib/etcd/
ExecStart=/usr/local/bin/etcd \
  --name=k8s-master1 \
  --cert-file=/etc/etcd/ssl/member-k8s-master1.pem \
  --key-file=/etc/etcd/ssl/member-k8s-master1-key.pem \
  --peer-cert-file=/etc/etcd/ssl/member-k8s-master1.pem \
  --peer-key-file=/etc/etcd/ssl/member-k8s-master1-key.pem \
  --trusted-ca-file=/etc/etcd/ssl/ca.pem \
  --peer-trusted-ca-file=/etc/etcd/ssl/ca.pem \
  --initial-advertise-peer-urls=https://10.100.1.31:2380 \
  --listen-peer-urls=https://10.100.1.31:2380 \
  --listen-client-urls=https://10.100.1.31:2379,http://127.0.0.1:2379 \
  --advertise-client-urls=https://10.100.1.31:2379 \
  --initial-cluster-token=etcd-cluster-0 \
  --initial-cluster=k8s-master1=https://10.100.1.31:2380,k8s-master2=https://10.100.1.32:2380,k8s-master3=https://10.100.1.33:2380 \
  --initial-cluster-state=new \
  --data-dir=/var/lib/etcd

master2

Type=notify
WorkingDirectory=/var/lib/etcd/
ExecStart=/usr/local/bin/etcd \
  --name=k8s-master2 \
  --cert-file=/etc/etcd/ssl/member-k8s-master2.pem \
  --key-file=/etc/etcd/ssl/member-k8s-master2-key.pem \
  --peer-cert-file=/etc/etcd/ssl/member-k8s-master2.pem \
  --peer-key-file=/etc/etcd/ssl/member-k8s-master2-key.pem \
  --trusted-ca-file=/etc/etcd/ssl/ca.pem \
  --peer-trusted-ca-file=/etc/etcd/ssl/ca.pem \
  --initial-advertise-peer-urls=https://10.100.1.32:2380 \
  --listen-peer-urls=https://10.100.1.32:2380 \
  --listen-client-urls=https://10.100.1.32:2379,http://127.0.0.1:2379 \
  --advertise-client-urls=https://10.100.1.32:2379 \
  --initial-cluster-token=etcd-cluster-0 \
  --initial-cluster=k8s-master1=https://10.100.1.31:2380,k8s-master2=https://10.100.1.32:2380,k8s-master3=https://10.100.1.33:2380 \
  --initial-cluster-state=new \
  --data-dir=/var/lib/etcd

master3

Type=notify
WorkingDirectory=/var/lib/etcd/
ExecStart=/usr/local/bin/etcd \
  --name=k8s-master3 \
  --cert-file=/etc/etcd/ssl/member-k8s-master3.pem \
  --key-file=/etc/etcd/ssl/member-k8s-master3-key.pem \
  --peer-cert-file=/etc/etcd/ssl/member-k8s-master3.pem \
  --peer-key-file=/etc/etcd/ssl/member-k8s-master3-key.pem \
  --trusted-ca-file=/etc/etcd/ssl/ca.pem \
  --peer-trusted-ca-file=/etc/etcd/ssl/ca.pem \
  --initial-advertise-peer-urls=https://10.100.1.33:2380 \
  --listen-peer-urls=https://10.100.1.33:2380 \
  --listen-client-urls=https://10.100.1.33:2379,http://127.0.0.1:2379 \
  --advertise-client-urls=https://10.100.1.33:2379 \
  --initial-cluster-token=etcd-cluster-0 \
  --initial-cluster=k8s-master1=https://10.100.1.31:2380,k8s-master2=https://10.100.1.32:2380,k8s-master3=https://10.100.1.33:2380 \
  --initial-cluster-state=new \
  --data-dir=/var/lib/etcd

所有节点同时启动etcd

记住,要3个节点一起重启,不然会hang住

systemctl daemon-reload
systemctl restart etcd

标签:key,Kubernetes,ssl,--,pem,集群,etcd,k8s
From: https://www.cnblogs.com/Unstoppable9527/p/18422282

相关文章

  • 认知神经科学分析指标——图论指标之全局集群系数
    图论指标在认知神经科学或脑科学的研究中,通常作为研究脑网络表现的描述性指标之一,而图论指标从全局性来分可以分为:节点指标和全局指标,而根据描述脑网络整合性表现又可分为:整合指标和分离指标。该随笔主要涉及图论指标中全局指标及整合指标的全局集群系数,英文全称为GlobalCluster......
  • kube-vip搭建k8s1.30.5高可用集群
    实验环境机器五台系统:ubuntu24.04cat/etc/hosts192.168.0.11jichao11k8s-master01192.168.0.12jichao12k8s-master02192.168.0.13jichao13k8s-master03192.168.0.14jichao14k8s-worker01192.168.0.15jichao15k8s-worker02192.168.0.200lb.kub......
  • 南大通用GBase 8s 集群网络交互信息概述(上)
    在当今数据驱动的商业环境中,数据库的性能和可靠性是企业成功的关键。GBase8s作为一款的国产数据库系统,其SSC集群架构通过优化网络交互,显著提升了性能和可用性。本文将分两部分聚焦于GBase8sSSC集群的网络交互信息概述和网络吞吐量计算。在GBase 8sSSC集群中,主节点向从节点只传......
  • 南大通用GBase 8s 集群网络交互信息概述(下)
    在上篇文章中,我们了解了GBase8sSSC集群的网络交互机制。本文将聚焦于网络吞吐量的计算,分析SSC集群在不同业务场景下的表现,并与HAC和RHAC集群进行对比。一、无业务场景下的网络吞吐量在无业务时,网络上只有每秒发送的心跳包和心跳包的ACK,则网络吞吐量极低,具体为(114+86)/(1024*1024......
  • K8S入门学习(四):集群编排工具之 Dashboard
    一、Dashboard简单介绍1.1、Dashboard它是什么Dashboard是K8s集群管理的一个基于web的用户界面---WebUI,它提供了一个直观的方式来管理和监控K8s集群。Dashboard提供了对集群资源、应用程序部署和状态的实时查看和操作,使得用户能够更高效地管理和监控其K8s集。Dashboa......
  • 南大通用GBase 8s HAC集群搭建部署指南(下)
    在上篇文章中,我们完成了GBase8sHAC集群搭建的初步配置。本文将重点介绍如何配置主节点和辅节点之间的互信关系,以及如何搭建并验证HAC集群的状态。1、配置互信互信是集群节点间通信的基础。我们可以通过配置.rhosts文件或使用REMOTE_SERVER_CFG参数两种方式来实现互信。根据企业的......
  • 从零开始掌握 Kubernetes:Pod 和 Deployment 的幕后故事
     1.引言在如今的技术世界中,随着微服务架构的广泛应用和云原生理念的兴起,应用程序的开发、部署和管理发生了翻天覆地的变化。容器技术的出现使得开发者可以轻松地将应用及其所有依赖打包在一个轻量级、可移植的容器中,这种方式大大提升了应用的部署效率和一致性。然而,随着应......
  • GBase 8a数据库集群部署硬件环境需求
    GBase8aMPPCluster具有多样化的平台选择,可完全使用低成本的x86架构的PCServer;也支持云平台、虚拟机环境的部署。随着国产服务器、国产CPU的发展,也支持在申威、龙芯、兆芯、鲲鹏、飞腾等的国产服务器上部署。GBase8aMPPCluster支持64位计算机操作系统平台上,支......
  • 南大通用GBase 8s 高可用性集群搭建部署指南(上)
    在企业级应用中,数据库的稳定性和可用性是至关重要的。GBase8s作为一款高性能的国产数据库系统,提供了HAC(高可用性集群)功能,确保业务连续性和数据安全性。本篇将详细介绍如何在主节点和辅节点上安装并配置GBase8s,为搭建HAC集群打下坚实基础。1、安装GBase8s数据库首先,我们需要分别......
  • 南大通用GBase 8s 高可用集群搭建部署指南(下)
    在上篇文章中,我们完成了GBase8sHAC集群搭建的初步配置。本文将重点介绍如何配置主节点和辅节点之间的互信关系,以及如何搭建并验证HAC集群的状态。1、配置互信互信是集群节点间通信的基础。我们可以通过配置.rhosts文件或使用REMOTE_SERVER_CFG参数两种方式来实现互信。根据企业的......