k8s集群添加新节点-主节点和工作节点

添加新的master节点

获取token及token证书

root@master0:~# kubeadm token create --print-join-command 
kubeadm join 10.238.67.100:6443 --token tzmx95.jqu8kp4olv41cwps     --discovery-token-ca-cert-hash sha256:3f1090762f1e92da82843285d17ff24720632174c5b058c5f114d346e4ebdb6f

获取control-plane证书

root@master0:~# kubeadm init phase upload-certs --upload-certs
I0812 16:22:02.105583   14476 version.go:254] remote version is much newer: v1.24.3; falling back to: stable-1.20
[upload-certs] Storing the certificates in Secret "kubeadm-certs" in the "kube-system" Namespace
[upload-certs] Using certificate key:
dab8068ca363d20a4ecdd1844aa253fa18642704de587165a21c5f34a12f9eb9

在新的master节点执行命令

kubeadm join 10.238.67.100:6443 --token tzmx95.jqu8kp4olv41cwps \   
 --discovery-token-ca-cert-hash sha256:3f1090762f1e92da82843285d17ff24720632174c5b058c5f114d346e4ebdb6f \ 
  --control-plane --certificate-key dab8068ca363d20a4ecdd1844aa253fa18642704de587165a21c5f34a12f9eb9

添加新的node节点

方法一:

获取master的join token
kubeadm token create --print-join-command --ttl=0 (–ttl=0代表token永不过期,不加此参数默认24小时过期)
执行完成后,会自动生成以下命令

root@k8s-master1:~# kubeadm token create --print-join-command --ttl=0
kubeadm join 10.238.67.100:6443 --token 00n4f5.cwr1dpzx7ojorsmu     --discovery-token-ca-cert-hash sha256:3f1090762f1e92da82843285d17ff24720632174c5b058c5f114d346e4ebdb6f

在node节点操作:

root@k8s-node1:~# kubeadm join 10.238.67.100:6443 --token 00n4f5.cwr1dpzx7ojorsmu     --discovery-token-ca-cert-hash sha256:3f1090762f1e92da82843285d17ff24720632174c5b058c5f114d346e4ebdb6f

方法二:

在master节点操作

root@master0:~# kubeadm token create
rsv0a5.pba45ov0kdg34qth    #生成的token

再执行:

root@master0:~# openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null |  openssl dgst -sha256 -hex | sed 's/^.* //'
43e1fe29b90eab70840d47a98f9f07dd4efb3b002df16ccfc7e252777d4104cb   #生成的token-ca-cert-hash

在node节点操作:

root@k8s-node1:~# kubeadm join 10.238.67.100:6443 --token rsv0a5.pba45ov0kdg34qth --discovery-token-ca-cert-hash sha256:43e1fe29b90eab70840d47a98f9f07dd4efb3b002df16ccfc7e252777d4104cb

标题Kubeadm 添加节点出现etcd检查错误

我是之前的一个主节点加入过集群再次加入会出现这个问题,注
错误样例

[check-etcd] Checking that the etcd cluster is healthy
error execution phase check-etcd: etcd cluster is not healthy: failed to dial endpoint https://10.238.67.101:2379 with maintenance client: context deadline exceeded
To see the stack trace of this error execute with --v=5 or higher

根据关键信息 “error execution phase check-etcd” 可知,可能是在执行加入 etcd 时候出现的错误,导致 master 无法加入原先的 kubernetes 集群
分析问题
因为集群是通过 kubeadm 工具搭建的,且使用了 etcd 镜像方式与 master 节点一起,所以每个 Master 节点上都会存在一个 etcd 容器实例。当剔除一个 master 节点时 etcd 集群未删除剔除的节点的 etcd 成员信息,该信息还存在 etcd 集群列表中。
所以,我们需要 进入 etcd 手动删除 etcd 成员信息
解决问题
1、获取 Etcd 镜像列表

[root@master2 ~]# kubectl get pods -n kube-system | grep etcd
etcd-master1                               1/1     Running   19         375d
etcd-master2                               1/1     Running   20         375d

2、进入 Etcd 容器并删除节点信息

选择上面两个 etcd 中任意一个 pod,通过 kubectl 工具进入 pod 内部

[root@k8s-master01 ~]# kubectl exec -it -n kube-system etcd-master1 sh
kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead.
sh-5.0# 

进入容器后,按下面步执行

## 配置环境

# export ETCDCTL_API=3

# alias etcdctl='etcdctl --endpoints=https://127.0.0.1:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key'

## 查看 etcd 集群成员列表

# etcdctl member list

16ef717fe7811db9, started, master1, https://10.238.67.102:2380, https://10.238.67.102:2379, false
de36a6ad7b39ca1a, started, master2, https://10.238.67.103:2380, https://10.238.67.103:2379, false
ec799f30ae579d1d, started, master0, https://10.238.67.101:2380, https://10.238.67.101:2379, false

