K8S 集群节点扩容

环境说明:

主机名IP地址CPU/内存角色K8S版本Docker版本
k8s231192.168.99.2312C4Gmaster1.23.1720.10.24
k8s232192.168.99.2322C4Gwoker1.23.1720.10.24
k8s233(需上线)192.168.99.2332C4Gwoker1.23.1720.10.24

        当现有集群中的节点资源不够用,此时就需要给集群扩容添加机器

1. 上线节点环境准备

1.1 确定上线节点与当前集群网段一致,且可互通

        使用 ping 命令检查网络是否互通

1.2 配置hosts解析

cat >> /etc/hosts <<EOF
192.168.99.250 linux250
192.168.99.251 linux251
192.168.99.252 linux252
EOF

 1.3 关闭 swap 分区

#临时关闭
swapoff -a && sysctl -w vm.swappiness=0
#基于配置文件永久关闭
sed -ri '/^[^#]*swap/s@^@#@' /etc/fstab

1.4 确保各个节点MAC地址或Product_uuid唯一

ifconfig  eth0  | grep ether | awk '{print $2}'
cat /sys/class/dmi/id/product_uuid 

温馨提示:

        一般来讲,硬件设备会拥有唯一的地址,但是有些虚拟机的地址可能会重复。

        Kubernetes使用这些值来唯一确定集群中的节点。 如果这些值在每个节点上不唯一,可能会导致安装失败。

1.5 修改Linux内核参数调优

cat > /etc/sysctl.d/k8s.conf <<'EOF'
#允许 Linux 系统作为路由器转发 IPv4 数据包。当设置为 1 时,表示启用 IP 数据包转发功能。
net.ipv4.ip_forward = 1

#启用桥接设备在通过 iptables 进行网络过滤时的调用。
net.bridge.bridge-nf-call-iptables = 1

#启用桥接设备在通过 ip6tables 进行 IPv6 网络过滤时的调用。
net.bridge.bridge-nf-call-ip6tables = 1

#允许 Linux 在不重新引起操作的情况下卸载正在使用的挂载点。
fs.may_detach_mounts = 1

#设置内存过量分配策略。当设置为 1 时,Linux 将允许分配超过物理内存总量的虚拟内存。
vm.overcommit_memory=1

#当内存耗尽(OOM,Out-Of-Memory)时,是否触发内核崩溃。设置为 0 表示禁用这个行为。
vm.panic_on_oom=0

#设置用户可以监视的文件数量的最大值,对于文件系统监视服务很重要,比如 inotify。
fs.inotify.max_user_watches=89100

#设置系统中打开的文件描述符的最大数量。
fs.file-max=52706963

#设置系统中打开文件描述符的最大数量,和 fs.file-max 有类似的作用。
fs.nr_open=52706963

#设置连接跟踪表的最大条目数量,用于管理网络连接状态。
net.netfilter.nf_conntrack_max=2310720

#设置 TCP keepalive 超时时间(单位:秒),用于检测空闲连接是否仍然可用。
net.ipv4.tcp_keepalive_time = 600

#在认定连接失效之前,发送多少个 TCP keepalive 探测包。
net.ipv4.tcp_keepalive_probes = 3

#两次 TCP keepalive 探测之间的时间间隔(单位:秒)。
net.ipv4.tcp_keepalive_intvl =15

#设置 TIME-WAIT 状态的最大连接数。
net.ipv4.tcp_max_tw_buckets = 36000

#允许重新使用 TIME-WAIT 状态的 TCP 连接。
net.ipv4.tcp_tw_reuse = 1

#允许系统保持的最大无主 TCP 连接数。
net.ipv4.tcp_max_orphans = 327680

#设置在关闭套接字时内核应该进行多少次重试。
net.ipv4.tcp_orphan_retries = 3

#启用 TCP SYN cookies,用于防范 SYN 攻击。
net.ipv4.tcp_syncookies = 1

#设置 TCP SYN 队列的最大长度。
net.ipv4.tcp_max_syn_backlog = 16384

#设置 IPv4 连接跟踪表的最大条目数量。
net.ipv4.ip_conntrack_max = 65536

#控制着系统允许的未完成的 TCP 握手队列的最大长度
net.ipv4.tcp_max_syn_backlog = 16384

#禁用 TCP 时间戳,可能用于防范某些攻击。
net.ipv4.tcp_timestamps = 0

#设置系统级别的最大并发连接数,影响 TCP 和 UDP 套接字的 listen 函数的 backlog 参数的默认值。
net.core.somaxconn = 16384
EOF

1.6 加载文件

sysctl --system

 1.8 禁用SELinux

sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config 
grep ^SELINUX= /etc/selinux/config

 1.9 修改cgroup的管理进程systemd

阿里云镜像加速

harbor私有仓库解析

修改cgroup的管理进程systemd

