kubeadm 搭建k8s 1.28.2版本集群

server/2024/10/15 15:35:19/

kubeadm 搭建k8s 1.28.2版本集群

1、kubuadm介绍:

kubeadm 是官方社区推出的一个用于快速部署kubernetes 集群的工具,这个工具能通过两条指令完成一个kubernetes 集群的部署:

  • 创建一个Master 节点kubeadm init
  • 将Node 节点加入到当前集群中$ kubeadm join <Master 节点的IP 和端口>

2、安装要求:

在开始之前,部署Kubernetes 集群机器需要满足以下几个条件:

  • 一台或多台机器,操作系统CentOS7.x-86_x64

    在这里插入图片描述

  • 硬件配置:2GB 或更多RAM,2 个CPU 或更多CPU,硬盘30GB 或更多

    CPU:2核

    内存:2G以上

    磁盘:30G以上

  • 集群中所有机器之间网络互通

  • 可以访问外网,需要拉取镜像

  • 禁止swap 分区

3、环境初始化:(每个节点)

1)使用主机名解析:

# 每个节点都添加master、worker
echo '''
192.168.80.10 node01
192.168.80.20 node02
192.168.80.30 node03
''' >> /etc/hosts

2)关闭防火墙,selinux,swap分区、时间同步

# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
# 关闭selinux
sed -i 's/enforcing/disabled/' /etc/selinux/config
# 关闭swap
sed -ri 's/.*swap.*/#&/' /etc/fstab# 时间同步:
yum install ntpdate -y
ntpdate ntp.ntsc.ac.cn
# 或
# crontab -l
0 */1 * * * /usr/sbin/ntpdate time1.aliyun.com

3)添加网桥过滤和地址转发功能:

#将桥接的IPv4,IPV6流量传递到iptables的链:
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
vm.swappiness = 0
EOF# 重新加载配置
sysctl -p
# 加载网桥过滤模块
modprobe br_netfilter
# 查看网桥过滤模块是否加载成功
lsmod | grep br_netfilter

4)配置ipvs功能

在Kubernetes中Service有两种带来模型,一种是基于iptables的,一种是基于ipvs的两者比较的话,ipvs的性能明显要高一些,但是如果要使用它,需要手动载入ipvs模块。

yum install ipset ipvsadmin -ycat > /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# 3.为脚本添加执行权限
chmod +x /etc/sysconfig/modules/ipvs.modules
# 4.执行脚本文件
bash /etc/sysconfig/modules/ipvs.modules
# 5.查看对应的模块是否加载成功
lsmod | grep -e ip_vs -e nf_conntrack_ipv4

在这里插入图片描述

5)搭建国内yum源

cat > /home/soft/yum.sh <<EOF
#!/bin/bash
# 备份初始源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup# 下载yum源
# wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo# 更新缓存
yum clean all
yum makecache
EOF# 使用脚本:
bash /home/soft/yum.sh

4、部署docker

1)编写脚本进行安装:

cat > /home/soft/docker_install.sh <<EOF
#!/bin/bash 
#file:docker_install.sh 
echo "--检查内核版本......--"
yum -y install bc &> /dev/null
kenel=`uname -r`
ken=`echo ${kenel:0:4}`
if [ $(echo "${ken} >= 3.10" | bc) = 1 ]
thenecho "--检查Docker......!--"docker -v &> /dev/nulla=`echo $?`while [ $a -ne 0 ]; doecho "--安装docker环境...--"echo "--安装基础依赖...--"yum install yum-utils device-mapper-persistent-data lvm2 -y &> /dev/nullecho "--安装docker-ce.repo--"cd /etc/yum.repo.dyum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo &> /dev/nullecho "--安装docker环境...--"yum install docker-ce -ydocker -v &> /dev/nulla=`echo $?`doneecho "--安装完成!启动Docker--"systemctl start dockersystemctl enable dockerecho "----网络优化----"sed -i '$a net.ipv4.ip_forward=1' /etc/sysctl.confsysctl -psystemctl restart networksystemctl restart dockerdocker version
elseecho "--内核版本太低,请您升级内核版本!--"
fi
EOF# 使用脚本:
bash /home/soft/docker_install.sh

2)配置镜像加速

vi /home/soft/docker_net.sh
#!/bin/bash
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://mirror.ccs.tencentyun.com","https://nolrm62o.mirror.aliyuncs.com","https://dockerproxy.com","https://mirror.baidubce.com","https://docker.m.daocloud.io","https://docker.nju.edu.cn","https://docker.mirrors.sjtug.sjtu.edu.cn"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker# 使用脚本:
bash /home/soft/docker_net.sh

5、部署cri-dockerd 组件

**Kubernetes1.24 之后, ** 在k8s中使用docker,除了安装docker 以外,还需要安装cri-dockerd 组件; 不然就使用Containerd。

在这里插入图片描述

1)项目下载地址:

