k8s kubeadm 1.20.15 证书更新

本文介绍了如何获取kubeadm的版本信息,并展示了查看apiserver证书的方法。接着,详细说明了使用kubeadm进行证书更新的步骤,包括备份现有证书、执行更新命令及验证证书的有效性。通过这个过程,确保了Kubernetes集群的安全运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

获取kubeadm 版本号

kubeadm version

kubeadm version: &version.Info{Major:"1", Minor:"20", GitVersion:"v1.20.15", GitCommit:"8f1e5bf0b9729a899b8df86249b56e2c74aebc55", GitTreeState:"clean", BuildDate:"2022-01-19T17:26:37Z", GoVersion:"go1.15.15", Compiler:"gc", Platform:"linux/amd64"}

查看apiserver证书

cd /etc/kubernetes/pki && openssl x509 -in apiserver.crt -text -noout

Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 2741309662955592628 (0x260b169d47d05bb4)
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: CN=kubernetes
        Validity
            Not Before: Mar  8 12:25:05 2022 GMT
            Not After : Mar  8 12:25:05 2023 GMT

2022/3/8 到 2023/3/8 一年有效

更新证书: 找到安装的kubeadm-config.yaml文件

备份证书:cp -r /etc/kubernetes/pki/ /etc/kubernetes/pki.old

执行证书更新命令

kubeadm alpha certs renew all --config=/root/kubeadm-config.yaml

Command "all" is deprecated, please use the same command under "kubeadm certs"
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

再次查看证书

Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 8420588759439972080 (0x74dbf0dcce1116f0)
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: CN=kubernetes
        Validity
            Not Before: Mar  8 12:25:05 2022 GMT
            Not After : Mar 10 02:26:13 2023 GMT

证书失效日期为当前日加一年

### 安装 Kubernetes 1.20.15 on Ubuntu 22.04 #### 准备工作 为了确保顺利安装,需确认操作系统环境满足需求。对于Ubuntu 22.04 LTS系统而言,应先更新软件包列表并安装必要的工具。 ```bash sudo apt-get update && sudo apt-get install -y apt-transport-https ca-certificates curl gnupg lsb-release ``` #### 设置Kubernetes仓库 由于官方源可能在国内访问不稳定,建议配置阿里云镜像源来加速下载过程: ```bash echo "deb http://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list curl -fsSL https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | gpg --dearmor -o /usr/share/keyrings/kubernetes-archive-keyring.gpg ``` #### 安装特定版本的Docker CE作为容器运行时 考虑到兼容性和稳定性,推荐使用稳定版Docker引擎。注意调整docker.service文件中的ExecStart参数以支持cgroup驱动为systemd模式[^1]。 ```bash # 添加Docker APT仓库GPG密钥 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg # 设置稳定的Docker APT仓库 echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null # 更新APT缓存并安装指定版本的Docker Engine sudo apt-get update sudo apt-get install docker-ce=5:20.10.7~3-0~ubuntu-focal docker-ce-cli=5:20.10.7~3-0~ubuntu-focal containerd.io ``` #### 关闭Swap分区 关闭swap有助于提高集群性能和避免某些组件启动失败的问题。 ```bash sudo swapoff -a #临时关闭swap # 若要永久生效,则编辑/etc/fstab 文件注释掉swap条目 ``` #### 加载必要内核模块 为了让网络策略等功能正常运作,需要提前加载`overlay` 和 `br_netfilter`这两个内核模块。 ```bash cat <<EOF | sudo tee /etc/modules-load.d/containerd.conf overlay br_netfilter EOF sudo modprobe overlay sudo modprobe br_netfilter ``` #### 修改sysctl设置 通过修改/sys目录下的相应文件或利用`sysctl`命令可以实现对这些参数的一次性设定;而如果希望重启后仍然保持效果,则应该把它们加入到`/etc/sysctl.d/k8s.conf`中去。 ```bash cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 EOF sudo sysctl --system ``` #### 安装kubelet, kubeadm and kubectl 现在可以从之前配置好的APT库里面获取所需的二进制文件了。这里特别指定了想要安装的具体版本号即v1.20.15-00。 ```bash sudo apt-mark unhold kubelet kubeadm kubectl # 解除锁定以便于重新安装旧版本 sudo apt-get update sudo apt-get install -y kubelet=1.20.15-00 kubeadm=1.20.15-00 kubectl=1.20.15-00 sudo apt-mark hold kubelet kubeadm kubectl # 锁定当前已安装版本防止自动升级 ``` #### 初始化Master节点 完成上述准备工作之后就可以初始化第一个控制平面节点了。这一步会创建证书、etcd数据库以及apiserver等服务,并生成用于后续添加worker node 的token令牌。 ```bash sudo kubeadm init --pod-network-cidr=192.168.0.0/16 --kubernetes-version=v1.20.15 ``` #### 配置kubectl客户端认证信息 执行下面这条指令可以让普通用户无需root权限就能操作API Server。 ```bash mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config ``` #### 安装Pod Network Add-on (Calico) 最后部署一个合适的CNI插件是非常重要的,它负责管理整个集群内部各个POD之间的通信连接关系。此处选择了Tigera提供的开源项目Calico作为例子来进行说明。 ```bash kubectl apply -f https://docs.projectcalico.org/v3.20/manifests/calico.yaml ``` 此时已经成功搭建起了单机版Kubernetes集群环境,在此基础上还可以继续扩展更多Worker Node 或者尝试其他高级特性如负载均衡器LB、Ingress Controller等等[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

恒云客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值