使用kubeadm安装K8s-1.5版本证书到期

【问题】
生产环境使用k8s-1.5版本并且使用kubeadm直接安装后,出现证书一年到期,整个集群无法使用的情况。
【解决方案】
生产新的证书替换就的证书
【解决方法与步骤】
1、从github上获取相应版本的k8s源码;
2、修改源码使生成证书的有效期为100年(自己定义);
3、Linux测试服务器上搭建go编译环境,go版本必须是1.9版本;
4、单独只编译kubeadm组件;
5、Linux服务器模拟部署过期环境集群,使用编译好的kubeadm init生成证书;
6、将新生产的证书替换到过期环境master节点下的/etc/kubenetes目录下;
7、将master节点/etc/kubenetes下的kubelet.conf文件拷贝到全部node节点/etc/kubenetes下
8,删除重新全部的sever account服务(default、flannel),重新生成kube-system下的pod
【详细步骤】
1、下载源码
https://codeload.github.com/kubernetes/kubernetes/tar.gz/v1.5.1
2、上传到到测试服务器上并解压
# tar -zxvf XXX.tar.gz -C /root
3、安装go环境
3.1 https://golang.org/dl/
下载最新安装包go1.9.2.Linux-amd64.tar.gz
3.2 解压
# tar -zxvf XX.tar.gz -C /usr/lib
3.3 配置环境变量
# echo “export GOROOT=/usr/lib/golang” >> /etc/profile
# echo “export PATH= P A T H : PATH: PATH:GOROOT/bin” >> /etc/profile
# source /etc/profile
3.4 配置k8s编辑目录
# mkdir -p /usr/lib/golang/src/k8s.io
# cd /usr/lib/golang/src/
# ln -s /root/kubernetes k8s.io/
3.5 修改源码
# cd /usr/lib/golang/src/k8s.io/kubernetes/pkg/util/cert
# vim cert.go
修改函数列表
NewSelfSignedCACert
NewSignedCert
GenerateSelfSignedCertKey
分别将上面证书时间修改为100年

func NewSelfSignedCACert(cfg Config, key *rsa.PrivateKey) (*x509.Certificate, error) {
	now := time.Now()
	tmpl := x509.Certificate{
		SerialNumber: new(big.Int).SetInt64(0),
		Subject: pkix.Name{
			CommonName:   cfg.CommonName,
			Organization: cfg.Organization,
		},
		NotBefore:             now.UTC(),
		NotAfter:              now.Add(duration365d * 100).UTC(),
		KeyUsage:              x509.KeyUsageKeyEncipherment | x509.KeyUsageDigitalSignature | x509.KeyUsageCertSign,
		BasicConstraintsValid: true,
		IsCA: true,
	}

	certDERBytes, err := x509.CreateCertificate(cryptorand.Reader, &tmpl, &tmpl, key.Public(), key)
	if err != nil {
		return nil, err
	}
	return x509.ParseCertificate(certDERBytes)
}

4、编译kubeadm
# cd /usr/lib/golang/src/k8s.io/kubernetes/cmd/kubeadm
# go build
生成新的kubeadm二进制文件
将编译好的kubeadm文件拷贝到/usr/bin/目录下
# mv kubeadm /usr/bin
5、k8s证书替换
在Linux测试服务器上模拟生产环境搭建,将就的kubeadm二进制文件替换为新生成的二进制文件
模拟部署新环境
会在/etc/kubernetes/pki目录下生成新的证书
# cd /etc/kubernetes/pki
# openssl x509 -in apiserver.pem -noout -text
查看新生成证书的期限是否为100年
5.1 master节点
将新证书拷贝到生产环境master节点上/etc/kubernetes/目录下
重启kubelet、kube-apiserver、kube-controller-manager、kube-schedule、kube-proxy、kube-discovery等服务(或者重启服务器)
5.2 node节点
将node节点上的/etc/kubernetes目录下的kubelet.conf文件替换为master上新的文件,然后直接重启kubelet服务或者服务器
5.3 重新server account(全部名空间下的服务)
# kubectl get sa
# kubectl get sa -n kube-system
例如:
# kubectl delete sa default -n kube-system
# kubectl delete sa default
5.4 删除重新网络ds
# kubectl delete ds kube-flannel-ds -n kube-system --grace-period=0 --force
# kubectl apply -f XXX --namesapace=kube-system

