K8s新增移除节点

温馨提醒

添加 Node 节点

配置主机名

1
hostnamectl set-hostname node03

关闭防火墙和 selinux

关闭 swap 分区

配置内核参数

1
2
3
4
5
cat > /etc/sysctl.d/k8s.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF

安装 ipset 和 ipvsadm

1
yum -y install conntrack ipvsadm ipset jq iptables curl sysstat libseccomp wget vim net-tools git
1
2
3
4
5
6
7
8
  cat >/etc/modules-load.d/ipvs.conf <<EOF
  ip_vs
  ip_vs_rr
  ip_vs_wrr
  ip_vs_sh
  nf_conntrack
  nf_conntrack_ipv4
  EOF

systemctl enable --now systemd-modules-load.service

安装 containerd

1
yum -y install yum-utils device-mapper-persistent-data lvm2
1
 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
1
2
3
4
cat >>/etc/modules-load.d/containerd.conf <<EOF
overlay
br_netfilter
EOF
1
2
modprobe overlay
modprobe br_netfilter
1
yum -y install containerd.io
1
2
3
4
5
6
7
mkdir -p /etc/containerd

containerd config default > /etc/containerd/config.toml

sed -i '/SystemdCgroup/s/false/true/g' /etc/containerd/config.toml

sed -i '/sandbox_image/s/registry.k8s.io/registry.aliyuncs.com\/google_containers/g' /etc/containerd/config.toml
1
systemctl enable --now containerd

安装 kubectl、kubelet、kubeadm

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
cat >/etc/yum.repos.d/kubernetes.repo <<-EOF

[kubernetes]

name=Kubernetes

baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/

enabled=1

gpgcheck=0

repo_gpgcheck=0

gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

EOF
1
yum -y install kubectl-1.27.6 kubelet-1.27.6 kubeadm-1.27.6
1
systemctl enable --now kubelet

添加 Node 节点到集群

1
kubeadm join 192.168.2.195:6443 --token l3alth.2b93rd1qfqf2tuys --discovery-token-ca-cert-hash sha256:c74c5f854db06b67d3368c91568c6bfe56a73e2c3a12d77d30fcc478b52e319b

移除 Node 节点

如果需要在k8s集群中删除节点,首先需要在master节点上删除该节点的相关数据,再删除该节点,接着在该节点上进行reset操作,最后删除相关文件

在 master 节点上查看所有 node 节点

1
kubectl get nodes

把工作负载迁移到其他节点

1
2
# 在主节点上驱逐该 node 节点上的 pod
kubectl drain k8s-node3 --delete-emptydir-data --force --ignore-daemonsets

在主节点上删除该 node 节点

1
kubectl delete node k8s-node3

在主节点上查看集群信息

1
kubectl get nodes

在该 Node 节点上清空集群信息

1
kubeadm reset

删除残留的文件

1
rm -rf /etc/kubernetes/*

清除 iptables 或者 ipvs 的配置

1
2
3
iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X

ipvsadm --clear

重新加入 k8s 集群

该 node 节点重启 kubelet

1
systemctl restart kubelet

在主节点上生成一个证书

1
2
# 此命令可以生成一个永久性的 token
kubeadm token create --print-join-command

在 node 节点上执行 token 命令

1
kubeadm join 192.168.2.195:6443 --token 9pczgv.0grfooog66ynm8xh --discovery-token-ca-cert-hash sha256:c74c5f8512d77d30fcc478b52e319b