Kubernetes——集群新增node节点

一、基础配置

1.1 修改主机名

# 修改主机名,修改完成之后 ctrl + D 退出重新登录即可
[root@localhost ~]# hostnamectl set-hostname node03

1.2 、关闭防火墙、SeLinux、swap分区

# 关闭防火墙
[root@node03 ~]# systemctl stop firewalld
[root@node03 ~]# systemctl disable firewalld

# 安装iptables
[root@node03 ~]# yum install iptables-services -y

# 关闭SeLinux
[root@node03 ~]# setenforce 0
[root@node03 ~]# sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config 

# 关闭swap
[root@node03 ~]# swapoff -a
[root@node03 ~]# cp /etc/fstab /etc/fstab_bak
[root@node03 ~]# cat /etc/fstab_bak | grep -v swap > /etc/fstab

1.3 更新系统

# 安装wget
[root@node03 ~]# yum install wget -y

# 删除本地yum源
[root@node03 ~]# rm -rf /etc/yum.repos.d/*

# 下载阿里源
[root@node03 ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

# 升级所有包,系统版本升级,内核不变
[root@node03 ~]# yum update -y

1.4 允许 iptables 检查桥接流量

#加载br_netfilter模块
[root@node03 ~]# modprobe br_netfilter
[root@node03 ~]# modprobe overlay

# 查看br_netfilter 模块是否已加载
[root@node03 ~]# lsmod | grep br_netfilter
br_netfilter           22256  0 
bridge                151336  1 br_netfilter

# 开机自动加载
[root@node03 ~]# cat << EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF

# 设置所需的 sysctl 参数,参数在重新启动后保持不变
[root@node03 ~]# cat << EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables  = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward                 = 1
echo "net.ipv4.ip_nonlocal_bind = 1" >> /etc/sysctl.conf
EOF

# 应用 sysctl 参数而不重新启动
[root@node03 ~]# sysctl --system

1.5 加载ipvs模块

# 查看Linux内核版本,若内核大于4.19替换nf_conntrack_ipv4为nf_conntrack
[root@node03 ~]# uname -r
3.10.0-957.el7.x86_64

[root@node03 ~]# cat > /etc/sysconfig/modules/ipvs.modules <<EOF
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
EOF

# 执行脚本
[root@node03 ~]# chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules
[root@node03 ~]# lsmod | grep -e ip_vs -e nf_conntrack_ipv4
nf_conntrack_ipv4      15053  0 
nf_defrag_ipv4         12729  1 nf_conntrack_ipv4
ip_vs_sh               12688  0 
ip_vs_wrr              12697  0 
ip_vs_rr               12600  0 
ip_vs                 145497  6 ip_vs_rr,ip_vs_sh,ip_vs_wrr
nf_conntrack          133095  2 ip_vs,nf_conntrack_ipv4
libcrc32c              12644  3 xfs,ip_vs,nf_conntrack

# 安装相关管理工具
[root@node03 ~]# yum install ipset ipvsadm -y

1.6 时钟同步

[root@node03 ~]# yum install chrony -y

# 编辑chronyd配置文件,完成之后该文件内容如下
[root@node03 ~]# egrep -v "^$|#" /etc/chrony.conf 
server ntp1.aliyun.com iburst
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
allow 192.168.0.0/16
local stratum 10
logdir /var/log/chrony

1.7 修改hosts文件(master01节点)

# 编辑hosts文件,末尾新增node03节点
[root@master01 ~]# vi /etc/hosts
......
192.168.34.40   node03

# 分发hosts文件至所有节点
[root@master01 ~]# for H in master0{2..3}; do scp /etc/hosts root@$H:/etc/; done
[root@master01 ~]# for H in node0{1..3}; do scp /etc/hosts root@$H:/etc/; done

1.8 配置免密登录(master01节点)

[root@master01 ~]# ssh-copy-id node03

二、Kubernetes安装

2.1 docker安装

# 安装依赖环境
[root@node03 ~]# yum install -y yum-utils device-mapper-persistent-data lvm2 nfs-utils vim

# 配置docker yum源
[root@node03 ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 查看docker版本列表
[root@node03 ~]# yum list docker-ce --showduplicates | sort -r

# 查看集群环境docker版本
[root@master01 ~]# rpm -qa | grep docker
docker-ce-rootless-extras-23.0.4-1.el7.x86_64
docker-ce-cli-20.10.9-3.el7.x86_64
docker-ce-20.10.9-3.el7.x86_64
docker-scan-plugin-0.23.0-3.el7.x86_64
[root@master01 ~]# rpm -qa | grep containerd
containerd.io-1.6.20-3.1.el7.x86_64

# 安装指定版本
[root@node03 ~]# yum install docker-ce-20.10.9-3.el7 docker-ce-cli-20.10.9-3.el7 containerd.io-1.6.20-3 -y

# 设置镜像加速
# 这一步配置自己的
[root@node03 ~]# curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io

# 启动docker
[root@node03 ~]# systemctl daemon-reload
[root@node03 ~]# systemctl start docker
[root@node03 ~]# systemctl enable docker

2.2 kubernetes安装

# 配置kubernetes yum源

[root@node03 ~]# cat << EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
       http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

# 查看kubernetes版本
yum list kubeadm --showduplicates | sort -r

# 查看集群环境kubeadm和kubectl版本
[root@master01 ~]# rpm -qa | grep kube
kubectl-1.22.2-0.x86_64
kubernetes-cni-1.2.0-0.x86_64
kubeadm-1.22.2-0.x86_64
kubelet-1.22.2-0.x86_64

# 安装指定版本
yum install kubeadm-1.22.2-0 kubelet-1.22.2-0 kubectl-1.22.2-0 lrzsz -y

# 修改docker Cgroup Driver为systemd管理
# 将/usr/lib/systemd/system/docker.service文件中的这一行 ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
# 修改为 ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --exec-opt native.cgroupdriver=systemd
# 如果不修改,在添加 worker 节点时可能会碰到如下错误
[WARNING IsDockerSystemdCheck]: detected "cgroupfs" as the Docker cgroup driver. The recommended driver is "systemd".
Please follow the guide at https://kubernetes.io/docs/setup/cri/

[root@node03 ~]# sed -i "s#^ExecStart=/usr/bin/dockerd.*#ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --exec-opt native.cgroupdriver=systemd#g" /usr/lib/systemd/system/docker.service

# docker重启
[root@node03 ~]# systemctl daemon-reload
[root@node03 ~]# systemctl restart docker

# 启动kubelet
[root@node03 ~]# systemctl enable kubelet && systemctl start kubelet

三、加入集群

3.1 获取token

[root@master01 ~]# kubeadm token create --print-join-command
kubeadm join master:64430 --token wwpl04.uzwhpnttjahiopw5 --discovery-token-ca-cert-hash sha256:503e9566a6b17fe9560d42b0fdc5be01c18671808363891ed130adff2298d01f

3.2 加入集群

[root@node03 ~]# kubeadm join master:64430 --token wwpl04.uzwhpnttjahiopw5 --discovery-token-ca-cert-hash sha256:503e9566a6b17fe9560d42b0fdc5be01c18671808363891ed130adff2298d01f
[preflight] Running pre-flight checks
[preflight] Reading configuration from the cluster...
[preflight] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -o yaml'
[kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml"
[kubelet-start] Writing kubelet environment file with flags to file "/var/lib/kubelet/kubeadm-flags.env"
[kubelet-start] Starting the kubelet
[kubelet-start] Waiting for the kubelet to perform the TLS Bootstrap...

This node has joined the cluster:
* Certificate signing request was sent to apiserver and a response was received.
* The Kubelet was informed of the new secure connection details.

Run 'kubectl get nodes' on the control-plane to see this node join the cluster.

3.3 查看结果

[root@master01 ~]# kubectl get nodes
NAME       STATUS   ROLES                  AGE   VERSION
master01   Ready    control-plane,master   23h   v1.22.2
master02   Ready    control-plane,master   22h   v1.22.2
master03   Ready    control-plane,master   22h   v1.22.2
node01     Ready    <none>                 22h   v1.22.2
node02     Ready    <none>                 22h   v1.22.2
node03     Ready    <none>                 52s   v1.22.2

node03加入集群

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值