使用 Kubespray 安装 Kubernetes 集群
创建于 2020 年 1 月 20 日。本文档介绍如何使用 kubespray 安装 Kubernetes (K8s) 集群。本指南假设以下条件:硬件
文档目录
创建于 2020 年 1 月 20 日
简介
本文档介绍如何使用 kubespray 安装 Kubernetes (K8s) 集群。
本指南假设以下条件:
-
硬件
所有部署使用的服务器具有相同的硬件规格,并配备 Mellanox ConnectX 网卡。
-
软件
所有服务器均安装 Ubuntu Server 18.04 操作系统,并包含 OpenSSH 服务器软件包。
-
网络
DHCP 服务器和 DNS 服务器是 IT 基础设施的一部分。 每台服务器的名称和 IP 地址已在 DHCP 服务器上预留。 部署中使用的所有服务器通过单根 100GbE 以太网铜缆连接到以太网交换机,并具有互联网访问权限。
注意: 此部署与硬件无关,我们以 Mellanox 设备为例。
参考
解决方案概述
设备
对于 K8s 集群部署,应使用相同类型的服务器。 更多信息请参考 Kubespray 要求。
解决方案逻辑设计
管理节点仅用于通过 Node1-Node5 部署 K8s 集群。

网络配置
服务器名称及网络配置如下表所示:

主机配置
所有服务器均安装 Ubuntu Server 18.04 操作系统,并包含 OpenSSH 服务器软件包。 请运行以下命令更新/升级 Ubuntu 软件包并安装最新的 HWE 内核:
服务器控制台
# apt-get update
# apt-get -y install linux-image-generic-hwe-18.04
# reboot
部署指南
K8s 集群部署与配置
SSH 私钥与无密码登录
请以 root 用户登录管理服务器,并运行以下命令创建 SSH 私钥以配置无密码认证:
# ssh-keygen
将您的 SSH 私钥(例如 ~/.ssh/id_rsa)复制到部署中的所有节点,运行以下命令:
# ssh-copy-id root@nodename
Kubespray 配置
请在管理服务器上安装运行 Kubespray 与 Ansible 所需的依赖:
# cd ~
# apt -y install python3-pip
# git clone https://github.com/kubernetes-sigs/kubespray.git
# cd kubespray
# pip3 install -r requirements.txt
创建新的集群配置:
# cp -rfp inventory/sample inventory/mycluster
# declare -a IPS=(192.168.222.111 192.168.222.101 192.168.222.102 192.168.222.103 192.168.222.104)
# CONFIG_FILE=inventory/mycluster/hosts.yaml python3 contrib/inventory_builder/inventory.py ${IPS[@]}
检查并修改主机配置文件 inventory/mycluster/hosts.yaml。
示例:
inventory/mycluster/hosts.yaml
all:
hosts:
node1:
ansible_host: 192.168.222.111
ip: 192.168.222.111
access_ip: 192.168.222.111
node2:
ansible_host: 192.168.222.101
ip: 192.168.222.101
access_ip: 192.168.222.101
node3:
ansible_host: 192.168.222.102
ip: 192.168.222.102
access_ip: 192.168.222.102
node4:
ansible_host: 192.168.222.103
ip: 192.168.222.103
access_ip: 192.168.222.103
node5:
ansible_host: 192.168.222.104
ip: 192.168.222.104
access_ip: 192.168.222.104
children:
kube-master:
hosts:
node1:
kube-node:
hosts:
node2:
node3:
node4:
node5:
etcd:
hosts:
node1:
k8s-cluster:
children:
kube-master:
kube-node:
calico-rr:
hosts:
检查并修改 inventory/mycluster/group_vars 下的集群安装参数:
# cat inventory/mycluster/group_vars/all/all.yml
# cat inventory/mycluster/group_vars/k8s-cluster/k8s-cluster.yml
注意: 可以通过在 inventory/mycluster/group_vars/k8s-cluster/k8s-cluster.yml 中设置所需的 kube_network_plugin 参数来更改默认的 Kubernetes CNI。
使用 Ansible Playbook 安装 K8s 集群
使用 Kubespray Ansible Playbook 部署 K8s 集群:
# ansible-playbook -i inventory/mycluster/hosts.yaml --become --become-user=root cluster.yml
此步骤的执行时间可能较长。
Playbook 成功完成的示例:
...
PLAY RECAP *********************************************************************************************************************************************************************************
localhost : ok=1 changed=0 unreachable=0 failed=0
node1 : ok=611 changed=137 unreachable=0 failed=0
node2 : ok=442 changed=92 unreachable=0 failed=0
node3 : ok=404 changed=88 unreachable=0 failed=0
node4 : ok=404 changed=88 unreachable=0 failed=0
node5 : ok=404 changed=88 unreachable=0 failed=0
Wednesday 15 January 2020 10:39:14 +0200 (0:00:00.164) 0:16:20.903 *****
===============================================================================
container-engine/docker : ensure docker packages are installed --------------------------------------------------------------------------------------------------------------------- 65.67s
download : download_file | Download item ------------------------------------------------------------------------------------------------------------------------------------------- 53.43s
download : download_file | Download item ------------------------------------------------------------------------------------------------------------------------------------------- 50.71s
kubernetes/master : kubeadm | Initialize first master ------------------------------------------------------------------------------------------------------------------------------ 45.96s
kubernetes/kubeadm : Join to cluster ----------------------------------------------------------------------------------------------------------------------------------------------- 42.65s
download : download_file | Download item ------------------------------------------------------------------------------------------------------------------------------------------- 28.74s
download : download_container | Download image if required -------------------------------------------------------------------------------------------------------------------------
使用 Kubespray 安装 Kubernetes 集群
创建于 2020 年 1 月 20 日
简介
本文档介绍如何使用 kubespray 安装 Kubernetes (K8s) 集群。本指南假设以下硬件条件:
部署验证
通过在主节点上执行以下命令验证 Kubernetes 集群是否正常运行:
root@node1:~# kubectl get nodes -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
node1 Ready master 4h v1.16.3 192.168.222.111 <none> Ubuntu 18.04.3 LTS 5.0.0-37-generic docker://18.9.7
node2 Ready <none> 4h v1.16.3 192.168.222.101 <none> Ubuntu 18.04.3 LTS 5.0.0-37-generic docker://18.9.7
node3 Ready <none> 4h v1.16.3 192.168.222.102 <none> Ubuntu 18.04.3 LTS 5.0.0-37-generic docker://18.9.7
node4 Ready <none> 4h v1.16.3 192.168.222.103 <none> Ubuntu 18.04.3 LTS 5.0.0-37-generic docker://18.9.7
node5 Ready <none> 4h v1.16.3 192.168.222.104 <none> Ubuntu 18.04.3 LTS 5.0.0-37-generic docker://18.9.7
完成!