## 删除 etcd 集群成员 k8s-master02

# etcdctl member remove ec799f30ae579d1d

Member ec799f30ae579d1d removed from cluster 9ace53a6b5b20c7b

## 退出容器

# exit

3、再次尝试加入集群

通过 kubeadm 命令再次尝试将 k8s-master02 节点加入集群,在执行前首先进入到 k8s-master02 节点服务器,执行 kubeadm 的清除命令:

kubeadm reset

然后再尝试加入 kubernetes 集群,就ok了

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 要将一个k8s节点加入到节点网络集群中,需要执行以下步骤: 1. 在节点上创建一个kubeadm配置文件,包含必要的参数和配置。可以使用`kubeadm config print init-defaults`命令生成默认配置文件。例如,可以在节点上创建一个名为`kubeadm-config.yaml`的文件,并将其复制到需要加入节点网络的节点上。 2. 在需要添加集群节点上,使用`kubeadm join`命令执行加入操作。例如,可以使用以下命令将节点加入到节点网络: ``` sudo kubeadm join <MASTER_NODE_IP>:<PORT> --token <TOKEN> --discovery-token-ca-cert-hash sha256:<HASH> ``` 其中,`<MASTER_NODE_IP>`是节点的IP地址,`<PORT>`是节点的端口号,`<TOKEN>`和`<HASH>`是使用`kubeadm token create`命令生成的token和hash值。 3. 等待节点加入到节点网络。在节点上,可以使用`kubectl get nodes`命令查看节点是否已经加入到节点网络。 注意事项: - 在加入节点之前,确保节点和需要加入节点的系统时间同步。 - 如果需要加入的节点位于不同的网络中,请确保两个网络之间有足够的网络带宽和稳定性。 - 加入节点时需要使用正确的`token`和`hash`,否则加入操作将会失败。 ### 回答2: k8s是一种用于容器编排和管理的开源平台,它允许将容器化的应用程序部署到集群中。在k8s中,节点负责管理整个集群,而节点负责运行应用程序的实例。 要将k8s节点加入节点网络集群,你需要按照以下步骤进行操作: 1. 准备节点:首先,你需要准备将要加入集群节点。这包括确保节点有足够的资源来运行应用程序,并且节点上的操作系统已经安装了k8s所需的软件。 2. 配置kubelet服务:在节点上安装k8s所需的kubelet服务,并将其配置为自动启动。kubelet是k8s的一个关键组件,它负责管理节点上的容器。 3. 创建证书和密钥:为了加密和安全地通信,k8s需要使用TLS证书和密钥。你需要在节点上为节点生成证书和密钥,并将其分发到节点上。 4. 添加节点信息:在节点上执行命令,使用节点的IP地址和证书密钥将节点信息添加集群中。这样节点就会知道并接受加入的节点。 5. 验证节点加入:等待一段时间后,你可以在节点上运行命令来验证节点是否成功加入集群。如果一切顺利,你应该能够看到节点的状态和相应的信息。 通过上述步骤,你可以将k8s节点成功加入节点网络集群。在加入集群后,节点就可以运行应用程序的实例,并与节点进行通信,实现集群容器编排和管理。 ### 回答3: K8sKubernetes)是一个用于容器编排和管理的开源平台,可以帮助用户更方便地部署、伸缩和管理容器化应用程序。在K8s集群中,节点(Master Node)是负责整个集群的管理和控制的节点K8s集群中的其他节点被称为工作节点(Worker Node),它们负责运行容器应用。 要将K8s节点加入节点网络集群,需要进行以下步骤: 1. 安装Kubernetes:首先,在每个节点上安装Kubernetes软件包。这可以通过手动安装或使用自动化工具实现。 2. 配置节点:在节点上,需要配置Kubernetes的Master节点组件,包括Kube-apiserver、Kube-controller-manager、Kube-scheduler和Etcd。这些组件负责集群管理和控制。 3. 配置工作节点:在工作节点上,需要配置Kubernetes的Node节点组件,包括Kubelet和Kube-proxy。Kubelet负责与节点通信并管理容器,而Kube-proxy负责处理网络代理和负载均衡。 4. 加入集群:然后,在工作节点上运行加入集群的命令。该命令会向节点发送请求,请求加入Kubernetes集群。 5. 检查和验证:最后,您可以使用Kubectl命令行工具检查节点的状态,确认工作节点是否成功加入节点集群。您可以运行“kubectl get nodes”命令来显示所有节点的状态信息。 请注意,加入节点必须具有与集群中其他节点相同的Kubernetes版本,并且网络连接正常。如果节点加入过程中出现问题,您可以查看相关日志或检查网络设置,以解决问题。 总之,通过正确配置和运行加入集群命令,K8s节点可以成功加入节点网络集群,从而实现更高效的容器化应用程序管理和调度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

张益达·

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

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

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

打赏作者

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

抵扣说明:

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

余额充值