2024-09-05
学习
00
请注意,本文编写于 280 天前,最后修改于 232 天前,其中某些信息可能已经过时。

目录

Kubernetes 集群搭建指南
一、k8s 集群平台规划
二、集群环境硬件配置要求
三、k8s 集群搭建(Kubeadm 方式)
四、方法总结

Kubernetes 集群搭建指南

一、k8s 集群平台规划

  1. 单 master 集群:只有一个 master 节点,若 master 节点出现问题,其管理的各个 node 节点会受影响。
  2. 多 master 集群(推荐):包含多个 master 节点,通过负载均衡管理 node 节点,具有高可用性,即使一个 master 节点出现问题,也不影响其他节点。

二、集群环境硬件配置要求

  • 提示:以下配置适用于基于虚拟机的测试环境,基于服务器的生产环境需更高配置。
  • master 节点
    • CPU:两核及以上。
    • 内存:4G 及以上。
    • 硬盘:20G 及以上。
  • node 节点:作为“具体做事”的节点,配置要求更高。
    • CPU:四核及以上。
    • 内存:8G 及以上。
    • 硬盘:40G 及以上。

三、k8s 集群搭建(Kubeadm 方式)

  1. 主机准备
    • 准备三台虚拟机,安装 CentOS 系统,一台作为 master 节点,另两台作为 node 节点,且每台虚拟机有专属 IP 地址。
    • 虚拟机创建和配置要点:
      • 硬件按上文要求配置。
      • 虚拟机之间可网络互通。
      • 可访问外网以便下载镜像。
      • 安装 wget 工具(yum install wget)。
      • 禁止 swap 分区。
  2. 系统初始化
    • 关闭防火墙:
      • 临时关闭:systemctl stop firewalld
      • 永久关闭:systemctl disable firewalld
    • 关闭 selinux:
      • 永久关闭:sed -i '/selinux/s/enforcing/disabled/' /etc/selinux/config
      • 临时关闭:setenforce 0
    • 关闭 swap:
      • 临时关闭:swapoff -a
      • 永久关闭:sed -ri 's/.*swap.*/#&/' /etc/fstab
    • 设置主机名称:使用命令hostnamectl set-hostname 主机名,如三台主机分别设置为:
      • hostnamectl set-hostname master
      • hostnamectl set-hostname node1
      • hostnamectl set-hostname node2
      • 查看当前主机名称:hostname
    • 在 master 节点中添加 hosts(节点 IP 地址+节点名称):
      • cat >> /etc/hosts << EOF 192.168.200.132 master 192.168.200.133 node1 192.168.200.134 node2 EOF
    • 将桥接的 IPv4 流量传递到 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
    • 时间同步:让各个节点时间与本机时间保持一致。
      • yum install ntpdate -y
      • ntpdate time.windows.com
  3. Docker 的安装
    • Kubernetes 默认容器运行时为 Docker,需在各个节点安装 Docker。安装后,后续操作在 docker 服务开启前提下进行(systemctl start docker)。
  4. 添加 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
  5. kubeadm、kubelet、kubectl 的安装
    • 指定版本为 1.18.0(不指定默认下载最新版本)。
    • yum install -y kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0
    • 开机自启动:systemctl enable kubelet
  6. 在 Master 节点中部署集群
    • 在 master 节点执行以下命令,注意修改 master 节点 IP 和 kube 版本号:
      • kubeadm init \ --apiserver-advertise-address=192.168.200.132 \ --image-repository registry.aliyuncs.com/google_containers \ --kubernetes-version v1.18.0 \ --service-cidr=10.96.0.0/12 \ --pod-network-cidr=10.244.0.0/16
    • 执行完成后,使用docker images查看镜像,此时所需镜像应已安装完成。看到initialized successfully说明 master 节点上的 k8s 集群搭建成功。
  7. 将 node 节点加入集群
    • 查看上一步执行成功后的提示信息,有两条命令:
      • ①开启 kubectl 工具使用(在 master 节点执行):
        • mkdir -p $HOME/.kube
        • sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
        • sudo chown $(id -u):$(id -g) $HOME/.kube/config
      • ②将 node 节点加入 master 中的集群(在工作节点 node 执行):
        • kubeadm join 192.168.200.132:6443 --token pahgrt.7gn13u88wz4f89an \ --discovery-token-ca-cert-hash sha256:7f73daa421d7564a6f813985a03f860350a923967d05cd955f8223d56200eb5b
    • 分别在 master 节点执行第①条命令,在各个 node 节点执行第②条命令。执行完成后,在 master 节点使用kubectl get nodes查看工作节点。
  8. 部署 CNI 网络插件
    • 在 master 节点执行以下命令进行配置:kubectl apply -f https://docs.projectcalico.org/v3.10/manifests/calico.yaml
    • 使用kubectl get pods -n kube-system查看运行状态。
    • 再次使用kubectl get nodes查看集群中的工作节点,处于开机状态的 master 节点和部分 node 节点应为 ready 状态,关闭状态的 node 节点为 NoReady 状态。

四、方法总结

Kubeadm 搭建 k8s 集群步骤:

  1. 准备三台虚拟机,分别安装 CentOS 操作系统,一台作为 master 节点,两台作为 node 节点。
  2. 对虚拟机进行初始化操作。
  3. 在所有节点安装 docker、kubeadm、kubelet、kubectl。
  4. 在 master 节点使用kubeadm init命令部署集群。
  5. 在 node 节点使用kubeadm join命令将 node 节点添加至集群。
  6. 部署网络插件 CNI。

本文作者:han

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!