cri-docker:https://github.com/Mirantis/cri-dockerd

在这里插入图片描述
在这里插入图片描述

手动下载再上传包,或者直接下载:

# 下载
wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.14/cri-dockerd-0.3.14.amd64.tgz
tar -xf cri-dockerd-0.3.14.amd64.tgz
cp cri-dockerd/cri-dockerd /usr/bin/
chmod +x /usr/bin/cri-dockerd# 配置启动文件
cat <<"EOF" > /usr/lib/systemd/system/cri-dockerd.service
[Unit]
Description=CRI Interface for Docker Application Container Engine
Documentation=https://docs.mirantis.com
After=network-online.target firewalld.service docker.service
Wants=network-online.target
Requires=cri-docker.socket[Service]
Type=notifyExecStart=/usr/bin/cri-dockerd --network-plugin=cni --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.9ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=alwaysStartLimitBurst=3StartLimitInterval=60sLimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinityTasksMax=infinity
Delegate=yes
KillMode=process[Install]
WantedBy=multi-user.target
EOF# 生成socket 文件cat <<"EOF" > /usr/lib/systemd/system/cri-docker.socket
[Unit]
Description=CRI Docker Socket for the API
PartOf=cri-docker.service[Socket]
ListenStream=%t/cri-dockerd.sock
SocketMode=0660
SocketUser=root
SocketGroup=root[Install]
WantedBy=sockets.targetEOF# 启动CRI-DOCKER
systemctl daemon-reload
systemctl start cri-docker
systemctl enable cri-docker
systemctl is-active cri-docker

6、安装k8s组件(所有节点,master、worker)

  • 下面使用阿里云镜像

Kubernetes是一个开源系统,用于容器化应用的自动部署、扩缩和管理。它将构成应用的容器按逻辑单位进行分组以便于管理和发现。

kubernetes__298">1)新版 kubernetes

新版 kubernetes 源使用方法和之前有一定区别,请求按照如下配置方法配置使用。

其中新版 kubernetes 源按照安装版本区分不同仓库,该文档示例为配置 1.28 版本,如需其他版本请在对应位置字符串替换即可。

(比如需要安装 1.29 版本,则需要将如下配置中的 v1.28 替换成 v1.29)

(目前该源支持 v1.24 - v1.29 版本,后续版本会持续更新)

# Debian / Ubuntu
apt-get update && apt-get install -y apt-transport-https
curl -fsSL https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.28/deb/Release.key |gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.28/deb/ /" |tee /etc/apt/sources.list.d/kubernetes.list
apt-get update
apt-get install -y kubelet kubeadm kubectl
# CentOS / RHEL / Fedora
cat <<EOF | tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.28/rpm/
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.28/rpm/repodata/repomd.xml.key
EOFyum install -y kubelet kubeadm kubectl
systemctl enable kubelet && systemctl start kubelet

ps: 由于官网未开放同步方式, 可能会有索引gpg检查失败的情况, 这时请用 yum install -y --nogpgcheck kubelet kubeadm kubectl 安装

2)旧版配置方法:

目前由于kubernetes官方变更了仓库的存储路径以及使用方式,旧版 kubernetes 源只更新到 1.28 部分版本,后续更新版本请使用 新源配置方法 进行配置。

  • Debian / Ubuntu
    apt-get update && apt-get install -y apt-transport-https
    curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add - 
    cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
    deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
    EOF
    apt-get update
    apt-get install -y kubelet kubeadm kubectl
    
  • CentOS / RHEL / Fedora
    cat <<EOF > /etc/yum.repos.d/kubernetes.repo
    [kubernetes]
    name=Kubernetes
    baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
    enabled=1
    gpgcheck=1
    repo_gpgcheck=1
    gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
    EOFyum install -y kubelet kubeadm kubectl
    systemctl enable kubelet && systemctl start kubelet
    

3)指定版本安装:

由于版本更新频繁,可以指定版本号部署:

# 查看所有的可用版本
$ yum list  kubeadm  kubelet kubectl --showduplicates | sort -r#在所有节点安装
$ yum install -y kubelet-1.28.2-0 kubeadm-1.28.2-0 kubectl-1.28.2-0$ systemctl enable kubelet && systemctl start kubelet

4)准备集群镜像

在安装kubernetes集群之前,必须要提前准备好集群需要的镜像,所需镜像可以通过下面命令查看。

kubeadm config images listimages=$(kubeadm config images list |awk -F'/' '{print $NF}')
for imageName in ${images[@]};dodocker pull registry.cn-hangzhou.aliyuncs.com/google_containers/$imageNamedocker tag registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName k8s.gcr.io/$imageNamedocker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName 
done

7、初始化集群:(以下操作只在master节点)

下面的操作只需要在master节点上执行即可

