使用 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 调度问题,请检查日志并根据需要调整配置。