(一)kubeadm方式搭建单master的k8s的集群

 集群节点初始化:

集群规划
角色IP系统版本
prod-k8s-master192.168.xx.xxRocky Linux release 9.4
prod-k8s-node01192.168.xx.xxRocky Linux release 9.4
prod-k8s-node02192.168.xx.xxRocky Linux release 9.4

集群节点配置(所有主机操作)


1:所有节点修改主机名(每个节点主机名不一样,注意识别清除)
hostnamectl set-hostname prod-k8s-master

hostnamectl set-hostname prod-k8s-node01

hostnamectl set-hostname prod-k8s-node02
2:配置本地解析
 vim /etc/hosts

192.168.xx.xx prod-k8s-master1
192.168.xx.xx prod-k8s-node01
192.168.xx.xx prod-k8s-node02
3:关闭本地防火墙
systemctl disable --now firewalld
4:关闭SElinux
 setenforce 0 && sed -ri "s/^SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config
5:关闭swap分区
swapoff -a && sysctl -w vm.swappiness=0 && sed -ri '/^[^#]*swap/s@^@#@' /etc/fstab
6:更改本地安装源
mkdir /etc/yum.repos.d/repo.bak
cp /etc/yum.repos.d/rocky* /etc/yum.repos.d/repo.bak/
sed -e 's|^mirrorlist=|#mirrorlist=|g' \
    -e 's|^#baseurl=http://dl.rockylinux.org/$contentdir|baseurl=https://mirrors.aliyun.com/rockylinux|g' \
    -i.bak \
    /etc/yum.repos.d/rocky-*.repo
yum  makecache
7:安装epel源
dnf install -y  epel-release
sed -e 's!^metalink=!#metalink=!g' \
    -e 's!^#baseurl=!baseurl=!g' \
    -e 's!https\?://download\.fedoraproject\.org/pub/epel!https://mirrors.tuna.tsinghua.edu.cn/epel!g' \
    -e 's!https\?://download\.example/pub/epel!https://mirrors.tuna.tsinghua.edu.cn/epel!g' \
    -i /etc/yum.repos.d/epel{,-testing}.repo
8:下载内核离线安装包(所有节点)
dnf install -y wget vim git
mkdir kernel-rpm && cd kernel-rpm/
wget https://mirrors.coreix.net/elrepo-archive-archive/kernel/el9/x86_64/RPMS/kernel-lt-6.1.161-1.el9.elrepo.x86_64.rpm  \
wget https://mirrors.coreix.net/elrepo-archive-archive/kernel/el9/x86_64/RPMS/kernel-lt-devel-6.1.161-1.el9.elrepo.x86_64.rpm  \
wget https://mirrors.coreix.net/elrepo-archive-archive/kernel/el9/x86_64/RPMS/kernel-lt-tools-6.1.161-1.el9.elrepo.x86_64.rpm  \
wget https://mirrors.coreix.net/elrepo-archive-archive/kernel/el9/x86_64/RPMS/kernel-lt-core-6.1.161-1.el9.elrepo.x86_64.rpm  \
wget https://mirrors.coreix.net/elrepo-archive-archive/kernel/el9/x86_64/RPMS/kernel-lt-tools-libs-6.1.161-1.el9.elrepo.x86_64.rpm  \
wget https://mirrors.coreix.net/elrepo-archive-archive/kernel/el9/x86_64/RPMS/kernel-lt-modules-6.1.161-1.el9.elrepo.x86_64.rpm
yum -y localinstall kernel-lt-*
9: 设置 GRUB 启动菜单中第 0 项(第一个)内核为系统默认启动项
grub2-set-default 0
10: 重新生成 GRUB 启动配置文件,并将配置输出到/etc/grub2.cfg 
 grub2-mkconfig -o /etc/grub2.cfg
11:  给默认内核添加启动参数,核心作用是「启用 Linux 用户命名空间功能」
 grubby --args="user_namespace.enable=1" --update-kernel="$(grubby --default-kernel)"

12: 输出当前系统设置的默认启动内核的完整路径

grubby --default-kernel

集群节点实现时间同步(所有节点)

