在MacOS上使用kubeadm部署Kubernetes(k8s)集群的具体步骤是什么?

问题浏览数Icon
33
问题创建时间Icon
2025-04-04 04:15:00
作者头像
hongliang33
  1. 前置条件:在MacOS上安装虚拟机工具(如Multipass或VirtualBox),创建至少2个Ubuntu虚拟机(1个master,1+个worker)。
  2. 所有节点执行:
    • sudo apt update && sudo apt install -y docker.io
    • 配置docker镜像加速并设置开机自启:sudo systemctl enable docker
    • 安装kubeadm组件: curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - echo 'deb https://apt.kubernetes.io/ kubernetes-xenial main' | sudo tee /etc/apt/sources.list.d/kubernetes.list sudo apt update && sudo apt install -y kubeadm kubelet kubectl
  3. Master节点初始化: sudo kubeadm init --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=<虚拟机IP> 按提示保存join命令
  4. 配置kubectl: mkdir -p $HOME/.kube sudo cp /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
  5. 安装网络插件: kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml
  6. Worker节点执行master提供的kubeadm join命令加入集群
  7. 验证:kubectl get nodes 应显示所有节点为Ready状态 注:需确保虚拟机间网络互通,关闭swap(sudo swapoff -a),且需配置国内镜像源加速组件下载。

更多回答

作者头像
smallnest66
  1. 准备虚拟化环境

    • 在MacOS上安装VirtualBox/VMware Fusion及Vagrant。
    • 通过Vagrant创建2台Ubuntu虚拟机(1主1从),示例Vagrantfile配置网络、内存(≥2GB/节点)、CPU(≥2核/节点)。
  2. 节点基础配置

    • 所有节点执行:
      sudo swapoff -a
      sudo sed -i '/ swap / s/^/#/' /etc/fstab
      echo "<主节点IP> master" | sudo tee -a /etc/hosts
    • 设置时间同步:sudo apt install ntpdate && sudo ntpdate time.windows.com
  3. 安装容器运行时及K8s组件

    • 所有节点执行:

      # 安装Docker
      curl -fsSL https://get.docker.com | bash
      sudo usermod -aG docker $USER
      
      # 安装kubeadm/kubelet/kubectl
      sudo apt-get update && sudo apt-get install -y apt-transport-https
      curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
      echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
      sudo apt-get update
      sudo apt-get install -y kubelet=1.28.0-00 kubeadm=1.28.0-00 kubectl=1.28.0-00
      sudo apt-mark hold kubelet kubeadm kubectl
  4. 主节点初始化

    sudo kubeadm init \
     --apiserver-advertise-address=<主节点IP> \
     --pod-network-cidr=192.168.0.0/16 \
     --image-repository registry.aliyuncs.com/google_containers
    
    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
    • 记录输出的kubeadm join命令备用。
  5. 部署网络插件(Calico)

    kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.26.1/manifests/calico.yaml
  6. 工作节点加入集群

    • 在工作节点执行主节点提供的kubeadm join命令(需带--v=5参数调试时添加)。
  7. MacOS本地管理配置

    • 将主节点的/etc/kubernetes/admin.conf复制到MacOS的~/.kube/config,使用scp命令。
    • 安装kubectl:brew install kubectl
    • 验证:kubectl get nodes -o wide

故障排查要点

  • 节点NotReady:检查calico Pod是否Running、kubelet日志(journalctl -u kubelet -f
  • 镜像拉取失败:在kubeadm init时指定阿里云镜像仓库
  • 证书问题:删除/etc/kubernetes/pki后重新init
作者头像
netchase88

是否考虑过使用Minikube或Docker Desktop内置的Kubernetes功能,它们在MacOS上的部署更为便捷且兼容性更好?

作者头像
凌霄1126
  1. 安装虚拟机(如Multipass)创建Ubuntu实例: brew install multipass multipass launch --name master --cpus 2 --mem 2G --disk 10G multipass launch --name worker1 --cpus 1 --mem 1G --disk 5G

  2. 在所有节点执行准备命令:

    sudo apt update && sudo apt install -y docker.io curl
    sudo systemctl enable docker
    curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-archive-keyring.gpg
    echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main' | sudo tee /etc/apt/sources.list.d/kubernetes.list
    sudo apt update && sudo apt install -y kubeadm kubelet kubectl
    sudo swapoff -a
  3. 仅在master节点初始化集群: sudo kubeadm init --pod-network-cidr=10.244.0.0/16 按提示保存join命令

  4. 配置kubectl访问权限: mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config

  5. 安装网络插件: kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml

  6. worker节点加入集群: 使用步骤3保存的join命令,前加sudo执行

  7. 在Mac安装kubectl管理集群: brew install kubectl 从master节点复制/admin.conf到本地~/.kube/config

作者头像
tianhe01

在MacOS上直接使用kubeadm部署Kubernetes集群不可行,因kubeadm依赖Linux内核组件。建议采用以下方案:1. 使用Multipass创建Ubuntu虚拟机(multipass launch --name k8s-node);2. 在虚拟机内执行标准kubeadm流程:a) 安装containerd/kubelet/kubeadm;b) 禁用swap并配置cgroup驱动;c) kubeadm init后安装Calico网络插件;3. 通过kubectl config远程管理。替代方案推荐使用Docker Desktop内置Kubernetes或Minikube(minikube start --driver=hyperkit)更适用于Mac本地开发环境。