目 录CONTENT

文章目录

Kubernetes 集群搭建方案-kubeadm

BKUN
2024-07-01 / 0 评论 / 0 点赞 / 555 阅读 / 1,006 字

🚀 Kubernetes 集群搭建方案

这是一个详细的 Kubernetes 集群搭建指南,适用于 CentOS 7 环境。让我们一步步完成吧!📜


1️⃣ 服务器要求

  • 数量:3 台服务器(虚拟机)
    • k8s-master192.168.113.120
    • k8s-node1192.168.113.121
    • k8s-node2192.168.113.122
  • 最低配置:2 核 CPU、2G 内存、20G 硬盘
  • 网络要求:最好能联网;若无法联网,需提供私有镜像仓库

2️⃣ 软件环境

  • 操作系统:CentOS 7
  • Docker:20+ 版本
  • Kubernetes:1.23.6

3️⃣ 系统初始化

在所有节点执行以下操作,确保环境准备就绪!⚙️

3.1 关闭防火墙

systemctl stop firewalld
systemctl disable firewalld

🔥 关闭防火墙,避免端口冲突。

3.2 关闭 SELinux

SELinux 是 Linux 的安全子系统,默认启用可能影响 Kubernetes。

sed -i 's/enforcing/disabled/' /etc/selinux/config  # 永久关闭
setenforce 0  # 临时关闭

3.3 关闭 Swap

Swap 是磁盘上的虚拟内存,可能干扰 Kubernetes 的内存管理。

swapoff -a  # 临时关闭
vim /etc/fstab  # 永久关闭(注释掉 swap 挂载行)

3.4 设置主机名

hostnamectl set-hostname <hostname>  # 例如 k8s-master、k8s-node1
hostname  # 验证主机名

3.5 配置 Master 的 Hosts

k8s-master 上添加节点映射:

cat >> /etc/hosts << EOF
192.168.113.120 k8s-master
192.168.113.121 k8s-node1
192.168.113.122 k8s-node2
EOF

3.6 桥接 IPv4 流量到 iptables

确保 Kubernetes 的网络通信正常:

cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system  # 生效

3.7 时间同步

保持节点时间一致,避免集群问题:

yum install ntpdate -y
ntpdate time.windows.com

4️⃣ 所有节点安装组件

在所有节点(Master 和 Node)安装 Docker 和 Kubernetes 组件。

4.1 安装 Docker

wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
yum -y install docker-ce-18.06.1.ce-3.el7
systemctl enable docker && systemctl start docker
docker --version

4.2 配置阿里云源

Docker 镜像加速

cat > /etc/docker/daemon.json << EOF
{
  "registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"]
}
EOF
systemctl restart docker
docker info  # 验证配置

Kubernetes 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.aliyuncs.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyuncs.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

4.3 安装 kubeadm、kubelet、kubectl

  • kubeadm:初始化和管理集群
  • kubelet:运行在节点上,管理容器
  • kubectl:命令行工具,操作集群
yum install -y kubelet-1.23.6 kubeadm-1.23.6 kubectl-1.23.6
systemctl enable kubelet
kubelet --version
# 配置 Docker 使用 systemd cgroup
vim /etc/docker/daemon.json  # 添加 {"exec-opts": ["native.cgroupdriver=systemd"]}
systemctl daemon-reload
systemctl restart docker
systemctl restart kubelet
docker info | grep Driver  # 验证驱动为 systemd

5️⃣ 节点初始化

5.1 部署 Kubernetes Master

k8s-master 执行:

kubeadm init \
  --apiserver-advertise-address=192.168.113.120 \
  --image-repository registry.aliyuncs.com/google_containers \
  --kubernetes-version v1.23.6 \
  --service-cidr=10.96.0.0/12 \
  --pod-network-cidr=10.244.0.0/16

初始化成功后,配置 kubectl:

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
kubectl get nodes  # 检查节点状态(初始为 NotReady)

5.2 加入 Kubernetes Node

k8s-node1k8s-node2 执行 kubeadm join 命令(从 Master 初始化输出中获取,例如):

kubeadm join 192.168.113.120:6443 --token ye0jj6.o167p2j6w6iswakc \
  --discovery-token-ca-cert-hash sha256:4cedeb6fe5fabca6a3446071627c84e11250223196662f707af11cc1cc2c6174

注意事项

  1. Token 丢失或过期
    • 获取现有 Token:kubeadm token list
    • 创建新 Token:kubeadm token create
  2. 获取 CA 证书 Hash
    openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | \
    openssl dgst -sha256 -hex | sed 's/^.* //'
    
  3. 加入失败
    • 在 Master 上重新生成 Join 命令:
      kubeadm token create --print-join-command
      
    • 在 Node 上执行新命令,例如:
      kubeadm join 192.168.113.120:6443 --token hpifm2.vmykiv1angcbppey \
        --discovery-token-ca-cert-hash sha256:a9e9de7f36cde303f930ec7ec546e888b5e2fca957b4b60f6b05954cb2195c13
      
0

评论区