cat > /etc/docker/daemon.json <<EOF
{
"registry-mirrors": ["https://0pcinxc2.mirror.aliyuncs.com"],
"insecure-registries": ["harbor253.bihuang.com","192.168.99.253"],
"exec-opts": ["native.cgroupdriver=systemd"]
}
EOF

#重启docker
systemctl restart docker

#查看是否修改
[root@linux250 ~]# docker info | grep "Cgroup"
 Cgroup Driver: systemd
 Cgroup Version: 1

温馨提示:

        如果不修改cgroup的管理驱动为systemd,则默认值为cgroupfs,在初始化 master 节点时会失败

2. 安装必要组件

2.1 安装 docker 环境

二进制部署 docker_docker 二进制包-CSDN博客

2.2 配置K8S软件源

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
EOF

2.3 安装 kubeadm,kubectl,kubelet 软件包

[root@k8s233 ~]# yum -y install kubeadm-1.23.17-0 kubelet-1.23.17-0 kubectl-1.23.17-0 

2.4 启动kubelet服务

        若服务启动失败时正常现象,其会自动重启,初始化集群后恢复

systemctl enable --now kubelet
systemctl status kubelet

3. 在 master 节点创建 token

3.1 创建一个永不过期的 token,并打印加入集群命令

[root@k8s231 /app/manifests/sts]# kubeadm token create --print-join-command bihuan.aaaaabbbbbcccccd --ttl 0

#指定时间 0 为永不过期
--ttl 

#生成的值
kubeadm join 192.168.8.246:6443 --token bihuan.aaaaabbbbbcccccd --discovery-token-ca-cert-hash sha256:23e378324af6e61e27df5af6a8eb56b90f1d560b40c591ea3b7d06902a0d3b8f 

注意:

        --print-join-command bihuan.aaaaabbbbbcccccd 

        这个字段的格式为 6个字符.16个字符

        可根据自己需求自定义

3.2 查看现有的token

[root@k8s231 /app/manifests/sts]# kubeadm token list
TOKEN                     TTL         EXPIRES   USAGES                   DESCRIPTION                                                EXTRA GROUPS
bihuan.aaaaabbbbbcccccd   <forever>   <never>   authentication,signing   <none>                                                     system:bootstrappers:kubeadm:default-node-token

4. worker 节点加入集群

#将刚刚生成的值,在需要加入集群的节点上执行
[root@k8s233 ~]# kubeadm join 192.168.8.246:6443 --token bihuan.aaaaabbbbbcccccd --discovery-token-ca-cert-hash sha256:23e378324af6e61e27df5af6a8eb56b90f1d560b40c591ea3b7d06902a0d3b8f

5. 查看节点

[root@k8s231 /app/manifests/sts]# 
[root@k8s231 /app/manifests/sts]# kubectl get nodes
NAME     STATUS   ROLES                  AGE   VERSION
k8s231   Ready    control-plane,master   59d   v1.23.17
k8s232   Ready    <none>                 59d   v1.23.17
k8s233   Ready    <none>                 40s   v1.23.17

6. 删除 token 

等所有节点都加入集群后,删除创建的永久token

#查看现有token
[root@k8s231 /app/manifests/sts]# kubeadm token list
TOKEN                     TTL         EXPIRES   USAGES                   DESCRIPTION                                                EXTRA GROUPS
bihuan.aaaaabbbbbcccccd   <forever>   <never>   authentication,signing   <none>                                                     system:bootstrappers:kubeadm:default-node-token

#删除token
[root@k8s231.oldboyedu.com ~]# kubeadm token delete bihuang

  • 24
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Kubernetes(简称K8s)是一个开源的容器编排平台,用于管理和调度容器化应用程序。K8s提供了一种方便的方式来扩容和管理集群中的节点资源,例如CPU扩容。 当我们在K8s扩容节点的CPU资源时,可能会遇到不生效的情况。这可能是由于以下几个原因导致的: 1. 配置错误:要扩容节点的CPU资源,需要确保正确设置了相关的参数。例如,在Pod的定义文件中,我们需要使用正确的CPU请求(requests)和CPU限制(limits),以确保容器可以正确地利用节点的资源。 2. 集群资源不足:如果集群的总资源不足,再扩容节点的CPU也不会生效。我们可以通过kubectl get nodes命令来查看集群中各个节点的资源使用情况,以了解是否有足够的资源来支持新节点的加入。 3. 调度策略:K8s使用调度策略来决定将Pod调度到哪个节点上。如果调度策略选择了其他节点,而不是我们想要扩容节点扩容的CPU资源自然不会生效。我们可以通过修改Pod的调度策略或调整节点的标签,以确保Pod可以正确地调度到目标节点上。 4. 资源调度器问题:K8s中使用的资源调度器可能存在问题,导致扩容的CPU资源无法生效。可以尝试重启集群中的资源调度器,或升级K8s版本来解决这个问题。 总之,要解决K8s节点CPU扩容不生效的问题,需要仔细检查配置、查看集群资源情况、调整调度策略以及排除可能存在的资源调度器问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值