K8S集群重新初始化--详细过程

本文详细描述了在Kubernetes(K8S)集群中,如何在master节点进行重置、清除配置、重启服务,以及在work节点上的操作,包括安装Calico网络插件。作者提供了每一步的具体命令和注意事项。

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

在引导k8s集群的过程时可能因为这个或那个的原因导致需要重新引导集群 。

下面整理了我在实际工作中初始化k8s集群的详细过程。

0、当前环境

k8s环境部署总览

ip地址类型操作系统服务配置
192.168.162.31Master01Centos7.62核CPU 2G内存 20G硬盘
192.168.162.41node1Centos7.62核CPU 2G内存 20G硬盘
192.168.162.42node2Centos7.62核CPU 2G内存 20G硬盘

1、master节点

1.1、在master节点执行下面reset命令:

kubeadm reset

//过程会询问是否重置,输入y然后回车

1.2、手动清除配置信息,这一步很关键:

cd ~ 进入根目录

ll -a 查看是否存在.kube文件
rm -rf /root/.kube

systemctl restart docker ## 重启docker 
systemctl restart kubelet ## 重启kubelet

rm -rf /etc/cni/net.d

1.3、重新引导集群

kubeadm init xxxxxx

例如,具体按你的为准:

kubeadm init \
--apiserver-advertise-address=192.168.162.31 \
--control-plane-endpoint=k8s-master01-31 \
--image-repository registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images \
--kubernetes-version v1.20.9 \
--service-cidr=10.96.0.0/16 \
--pod-network-cidr=10.244.0.0/16

初始化master节点成功后,拷贝出关键信息:(注意是你自己的信息)

Your Kubernetes control-plane has initialized successfully!

To start using your cluster, you need to run the following as a regular user:

  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

Alternatively, if you are the root user, you can run:

  export KUBECONFIG=/etc/kubernetes/admin.conf

You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  https://kubernetes.io/docs/concepts/cluster-administration/addons/

You can now join any number of control-plane nodes by copying certificate authorities
and service account keys on each node and then running the following as root:

  kubeadm join k8s-master01-31:6443 --token m7xgx0.h8m6si6ws2p0r9n6 \
    --discovery-token-ca-cert-hash sha256:f4d3af365aeabab83cf124e5a84aeb8260ae6c0d54a7f5d87928fab37a519aea \
    --control-plane 

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join k8s-master01-31:6443 --token m7xgx0.h8m6si6ws2p0r9n6 \
    --discovery-token-ca-cert-hash sha256:f4d3af365aeabab83cf124e5a84aeb8260ae6c0d54a7f5d87928fab37a519aea 

1.4、创建配置目录,并复制权限配置文件到用户目录下:

  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

1.5 查看集群状态

此时就可以在master节点使用kubectl get node 查看集群状态,如果出现状态为notready

kubectl get node 

请添加图片描述

查看pod状态

请添加图片描述

1.6 安装Calico网络插件

curl https://docs.projectcalico.org/manifests/calico.yaml -O ## 或者

curl https://docs.projectcalico.org/v3.20/manifests/calico.yaml -O

kubectl apply -f calico.yaml

2、work节点

2.1、重置工作节点

kubeadm reset
//过程会询问是否重置,输入y然后回车

2.2、手动删除目录

rm -rf /root/.kube
rm -rf /etc/cni/net.d
rm -rf /etc/kubernetes/*

2.3、重新加入集群

kubeadm join xxx #获取该指令可以通过在master节点上执行:kubeadm token create --print-join-command

自己生成的命令:

kubeadm join k8s-master01-31:6443 --token m7xgx0.h8m6si6ws2p0r9n6 \
    --discovery-token-ca-cert-hash sha256:f4d3af365aeabab83cf124e5a84aeb8260ae6c0d54a7f5d87928fab37a519aea

在master节点重新获取token

kubeadm token create --print-join-command

3、检验效果

在master节点查看各个node

kubectl get node

请添加图片描述

在master节点查看pod状态

kubectl get pod -A

请添加图片描述

### Kubernetes 集群初始化教程 #### 初始环境准备 在开始初始化 Kubernetes (k8s) 集群前,需确保所有节点满足基本硬件和软件需求。每台机器应至少具备 2GB 或更多的 RAM、2 个 CPU 或更多以及至少 30GB 的硬盘空间[^4]。此外,关闭 swap 分区是必要的,因为 kubelet 不支持启用 swap 的系统。 #### 安装 Docker 和 kubeadm 为了运行容器化应用程序并管理集群中的 Pod,需要安装 Docker 和 kubeadm 组件。具体来说,在每个节点上都需要安装 `docker`、`kubectl`、`kubeadm` 和 `kubelet` 这些工具。可以通过包管理器或者官方文档推荐的方式完成这些依赖项的安装。 #### 初始化主节点 执行以下命令以初始化主控节点: ```bash sudo kubeadm init --config=kubeadm-config.yaml ``` 此命令依据指定的配置文件启动初始化过程,并设置 API Server 及其他控制平面服务[^1]。注意,这里的 `kubeadm-config.yaml` 文件包含了关于网络插件、Pod 子网以及其他高级选项的具体参数设定。 #### 配置 kubectl 一旦主节点成功初始化完毕,则需要为当前用户配置 `kubectl` 命令行工具以便于后续管理和操作集群资源。这一步通常涉及复制管理员凭证到用户的 home 目录下: ```bash mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config ``` #### 加入工作节点 对于每一个希望加入该新创建的 Kubernetes 集群的工作节点而言,应当通过 master 节点返回的一个 token 来实现连接。一般形式如下所示(实际 token 将由上述初始化过程中生成): ```bash kubeadm join <master-ip>:<master-port> --token <token> --discovery-token-ca-cert-hash sha256:<hash> ``` 如果遇到任何问题或想要清理现有状态重新尝试构建新的集群实例的话,可利用 `kubeadm reset` 清理之前的残留数据后再继续进行下一步骤[^2]。 #### 网络附加组件 最后但同样重要的是,还需要部署一个合适的 CNI (Container Network Interface) 插件来提供 pod-to-pod 的通信能力。例如 Flannel, Calico 等都是常见的选择之一。按照所选方案的相关指南应用相应的 YAML 表达式即可完成这部分功能扩展。 --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

hhzz

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

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

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

打赏作者

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

抵扣说明:

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

余额充值