kubeadm init \--apiserver-advertise-address=192.168.80.10 \--image-repository registry.aliyuncs.com/google_containers \--kubernetes-version=1.28.2 \--service-cidr=10.96.0.0/12 \--pod-network-cidr=10.244.0.0/16 \--cri-socket=unix:///var/run/cri-dockerd.sock# 创建必要文件
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config# 在master上查看节点信息
kubectl get nodes
NAME    STATUS   ROLES     AGE   VERSION
master  NotReady  master   6m    v1.28.2
node1   NotReady   <none>  22s   v1.28.2
node2   NotReady   <none>  19s   v1.28.2

8、worker几点加入master节点:

注意:要配置–cri-socket

kubeadm join 192.168.80.10:6443 --token scpmy7.b041n8xajn3oumt8 \
> --discovery-token-ca-cert-hash sha256:92ad0ffcbd4db9cec5f1f6f2bee80067290ca627f5667c4656a84ace9f8aa9b7 --cri-socket=unix:///var/run/cri-dockerd.sock

9、k8s命令tab补全(以下操作只在master节点)

kubectl 依赖于 bash-completion 来实现命令补全。

# 安装 bash-completion 包
yum install -y bash-completion# 配置 bash-completion
source /usr/share/bash-completion/bash_completion
echo 'source <(kubectl completion bash)' >>/root/.bashrc

10、安装网络插件:(以下操作只在master节点)

由于外网不好访问,如果出现无法访问的情况,可以直接用下面的 记得文件名是kube-flannel.yml,位置:/root/kube-flannel.yml内容:

wget https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml

如果下不下来,可以先下载到本地再上传到服务器。

使用配置文件启动fannel。

kubectl apply -f kube-flannel.yml# 等待它安装完毕 发现已经是 集群的状态已经是Ready
kubectl get nodes

在这里插入图片描述


http://www.ppmy.cn/server/132246.html

相关文章

FLINK SQL 任务参数

在Flink SQL任务中&#xff0c;参数配置对于任务的性能和稳定性至关重要。以下是对运行时参数、优化器参数和表参数的详细解析&#xff1a; 一、运行时参数 运行时参数主要影响Flink作业在执行过程中的行为。以下是一些关键的运行时参数&#xff1a; 并行度&#xff08;Para…

[mysql]多表查询详解

我们如果要查询,我们就要用 SELECT .... FROM .... WHERE AND/OR/NOT #我们需要用过滤的条件来对数据进行筛选,不然会有很多多余数据 ORDER BY (ASC/DESC)#排序 LIMIT....,#是在几个有限的数据库管理系统里所以,PGsql,mysql,等 多表查询的意义 我们目前为止的查询语句…

【漏洞复现】万户OA-ezOFFICE upload.jsp 任意文件上传漏洞

免责声明: 本文旨在提供有关特定漏洞的信息,以帮助用户了解潜在风险。发布此信息旨在促进网络安全意识和技术进步,并非出于恶意。读者应理解,利用本文提到的漏洞或进行相关测试可能违反法律或服务协议。未经授权访问系统、网络或应用程序可能导致法律责任或严重后果…

数据结构-排序1

1.排序的概念 排序&#xff1a;所谓排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作。 稳定性&#xff1a;假定在待排序的记录序列中&#xff0c;存在多个具有相同的关键字的记录&#xff0c;若经过排序…

巨日禄AI故事转漫画视频创作教程

【一】新建作品 添加剧本&#xff0c;从30多个画风中选择一个匹配文案的画风。如果拿不准可以参考样图。巨日禄可以一次性制作6000字&#xff0c;20分钟以上的视频。&#xff08;第一次限制了1000字&#xff0c;仅为新用户更完整体验整个流程&#xff09; 【二】选择画风 那文…

基础篇:带你打开Vue的大门(一)

学习目标&#xff1a; 理解Vue的基本概念&#xff1a;掌握Vue.js是什么&#xff0c;它的设计理念&#xff0c;以及它在现代Web开发中的应用。掌握Vue的基本语法&#xff1a;学习Vue的基础指令和语法&#xff0c;能够使用Vue构建简单的交互式界面。熟悉Vue组件化开发&#xff1…

C4T避风型电动采光排烟天窗(图集09J621-2)

C4T避风型电动采光排烟天窗是09J621-2《电动采光排烟天窗》图集中的一种窗型。也是一种现代化的建筑消防排烟通风采光设备&#xff0c;被广泛应用于多风地区厂房。 C4T避风型电动采光排烟天窗配有成品避风罩&#xff0c;该避风置由钢制骨架和彩色钢板构成&#xff0c;固定在电动…

centos的yum源网上下载找不到问题

然后找了大半天最后发现找的位置不对最好都找到的地址&#xff1a;centos-vault-7.6.1810-isos-x86_64安装包下载_开源镜像站-阿里云 因该去centos-vault这个目录下找就能找到centos是目前维护的目录 最新版去下面的地址 centos安装包下载_开源镜像站-阿里云