使用 kubespray 安装 Kubernetes

逐步指南

目录

如何安装 Kubernetes:使用 Kubespray 安装 Kubernetes,包括设置环境、配置清单和运行 Ansible playbook。

工人在旧工厂建筑中喷洒立方体

先决条件

硬件和软件要求

  • 确保您有多个机器(至少 3 个节点:1 个主节点和 2 个工作节点),并满足以下规格:
    • 已安装 Ubuntu 16.04/18.04 或 CentOS 7。
    • 每台机器至少有 2 GB 内存(对于较大的集群,建议使用更多内存)。
    • 从 Kubespray 控制机器到每个节点的网络连接和 SSH 访问。
    • 为了高可用性,考虑使用具有 16 GB 内存、100 GB 磁盘和 6 个 CPU 核心的节点。

控制机器设置

  • 如果尚未安装,请安装 Git:

    sudo apt install git-all
    
  • 安装 Python(2.7 或 3.5+)和 pip:

    sudo apt update
    sudo apt install python3 python3-pip
    
  • 安装 Ansible 和其他依赖项。Kubespray 提供了一个脚本来处理此操作:

    git clone https://github.com/kubernetes-sigs/kubespray.git
    cd kubespray
    git checkout release-2.20  # 可选:检出一个稳定版本
    python3 -m venv venv  # 创建 Python 虚拟环境
    source venv/bin/activate  # 激活虚拟环境
    pip install -r requirements.txt  # 安装 Ansible 和其他依赖项
    

配置清单

  • 复制示例清单:

    cp -r inventory/sample inventory/mycluster
    
  • 编辑 inventory/mycluster/hosts.ini 文件以添加您的节点:

    [all]
    node1 ansible_host=10.10.1.3 ansible_user=ubuntu
    node2 ansible_host=10.10.1.4 ansible_user=ubuntu
    node3 ansible_host=10.10.1.5 ansible_user=ubuntu
    
    [kube-master]
    node1
    
    [kube-node]
    node2
    node3
    
  • 如果您使用的是其他用户,请将 ubuntu 替换为您的用户。

  • 您还可以使用 inventory_builder 脚本来生成清单文件:

    declare -a IPS=(10.10.1.3 10.10.1.4 10.10.1.5)
    HOST_PREFIX=dcm-cp- KUBE_CONTROL_HOSTS=3 CONFIG_FILE=inventory/mycluster/hosts.yaml python3 contrib/inventory_builder/inventory.py ${IPS[@]}
    

自定义配置

  • inventory/mycluster/group_vars/k8s_cluster/k8s-cluster.yml 文件中自定义 Kubernetes 集群设置。例如:

    kube_network_plugin: flannel
    kubeconfig_localhost: true
    
  • 为了高可用性,请配置 VIP 和负载均衡器:

    # 在 inventory/mycluster/group_vars/all/all.yml 中
    kube_vip_arp_enabled: true
    kube_vip_enabled: true
    kube_vip_controlplane_enabled: true
    kube_vip_address: 10.7.12.250  # 请更新为正确的 VIP
    kube_vip_interface: eno1  # 请更新为正确的接口
    

部署集群

  • 运行 Ansible playbook 以部署 Kubernetes:
    ansible-playbook -i inventory/mycluster/hosts.yaml cluster.yml -b -v --become --become-user=root --private-key=~/.ssh/private_key
    

部署后操作

  • 部署完成后,您将在 inventory/mycluster/artifacts 目录中找到一个 kubeconfig 文件。此文件用于使用 kubectl 与 Kubernetes 集群进行交互。
    export KUBECONFIG=inventory/mycluster/artifacts/admin.conf
    kubectl get nodes
    

故障排除和访问

  • 要排查故障或访问集群,请确保在控制机器或计划管理集群的任何机器上已安装 kubectl 二进制文件。
  • 如果遇到工作节点未就绪或其他 Pod 调度问题,请检查日志并根据需要调整配置。

有用的链接