搭建Kubernetes (K8s) 集群----Centos系统

前期准备

准备3台Linux虚拟机(CentOS系统),参考

https://carry.blog.csdn.net/article/details/144578009https://carry.blog.csdn.net/article/details/144578009搭建Docker环境,参考

https://carry.blog.csdn.net/article/details/107404319https://carry.blog.csdn.net/article/details/107404319设置好镜像加速器:

编辑 daemon.json

复制代码
{
  "registry-mirrors": ["https://<your-aliyun-accelerator-address>"]
}

重启docker

systemctl daemon-reload

systemctl restart docker

一:配置主机名

每个节点分别设置对应主机名

复制代码
hostnamectl set-hostname master
hostnamectl set-hostname node1
hostnamectl set-hostname node2

二:添加 hosts

Host自己通过ifconfig查看,我自己的3台是192.168.153.128、192.168.153.130、192.168.153.131

vim /etc/hosts

复制代码
192.168.153.128 master

192.168.153.130 node1

192.168.153.131 node2

三:所有节点关闭 SELinux、防火墙 、禁用swap

复制代码
# 关闭 SELinux
setenforce 0
sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux

# 关闭防火墙
systemctl stop firewalld

systemctl disable firewalld

# 禁用swap,编辑 /etc/fstab 文件,注释包含swap的行
sudo vi /etc/fstab

四:添加 k8s 安装源

复制代码
vi ks.sh
 
# 添加一下内容
cat <<EOF > kubernetes.repo
[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
mv kubernetes.repo /etc/yum.repos.d/
 
# 运行shel
/bin/bash ks.sh

五:通过 yum 安装指定版本的 Kubernetes 组件(kubeletkubectlkubeadm

复制代码
yum install -y kubelet-1.22.4 kubectl-1.22.4 kubeadm-1.22.4
 
# 启动
systemctl enable kubelet
systemctl start kubelet

安装完成后,可以通过以下命令验证安装的版本:

复制代码
kubelet --version
kubectl version --client
kubeadm version

六:初始化集群

1. 初始化 Kubernetes 集群

首先,使用 kubeadm init 命令初始化主节点集群

复制代码
kubeadm init \
  --image-repository registry.aliyuncs.com/google_containers \
  --kubernetes-version v1.22.4 \
  --service-cidr=10.1.0.0/16 \
  --pod-network-cidr=10.244.0.0/16
  • --image-repository registry.aliyuncs.com/google_containers:指定使用阿里云的镜像仓库,避免从国外镜像源拉取时速度慢。
  • --kubernetes-version v1.22.4:指定 Kubernetes 的版本,确保与之前安装的版本一致。
  • --service-cidr=10.1.0.0/16:指定服务的网络地址范围,默认是 10.96.0.0/12,根据实际情况选择一个不冲突的 CIDR 范围。
  • --pod-network-cidr=10.244.0.0/16:指定 Pod 的网络地址范围,这里使用的是 Flannel 的默认网络范围。

2. 保存 kubeadm join 命令

初始化完成后,kubeadm 会输出一个 kubeadm join 命令,这个命令用于将其他工作节点加入集群。记得把这个命令保存下来。

如果忘记了,可以通过以下命令重新获取:

复制代码
kubeadm token create --print-join-command

返回值:

复制代码
kubeadm join xxxxx:6443 --token abcdef.1234567890abcdef --discovery-token-ca-cert-hash sha256:9e71e3f4d0246c5e2117a8c62c51ac4f78f82f1ff32d404a9f22c24a562b9b71

3. 配置 kubectl 访问集群

为了能够在主节点上使用 kubectl 命令管理 Kubernetes 集群,你需要将 admin.conf 文件复制到你的用户目录下的 .kube/config 中。

复制代码
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
  • mkdir -p $HOME/.kube:创建 .kube 目录(如果不存在的话)。
  • cp -i /etc/kubernetes/admin.conf $HOME/.kube/config:复制 Kubernetes 配置文件到用户目录。
  • chown $(id -u):$(id -g) $HOME/.kube/config:确保配置文件的权限是当前用户所有。

4. 其他节点配置

如果你有其他节点需要访问 Kubernetes 集群,可以将主节点上的 /etc/kubernetes/admin.conf 文件复制到其他节点的 ~/.kube/config 路径下。这样,其他节点也能使用 kubectl 访问集群。

在其他节点上执行以下命令:

复制代码
mkdir -p $HOME/.kube
scp user@master:/etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config

5. 安装网络插件

在集群初始化后,你需要安装一个网络插件来实现 Pod 之间的通信。常见的网络插件有 FlannelCalicoWeave 等。这里选择 Flannel,所有节点执行以下命令:

复制代码
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

完成网络插件安装后,节点之间的通信将建立,集群也就可以正常运行了。

6. 加入工作节点

在工作节点上执行 kubeadm join 命令,将节点加入集群,token就是上面第2步生成的。例如:

复制代码
kubeadm join <master-ip>:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash>

这样,工作节点就会加入到你的 Kubernetes 集群中了。

7. 验证集群状态

集群初始化和节点加入完成后,可以通过以下命令验证集群状态,比如在主节点执行:

复制代码
kubectl get nodes

所有节点的状态都是ready代表节点都正常

相关推荐
运维老郭1 天前
【K8s运维实战】Kubernetes临时存储卷实战:emptyDir核心用法与gitRepo弃用迁移指南
运维·云原生·kubernetes
AAA@峥1 天前
容器数据不丢失:Docker 分层存储 + Volume 共享、备份迁移完整指南
运维·docker·容器
2601_961593421 天前
Mac 上搭建Linux环境吗?VMware + CentOS Stream 9 镜像快速部署
linux·运维·ide·macos·centos
十年磨一剑~1 天前
docker 为何每次 docker tag才能 docker push
docker·容器·eureka
gs801401 天前
记一次多 Agent 架构在单节点 K8s 触发的 PID 耗尽与 Pod 驱逐(Evicted)大摸排
容器·架构·kubernetes
bukeyiwanshui1 天前
20260701 k8s Metric Server
容器·贪心算法·kubernetes
江湖有缘1 天前
基于Docker环境部署tillywork开源工作管理工具
docker·容器·开源
2601_961593421 天前
Mac 虚拟机跑 Linux 选哪个?CentOS 8 稳定版适配方案
linux·macos·centos
鸿儒5171 天前
MR-50国产化GPU docker配置方法
docker·容器·mr