文章最后更新时间:
![图片[1]- kubeadm搭建k8s v1.28.0- 如烟笔记](https://img-1259613606.cos.ap-nanjing.myqcloud.com/LightPicture/2024/12/4910dc4efc46ba96.jpeg)
kubeadm搭建k8s v1.28.0(已成功搭建)
环境配置
单节点 k8s-master:4核8G、50GB硬盘、CentOS7.9(内网IP:10.0.17.2)
# 查看配置
cat /etc/*release
![图片[2]- kubeadm搭建k8s v1.28.0- 如烟笔记](https://blog.iosru.com/wp-content/uploads/2024/12/20241205170730727-4bc828674642606e081c08e56f2d2b62.webp)
初始化配置
关闭selinux、swap
# 关闭 Selinux:防止服务可能无法启动(企业中基本上都会选择关闭)
sed -i 's/enforcing/disabled/' /etc/selinux/config
setenforce 0
# 关闭 Swap:防止 kubelet 组件无法启动
swapoff -a
sed -ri 's/.*swap.*/#&/' /etc/fstab
![图片[3]- kubeadm搭建k8s v1.28.0- 如烟笔记](https://blog.iosru.com/wp-content/uploads/2024/12/20241205170856252-c9dbbdf29986367e34775cfc0e8b54fa.webp)
设置主机名
# 主服务器(bash显示主机名)
hostnamectl set-hostname 10.0.17.2
启动内核参数iptables
# 访问网络插件丢包
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
# 生效配置
sysctl --system
![图片[4]- kubeadm搭建k8s v1.28.0- 如烟笔记](https://blog.iosru.com/wp-content/uploads/2024/12/20241205171021877-a60fe607fc1e063d4d3217def6c9ee4a.webp)
安装docker&配置加速
安装docker
# 1 配置阿里云镜像源
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
# 2 yum安装docker
yum -y install docker-ce
![图片[5]- kubeadm搭建k8s v1.28.0- 如烟笔记](https://blog.iosru.com/wp-content/uploads/2024/12/20241205171108913-867ff7c6ccb081b699bbbf94c3142522.webp)
配置docker加速
# 启动docker
systemctl enable docker && systemctl start docker
# 配置docker镜像加速
# 配置加速器
cat > /etc/docker/daemon.json << EOF
{
"registry-mirrors": ["https://8er86g8v.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"]
}
EOF
# 重启 Docker
systemctl restart docker
安装cri-dockerd(docker与k8s通信的中间程序:翻译官)
# 安装cri-dockerd(docker与k8s通信的中间程序)
# 下载
wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.2/cri-dockerd-0.3.2-3.el7.x86_64.rpm
# 安装
rpm -ivh cri-dockerd-0.3.2-3.el7.x86_64.rpm
修改cri-docker镜像地址
# 修改cri-docker依赖的镜像地址
# 修改配置
vim /usr/lib/systemd/system/cri-docker.service
# 将 ExecStart 配置改成下述这样:
ExecStart=/usr/bin/cri-dockerd --container-runtime-endpoint fd:// --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.9
![图片[6]- kubeadm搭建k8s v1.28.0- 如烟笔记](https://blog.iosru.com/wp-content/uploads/2024/12/20241205171301616-7fdbb9e0d4448d7f9020cd9b359834a4.webp)
重新加载cri-docker
systemctl daemon-reload
systemctl enable cri-docker && systemctl start cri-docker
3 部署k8s
安装kubeadm&kubelet&kubectl
kubectl:命令行工具,用于向APIServer发送指令,创建pod、Deployment等。
kubelet :是在每个节点上运行的代理,它负责接受主节点上的 API Server下放的指令,它还负责监控 Pod 的状态,并向 API Server 报告状态更新。此外,kubelet 与容器运行时(如 Docker 或 containerd)交互,以启动和管理容器。
用户通过kubectl向API Server发送指令,API Server接受到指令后交给kubelet去执行对应操作,同时kubelet定期上报信息给API Server。
# 1 添加yum源仓库
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
# 2 安装kubeadm、kubelet、kubectl
# 安装工具
yum install -y kubelet-1.28.0 kubeadm-1.28.0 kubectl-1.28.0
# 设置开机自启
systemctl enable kubelet
执行kubeadm init初始化集群
# apiserver-advertise-address 设置为主机内网ip地址
# --apiserver-advertise-address=10.16.64.67 配置k8s apiserver地址,用于监听、响应其他节点请求
# --service-cidr=10.96.0.0/12 配置k8s Service的IP范围
# --pod-network-cidr=10.244.0.0/16 配置k8s pod的IP范围
kubeadm init \
--apiserver-advertise-address=10.16.64.67 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.28.0 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16 \
--cri-socket=unix:///var/run/cri-dockerd.sock
出现下述输出,说明安装完成:
![图片[7]- kubeadm搭建k8s v1.28.0- 如烟笔记](https://blog.iosru.com/wp-content/uploads/2024/12/20241205171515926-5aeaa20acbeb045343b6e08aa45290da.webp)
按照控制台输出提示,在 Master 节点中执行上述图片中的命令:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
安装Calico网络插件,让node间通信
下面我们可以按照提示在Master节点
执行kubectl get nodes
查看集群节点信息。可以看到虽然其他节点加入了k8s集群,但状态是NotReady不正常的,这是因为没有下载网络插件进行通信:
![图片[8]- kubeadm搭建k8s v1.28.0- 如烟笔记](https://blog.iosru.com/wp-content/uploads/2024/12/20241205171624397-c4b18ca5140956d9a7b8536b8daaedb7.webp)
此时需要安装 Calico 网络插件,通过下述命令进行下载 calico.yaml 文件:
# 下载 calico.yaml 文件
cd ~
wget https://xuzhibin-bucket.oss-cn-beijing.aliyuncs.com/k8s/calico.yaml
下载完毕后,修改 calico.yaml 文件中的 CALICO_IPV4POOL_CIDR
配置,修改成上面 pod-network-cidr 的值:10.244.0.0/16(初始化k8s集群时,在master节点上执行的那个kubeadm init命令),如下所示:
# 通过calico来完成node间的通信
vim calico.yaml
![图片[9]- kubeadm搭建k8s v1.28.0- 如烟笔记](https://blog.iosru.com/wp-content/uploads/2024/12/20241205171732946-ca3a5a8a2692a916cf18cb5d27ca1c56.webp)
修改完毕后,Master 应用配置文件:
kubectl apply -f calico.yaml
![图片[10]- kubeadm搭建k8s v1.28.0- 如烟笔记](https://blog.iosru.com/wp-content/uploads/2024/12/20241205171804742-1cba24562b8f118e69298dcc901ceea5.webp)
等待3分钟后,查看 Pod 运行状态,发现 pods 全部状态为 Running 成功,这样就说明 部署完毕了!
kubectl get pods -A -o wide
![图片[11]- kubeadm搭建k8s v1.28.0- 如烟笔记](https://blog.iosru.com/wp-content/uploads/2024/12/20241205171910289-8d4c6e5195e6cb0f6fcd1dbd6529a965.webp)
![图片[12]- kubeadm搭建k8s v1.28.0- 如烟笔记](https://blog.iosru.com/wp-content/uploads/2024/12/20241205171952921-29e41b9584b0712d6be4b07d1e54213c.webp)
本站收集的资源仅供内部学习研究软件设计思想和原理使用,学习研究后请自觉删除,请勿传播,因未及时删除所造成的任何后果责任自负。
如果用于其他用途,请购买正版支持作者,谢谢!若您认为「RuYan」发布的内容若侵犯到您的权益,请联系站长邮箱:axspring@qq.com 进行删除处理。
本站资源大多存储在云盘,如发现链接失效,请联系我们,我们会第一时间更新。
暂无评论内容