1. 所有节点同步时间及时区:
dnf install -y chrony
vim /etc/chrony.conf

添加内容如下:

pool ntp1.aliyun.com iburst
pool ntp2.aliyun.com iburst
pool cn.pool.ntp.org iburst
server ntp4.aliyun.com iburst
2. 启动时间同步工具:
systemctl enable --now chronyd
3. 立刻同步时间及同步状态 :
chronyc makestep
chronyc tracking
chronyc sources
集群节点同步时区:
1. 校准时间修改上海时区并且定时同步时间:
timedatectl set-timezone Asia/Shanghai   \
ln -sf /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime  \
echo 'ASia/Shanghai' > /etc/tiomezone
2. 查看时区
 timedatectl
3. 默认时间格式为 12 小时制,调整为 24 小时制:
 date
localectl set-locale LC_TIME=C.UTF-8
localectl

验证  : date

修改过后断开重连终端

集群节点内核参数调优 

1:加载k8s内核参数
cat >> /etc/sysctl.d/k8s.conf << EOF
#内核参数调整
vm.swappiness=0 
#配置iptables参数,使得流经网桥的流量也经过iptables/netfilter防火墙
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
#启用IP 转发功能
net.ipv4.ip_forward = 1
#允许文件系统分离挂载
fs.may_detach_mounts = 1
#减少交换分区的使用倾向。
vm.swappiness = 0
#允许内存超配
vm.overcommit_memory=1
#在内存不足时不触发系统崩溃
vm.panic_on_oom=0
#设置进程的最大内存映射区域数量
vm.max_map_count=655360
#增加 inotify 监视的最大用户手表数量
fs.inotify.max_user_watches=89100
#增加文件描述符的最大数量
fs.file-max=52706963
#和打开文件的最大数量
fs.nr_open=52706963
#设置网络连接跟踪的最大数量
net.netfilter.nf_conntrack_max=2310720
#TCP 连接在空闲状态下保持存活的时间(秒),超过这个时间后开始发送保活探测包。
net.ipv4.tcp_keepalive_time = 600
#发送保活探测包的次数,如果都没有响应则关闭连接。
net.ipv4.tcp_keepalive_probes = 3
#发送保活探测包的时间间隔(秒)
net.ipv4.tcp_keepalive_intvl = 15
#设置系统中处于 TIME_WAIT 状态的最大连接数量。
net.ipv4.tcp_max_tw_buckets = 36000
#允许将处于 TIME_WAIT 状态的套接字重新用于新的连接。
net.ipv4.tcp_tw_reuse = 1
#系统所能处理的孤儿套接字(没有父进程的套接字)的最大数量。
net.ipv4.tcp_max_orphans = 327680
#孤儿套接字的重试次数。
net.ipv4.tcp_orphan_retries = 3
#启用 SYN Cookies 功能,防范 SYN 洪水攻击。
net.ipv4.tcp_syncookies = 1
#SYN 队列(未完成连接队列)的最大长度。
net.ipv4.tcp_max_syn_backlog = 16384
#最大的 IP 连接跟踪数量。
net.ipv4.ip_conntrack_max = 65536
#禁用 TCP 时间戳选项。
net.ipv4.tcp_timestamps = 0
#套接字监听队列的最大长度。
net.core.somaxconn = 16384
EOF
2:删除注释行
sed -i '/^#/d' /etc/sysctl.d/k8s.conf
3:加载网桥过滤模块
modprobe overlay && modprobe br_netfilter
cat <<EOF | tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF
4:加载配置
sysctl --system 或 sysctl -p /etc/sysctl.d/k8s.conf
5:测试
sysctl -a
lsmod | grep br_netfilter

集群节点启动ipvs功能 

