Kubeadm安装k8s集群升级100年证书时报错:Unable to connect to the server: EOF:求解决方法.
报错信息:
使用命令时:

Kubelet服务报错:

报错情况,在更新完k8s100年证书的时候,到最后重新启动kubelet服务的时候,服务是可以重新启动的,但是kubectl的命令是无法使用的,会等好长时间然后报出上面图片第一个的错误。还请各位大佬给出一些解决办法,实在是劳烦各位大佬了,自己找了好几天没有找到问题原因,万分感谢。
以下是更新证书的操作步骤,望大佬参考:
更新k8s证书100年步骤:
查看kubeadm版本:
[root@k8s-master01 ~]# kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"23", GitVersion:"v1.23.17", GitCommit:"953be8927218ec8067e1af2641e540238ffd7576", GitTreeState:"clean", BuildDate:"2023-02-22T13:33:14Z", GoVersion:"go1.19.6", Compiler:"gc", Platform:"linux/amd64"}
同步一下K8S仓库的地址:
[root@k8s-master01 ~]# git clone https://gitee.com/mirrors/kubernetes.git
Cloning into 'kubernetes'...
remote: Enumerating objects: 1427037, done.
remote: Counting objects: 100% (14341/14341), done.
remote: Compressing objects: 100% (8326/8326), done.
remote: Total 1427037 (delta 9201), reused 8548 (delta 5365), pack-reused 1412696
Receiving objects: 100% (1427037/1427037), 911.55 MiB | 16.42 MiB/s, done.
Resolving deltas: 100% (1039605/1039605), done.
Checking out files: 100% (23746/23746), done.
切换分支到自己的k8s版本:
[root@k8s-master01 kubernetes]# git checkout v1.23.17
Checking out files: 100% (17024/17024), done.
Note: checking out 'v1.23.17'. You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout. If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example: git checkout -b new_branch_name HEAD is now at 953be89... Release commit for Kubernetes v1.23.17
启动一个Golang环境的容器:
[root@k8s-master01 kubernetes]# docker run -ti --rm -v `pwd`:/go/src/ registry.cn-beijing.aliyuncs.com/dotbalo/golang:kubeadm bash
Unable to find image 'registry.cn-beijing.aliyuncs.com/dotbalo/golang:kubeadm' locally
kubeadm: Pulling from dotbalo/golang
f606d8928ed3: Pull complete
47db815c6a45: Pull complete
bf4849400000: Pull complete
a572f7a256d3: Pull complete
643043c84a42: Pull complete
4bbfdffcd51b: Pull complete
7bacd2cea1ca: Pull complete
4ca1c8393efa: Pull complete
Digest: sha256:af620e3fb7f2a8ee5e070c2f5608cc6e1600ec98c94d7dd25778a67f1a0b792a
Status: Downloaded newer image for registry.cn-beijing.aliyuncs.com/dotbalo/golang:kubeadm
进入到Golang的源码目录:
root@85165a2f7d91:/go# cd /go/src/
root@85165a2f7d91:/go/src#
构建代理:
root@85165a2f7d91:/go/src# go env -w GOPROXY=https://goproxy.cn,direct
root@85165a2f7d91:/go/src# go env -w GOSUMDB=off
过滤配置文件证书有效时间:
root@85165a2f7d91:/go/src# grep "365" cmd/kubeadm/app/constants/constants.go
CertificateValidity = time.Hour * 24 * 365
更改配置文件证书有效时间:
root@85165a2f7d91:/go/src# sed -i 's#365#365 * 100#g' cmd/kubeadm/app/constants/constants.go
查询一下是否更改:
root@85165a2f7d91:/go/src# grep "365" cmd/kubeadm/app/constants/constants.go
CertificateValidity = time.Hour * 24 * 365 * 100
创建文件夹,它编译完之后,会把二进制文件输出到文件夹内:
root@85165a2f7d91:/go/src# mkdir -p _output/
更改一下权限:
root@85165a2f7d91:/go/src# chmod 777 -R _output/
编译一下,时间可能较长,耐心等待:
root@85165a2f7d91:/go/src# make WHAT=cmd/kubeadm
查看一下编译的目录:
root@5592256d5bb3:/go/src# ls _output/bin/kubeadm
_output/bin/kubeadm
拷贝一下文件到./kubeadm下:
root@5592256d5bb3:/go/src# cp _output/bin/kubeadm ./kubeadm
执行到这里然后退出!!!
exit
拷贝一下我们的证书:
[root@k8s-master01 kubernetes]# cp kubeadm /opt/
这个使用要使用kubeadm去更新一下我们的证书:
[root@k8s-master01 kubernetes]# /opt/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'
[renew] Error reading configuration from the Cluster. Falling back to default configuration 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.
这里我们查看一下我们的kubeadm版本:
[root@k8s-master01 kubernetes]# /opt/kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"23+", GitVersion:"v1.23.17-dirty", GitCommit:"953be8927218ec8067e1af2641e540238ffd7576", GitTreeState:"dirty", BuildDate:"2023-03-30T11:19:36Z", GoVersion:"go1.19.2", Compiler:"gc", Platform:"linux/amd64"}
所有master节点上面检查是否更新了:
[root@k8s-master01 kubernetes]# 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'
[check-expiration] Error reading configuration from the Cluster. Falling back to default configuration CERTIFICATE EXPIRES RESIDUAL TIME CERTIFICATE AUTHORITY EXTERNALLY MANAGED
admin.conf Mar 06, 2123 13:46 UTC 99y ca no
apiserver Mar 06, 2123 13:46 UTC 99y ca no
apiserver-etcd-client Mar 06, 2123 13:46 UTC 99y etcd-ca no
apiserver-kubelet-client Mar 06, 2123 13:46 UTC 99y ca no
controller-manager.conf Mar 06, 2123 13:46 UTC 99y ca no
etcd-healthcheck-client Mar 06, 2123 13:46 UTC 99y etcd-ca no
etcd-peer Mar 06, 2123 13:46 UTC 99y etcd-ca no
etcd-server Mar 06, 2123 13:46 UTC 99y etcd-ca no
front-proxy-client Mar 06, 2123 13:46 UTC 99y front-proxy-ca no
scheduler.conf Mar 06, 2123 13:46 UTC 99y ca no CERTIFICATE AUTHORITY EXPIRES RESIDUAL TIME EXTERNALLY MANAGED
ca Mar 20, 2033 03:14 UTC 9y no
etcd-ca Mar 20, 2033 03:14 UTC 9y no
front-proxy-ca Mar 20, 2033 03:14 UTC 9y no
所有master节点重启kubelet:
[root@k8s-master01 kubernetes]# systemctl restart kubelet
到这里就报了上述错误,还望大佬给出解决办法,谢谢!
Kubeadm安装k8s集群升级100年证书时报错:Unable to connect to the server: EOF:求解决方法.的更多相关文章
- 使用kubeadm安装k8s集群故障处理三则
最近在作安装k8s集群,测试了几种方法,最终觉得用kubeadm应该最规范. 限于公司特别的网络情况,其安装比网上不能访问google的情况还要艰难. 慢慢积累经验吧. 今天遇到的三则故障记下来作参考 ...
- k8s学习笔记之二:使用kubeadm安装k8s集群
一.集群环境信息及安装前准备 部署前操作(集群内所有主机): .关闭防火墙,关闭selinux(生产环境按需关闭或打开) .同步服务器时间,选择公网ntpd服务器或者自建ntpd服务器 .关闭swap ...
- 使用 --image-repository 解决kubeadm 安装k8s 集群 谷歌镜像墙的问题
从网上我们看到的好多kubeadm 安装k8s 的时候都说需要下拉取镜像,然后修改,实际上 我们可以使用配置参数,快速的跳过墙的问题 说明: 基础镜像,我们仍然存在,拉取的问题,但是dockerhub ...
- centos7下用kubeadm安装k8s集群并使用ipvs做高可用方案
1.准备 1.1系统配置 在安装之前,需要先做如下准备.三台CentOS主机如下: 配置yum源(使用腾讯云的) 替换之前先备份旧配置 mv /etc/yum.repos.d/CentOS-Base. ...
- kubeadm安装k8s集群
安装kubeadm kubectl kubelet 对于Ubuntu/debian系统,添加阿里云k8s仓库key,非root用户需要加sudo apt-get update && a ...
- 使用kubeadm进行k8s集群升级
一.目标 操作系统:CentOS Linux release 7.6.1810 (Core) 安装软件: docker:18.06.3-ce 从v1.15.5升级到v1.16.15 当前版本: [ro ...
- Kubernetes全栈架构师(Kubeadm高可用安装k8s集群)--学习笔记
目录 k8s高可用架构解析 Kubeadm基本环境配置 Kubeadm系统及内核升级 Kubeadm基本组件安装 Kubeadm高可用组件安装 Kubeadm集群初始化 高可用Master及Token ...
- Kubernetes(K8s) 安装(使用kubeadm安装Kubernetes集群)
背景: 由于工作发生了一些变动,很长时间没有写博客了. 概述: 这篇文章是为了介绍使用kubeadm安装Kubernetes集群(可以用于生产级别).使用了Centos 7系统. 一.Centos7 ...
- kubernetes教程第一章-kubeadm高可用安装k8s集群
目录 Kubeadm高可用安装k8s集群 kubeadm高可用安装1.18基本说明 k8s高可用架构解析 kubeadm基本环境配置 kubeadm基本组件安装 kubeadm集群初始化 高可用Mas ...
- 6.K8s集群升级、etcd备份和恢复、资源对象及其yaml文件使用总结、常用维护命令
1.K8s集群升级 集群升级有一定的风险,需充分测试验证后实施 集群升级需要停止服务,可以采用逐个节点滚动升级的方式 1.1 准备新版本二进制文件 查看现在的版本 root@k8-master1:~# ...
随机推荐
- spring security添加接口白名单
在项目中遇到的问题是要将某个接口设为白名单,无需验证即可被用户使用. 解决方法: 在nacos配置文件中ignore whites(不校验白名单)中添加对应接口,无gateway前缀即可,添加立即生效 ...
- docker临时指定时区
如果制作镜像时,未配置时区,默认指向了 UTC ,可使用类似如下方式临时指向北京时间,或上海时间 docker exec -it --user=root gitlab-ce_12.2.4 ln -sf ...
- redis远程连接错误SocketTimeoutException: connect timed out
redis远程连接错误SocketTimeoutException: connect timed out 解决方案: 编辑redis.conf文件(建议将其 先备份 编辑备份文件 启动redis服务时 ...
- mysql可参考的查询
获取批量修改列为大写SQL脚本 1 SELECT 2 concat( 'alter table ', TABLE_NAME, ' change column ', COLUMN_NAME, ' ', ...
- javaheima14
Java 日志框架 日志框架的概述 记录程序运行过程中的信息,并可以进行永久存储 以前记录日志的方式--输出语句 弊端 信息只能展示在控制台 不能将其记录到其他位置(文件,数据库) 想取消记录的信息需 ...
- (五).JavaScript的函数
1. 函数 1.1 函数基础简介 函数介绍 函数:具有特定功能的代码块 本质:一种对象数据类型 功能:1. 代码复用 2. 项目模块化 函数组成(两者必须同时存在): 1. 函数定义 2. 函数调用 ...
- hadoopzookeeper
一.zookeeper是什么(概括)? Zookeeper是一个分布式协调服务的开源框架,为分布式程序提供协调服务,同时用来解决分布式集群中应用系统的数据一致性问题. zookeeper在本质上是一个 ...
- 深入理解Linux系统调用
1.系统调用号查询 我的学号位数是08,在64位调用表里可以查到对应的系统调用函数是__x64_sys_lseek 2.lseek函数 由于没用过该函数,所以先去了解一下这个函数的作用: 直白的说就是 ...
- 如何利用 C# + Echarts 绘制 Bar Simple
背景 Echarts 是百度推出的一个使用 JavaScript 实现的开源可视化库. 该库提供了常规的折线图.柱状图.散点图.饼图.K线图,用于统计的盒形图,用于地理数据可视化的地图.热力图.线图, ...
- eclipse微服务续,Hystrix+Gateway+Config配置管理中心+Bus动态刷新配置
Hystrix延迟和容错库 Gateway微服务网关 Config配置管理中心 Bus动态刷新配置 四.Hystrix延迟和容错库 SpringCloud默认已为Feign整合了hystrix,所以添 ...