### 回答1: 在CentOS系统中使用kubeadm安装Kubernetes 1.24版本的全部命令如下: 1. 安装必需的包和软件: ``` sudo yum install -y yum-utils device-mapper-persistent-data lvm2 ``` 2. 添加Kubernetes存储库: ``` sudo yum-config-manager --add-repo https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ ``` 3. 安装kubeadmkubelet和kubectl: ``` sudo yum install -y kubeadm-1.24.0 kubelet-1.24.0 kubectl-1.24.0 ``` 4. 启动并启用kubelet服务: ``` sudo systemctl start kubelet && sudo systemctl enable kubelet ``` 5. 初始化集群: ``` sudo kubeadm init --kubernetes-version=1.24.0 --pod-network-cidr=10.244.0.0/16 ``` 6. 配置kubectl: ``` mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config ``` 7. 安装网络插件: ``` kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/2140ac876ef134e0ed5af15c65e414cf26827915/Documentation/kube-flannel.yml ``` 8. 加入节点: ``` kubeadm join <control-plane-host>:<control-plane-port> --token <token> --discovery-token-ca-cert-hash sha256:<hash> ``` 请注意,在实际使用时,您需要替换`<control-plane-host>`、`<control-plane-port>`、`<token>`和`<hash>`的值。 ### 回答2: 在CentOS系统中使用kubeadm安装Kubernetes 1.24版本需要执行以下步骤: 1. 确保系统已经安装CentOS操作系统并更新到最新版本。 2. 安装Docker,首先安装Docker的相关依赖: ``` sudo yum install -y yum-utils device-mapper-persistent-data lvm2 ``` 接下来,添加Docker的yum源并安装Docker: ``` sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo yum install -y docker-ce docker-ce-cli containerd.io ``` 启动Docker并设置为开机自启动: ``` sudo systemctl start docker sudo systemctl enable docker ``` 3. 安装kubeadmkubelet和kubectl,添加Kubernetes的yum源: ``` sudo tee /etc/yum.repos.d/kubernetes.repo <<EOF [kubernetes] name=Kubernetes baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearch enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg exclude=kube* EOF ``` 安装kubeadmkubelet和kubectl: ``` sudo yum install -y kubeadm-1.24.0 kubelet-1.24.0 kubectl-1.24.0 --disableexcludes=kubernetes ``` 启动kubelet并设置为开机自启动: ``` sudo systemctl start kubelet sudo systemctl enable kubelet ``` 4. 创建Kubernetes集群,首先选择一个主节点,执行以下命令初始化主节点: ``` sudo kubeadm init --pod-network-cidr=10.244.0.0/16 ``` 初始化完成后,根据输出的提示执行以下命令设置kubeconfig: ``` mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config ``` 安装网络插件(这里以Flannel为例): ``` kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml ``` 接下来,将其他节点加入集群,运行输出的`kubeadm join`命令即可。 通过以上步骤,在CentOS系统中使用kubeadm成功安装Kubernetes 1.24版本。 ### 回答3: 在CentOS系统上使用kubeadm安装Kubernetes 1.24版本,可以按照以下步骤操作: 1. 确保系统已经预先安装好Docker,并且启动Docker服务。 ``` systemctl start docker systemctl enable docker ``` 2. 更新系统的软件包,并安装所需的依赖项。 ``` yum update yum install -y curl wget kubelet kubeadm kubectl ``` 3. 配置kubeadm使用国内镜像源,以提高下载速度。 ``` echo "KUBELET_EXTRA_ARGS=--image-repository=registry.aliyuncs.com/google_containers" > /etc/sysconfig/kubelet ``` 4. 初始化kubeadm并指定使用版本。 ``` kubeadm init --kubernetes-version=1.24.0 ``` 5. 完成初始化后,根据kubeadm提供的输出信息执行以下命令,将kubectl与集群进行连接。 ``` mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config ``` 6. 部署Pod网络插件,以便集群中的Pod可以相互通信。 这里以Calico网络插件为例: ``` kubectl apply -f https://docs.projectcalico.org/v3.14/manifests/calico.yaml ``` 7. 等待一段时间,直到所有的节点状态都变为Ready。 ``` kubectl get nodes ``` 8. 完成上述步骤后,Kubernetes集群已经成功安装。 请注意,以上步骤仅适用于CentOS系统上使用kubeadm安装Kubernetes 1.24版本。具体版本号和网络插件可以根据需要进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值