1:安装工具
dnf install ipvsadm ipset sysstat conntrack libseccomp -y
2:启用ipvs相关功能模块
cat <<EOF | sudo tee /etc/modules-load.d/ipvs.conf
overlay
ip_vs
ip_vs_lc
ip_vs_wlc
ip_vs_rr
ip_vs_wrr
ip_vs_lblc
ip_vs_lblcr
ip_vs_dh
ip_vs_sh
ip_vs_fo
ip_vs_nq
ip_vs_sed
ip_vs_ftp
ip_vs_sh
nf_conntrack
ip_tables
ip_set
xt_set
ipt_set
ipt_rpfilter
ipt_REJECT
ipip
EOF
3:加载模块
modprobe overlay
modprobe ip_vs && modprobe ip_vs_rr && modprobe ip_vs_wrr && modprobe ip_vs_sh && modprobe nf_conntrack
systemctl enable --now systemd-modules-load.service rsyslog
4:测试
lsmod | grep -e ip_vs -e nf_conntrack_ipv4

集群节点修改加载Limits参数

1:设置最大文件打开数
vim /etc/security/limits.conf
* soft nofile 655360
* hard nofile 131072
* soft nproc 655350
* hard nproc 655350
* soft memlock unlimited
* hard memlock unlimited
2:重启所有节点
reboot
3:查看内核参数是否加载
 lsmod | grep --color=auto -e ip_vs -e nf_conntrack

集群节点安装containerd作为容器运行时

Kubernetes 版本和 Containerd 版本依赖关系:kubernetes/CHANGELOG/CHANGELOG-1.33.md at master · kubernetes/kubernetes · GitHub

1:安装docker源
yum install -y yum-utils jq psmisc net-tools telnet device-mapper-persistent-data lvm2 -y
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

更新:

dnf makecache
2:查看containerd指定版本
dnf list --showduplicates containerd.io --enablerepo=docker-ce-stable
3:安装docker和containerd
dnf install -y containerd.io-1.7.* docker-ce
4:验证
containerd --version
5:生成配置containerd配置文件
mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml
6:修改containerd配置文件参数
sed -i 's#SystemdCgroup = false#SystemdCgroup = true#g' /etc/containerd/config.toml  \
sed -i 's#k8s.gcr.io/pause#registry.cn-hangzhou.aliyuncs.com/google_containers/pause#g'  /etc/containerd/config.toml   \
sed -i 's#registry.gcr.io/pause#registry.cn-hangzhou.aliyuncs.com/google_containers/pause#g'  /etc/containerd/config.toml  \
sed -i 's#registry.k8s.io/pause#registry.cn-hangzhou.aliyuncs.com/google_containers/pause#g'  /etc/containerd/config.toml

重新加载配置并启动containerd

systemctl daemon-reload && systemctl enable --now containerd

所有节点配置 crictl 客户端连接的运行时位置

cat > /etc/crictl.yaml <<EOF
runtime-endpoint: unix:///run/containerd/containerd.sock
image-endpoint: unix:///run/containerd/containerd.sock
timeout: 10
debug: false
EOF


Kubernetes相关组件安装

组件核心作用
kubeadm集群初始化工具:kubeadm init搭建 master 控制平面、kubeadm join节点入网只负责搭集群、加节点,不管理容器
kubelet节点核心代理,对接 containerd,创建 / 销毁 Pod、上报节点状态(所有节点必装)真正干活创建、删除容器的执行者。
kubectl集群客户端命令行,kubectl get/describe管理集群资源,仅 master 需要把操作请求发给集群主控 apiserver:

集群所有节点安装Kubernetes安装源

1:集群所有节点安装Kubernetes安装源

       所有节点配置 K8s 阿里云 yum 源

cat <<EOF | tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.34/rpm/
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.34/rpm/repodata/repomd.xml.key
EOF
dnf makecache
2:集群所有节点查看本地仓库安装源中kubernetes相关安装包版本
dnf list kubeadm.x86_64 --showduplicates | sort -r

集群Master节点安装Kubernetesv1.34+组件

dnf install -y kubelet-1.34* kubeadm-1.34* kubectl-1.34*

集群所有Node节点安装Kubernetesv1.34+组件

dnf install -y kubelet-1.34* kubeadm-1.34*

集群所有节点配置kubelet参数

cat <<-EOF >/etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"
EOF

集群所有节点启动kubelet

 systemctl daemon-reload && systemctl enable --now kubelet

    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

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

    抵扣说明:

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

    余额充值