Kubespray 是一个 Ansible playbook 集合,用于自动化部署生产级别的 Kubernetes 集群。以下是使用 Kubespray 安装高可用 Kubernetes v1.20.2 集群的实战步骤,以及一些常见问题的解决方法:
安装步骤概览
-
环境准备:
- 安装 Ansible(>=2.9)和 Git。
- 准备好安装 Kubernetes 集群的目标主机列表,并确保它们能通过 SSH 无密码登录。
-
获取 Kubespray:
git clone https://github.com/kubernetes-sigs/kubespray.git cd kubespray
-
配置集群参数:
- 编辑
inventory/sample/group_vars/all.yml
,根据你的集群规模和需求配置节点的角色(master、etcd、worker)。 - 在
inventory/sample/hosts.ini
中列出所有节点的 IP 地址和主机名。 - 在
inventory/sample/group_vars/k8s-cluster.yml
中设置 Kubernetes 版本为kube_version: "v1.20.2"
。
- 编辑
-
设置高可用参数:
- 在
inventory/sample/group_vars/k8s_cluster.yml
或all.yml
中设置 etcd、kube-api-server、controller-manager 和 scheduler 的 HA 参数。
- 在
-
执行 Ansible Playbook:
ansible-playbook -i inventory/sample/hosts.ini cluster.yml
常见报错及解决方法
-
SSH无权访问:
确保所有目标主机之间可以相互无密码 SSH 登录,或者配置 ssh-agent 和公钥认证。 -
网络问题:
检查各节点间的网络可达性,确保所有必需端口开放,如 22(SSH)、6443(kube-apiserver)、2379-2380(etcd)等。 -
软件依赖缺失:
在部署前,确保目标主机已安装所有必需的软件包,如 Python、pip、iptables 等。 -
配置错误:
检查 YAML 配置文件是否有误,如 IP 地址、主机名、网络CIDR等,确保与实际环境相符。 -
证书问题:
如果出现证书相关的错误,确保系统时间同步,并按照 Kubespray 文档的指示生成正确的证书。 -
磁盘空间不足:
确保目标主机有足够的磁盘空间来存放 Kubernetes 配置文件、日志和数据。 -
Ansible playbook 错误:
针对 Ansible 执行过程中的具体错误信息,查阅 Kubespray 文档或在线社区寻求解决方案。
执行部署时,根据实际情况可能需要执行多次 playbook,例如先执行 preinstall.yml
以确保基础环境准备就绪,再执行 cluster.yml
完成集群部署。务必根据 Kubespray 的官方文档和您所使用的特定版本的指引来进行操作。