如何使用基于Ansible的工具Kubespray安装Kubernetes群集

时间:2020-03-05 15:31:06  来源:igfitidea点击:

手动部署Kubernetes群集非常复杂,乏味,漫长而易于出错的过程。
行业要求敏捷性,并希望尽可能快地设置Kubernetes集群。
因此,社区已启动名为Kubespray(Kargo)的潜伏的项目在社区伞下。
Kubespray是一个潜入的Kubernetes社区项目,用于部署K8S集群或者云端。

Kubespray在裸机和大多数云上运行,使用Assible作为其基板供应和编排。
因此,它比平台的其他群集编排工具KOP和Kubeadm更灵活。

它支持特定的Linux发行版本,它是CentOS 7,CoreOS(容器Linux),Ubuntu 16和Debian Jessie。

它支持以下类型的基础架构部署:

  • aremetal.
  • OpenStack.
  • 虚拟机(KVM,VMware,VirtualBox)
  • 公共云(AWS,Google云等)

我将设置3个节点Baremetal Kubernetes集群。
我已经设置了在操作系统CentOS 7上运行的三个节点7. 3.现在我们将使用Kubespray部署Kubernetes群集。

Kubespray的准备工作

Ansible v2.3(或者更新)

执行以下命令以在基于RPM的分布上安装最新的Ansible。

$sudo yum install epel-release
$sudo yum install ansible

执行下面的命令以在基于Debian的分布上安装最新的Ansible。

$sudo apt-get update
$sudo apt-get install software-properties-common
$sudo apt-add-repository ppa:ansible/ansible
$sudo apt-get update
$sudo apt-get install ansible

Jinja 2.9(或者更新)

执行下面的命令安装Jinja 2. 9或者升级现有的Jinja到版本2. 9

$easy_install pip
$pip2 install jinja2 --upgrade

允许IPv4转发

我们可以通过执行下面的命令启用或者禁用IPv4转发。

$sudo sysctl net.ipv4.ip_forward

如果值为0,则禁用IPv4转发。
执行以下命令以启用它。

$sudo sysctl -w net.ipv4.ip_forward=1

密码kubespray计算机和所有库存节点之间的身份验证

机器SSH键必须复制到库存的所有服务器部分。
如果我们不知道如何在机器之间设置无密码身份验证,则可以引用文章SSH-Login-with-public-key

不应管理防火墙,目标服务器必须访问Internet

Kubespray CLI安装

我们也可以通过克隆其Git存储库的目录使用kubespray而没有CLI。

我们将使用CLI使用它。
执行以下步骤以安装kubespray。

$pip2 install kubespray

在成功完成安装后,我们可以查看Kubespray的版本

$kubespray -v

在安装期间,一个新文件"。
kubespray。
yml"在$home中创建。
它包含有关云凭据的信息以及特定于不同云的各种其他选项。
一个新目录"。
kubespray"也在$home中创建。
它是kubespray git存储库的复制品。

库存文件设置

在~/中创建新的库存文件kubespray /库存/库存。
CFG并添加如下所示的内容。

$vi ~/.kubespray/inventory/inventory.cfg
machine-01 ansible_ssh_host=192.168.0.144 http_proxy=http://genproxy:8080
machine-02 ansible_ssh_host=192.168.0.145 http_proxy=http://genproxy:8080
machine-03 ansible_ssh_host=192.168.0.146 http_proxy=http://genproxy:8080
[kube-master]
machine-01
machine-02
[etcd]
machine-01
machine-02
machine-03
[kube-node]
machine-02
machine-03
[k8s-cluster:children]
kube-node
kube-master

其中我使用3个节点来群集,我们需要根据体系结构配置库存文件。
根据环境更改IPS,我正在使用代理服务器来访问Internet,所以我在主机声明中添加了"http_proxy = http://genproxy:8080"。
我们可以根据要求修改和删除。
我将机器-01和机器-02视为主机,机器-02和机器-03作为节点,而所有这三台机器都像ETCD服务器一样。
让我们开始群集部署。

kubernetes使用kubespray的群集部署

之前,开始实际部署,让我们看看场景后面的展望是什么以及如何顺利执行手动安装任务。
Kubespray将安装Kubernetes-API-Server,etcd(键值存储),控制器,调度程序将安装在主机上,Kubele,Kube-Proxy和Docker(或者RKT)将安装在节点机上(COMIONS)。
这些组件将由Kubespray中的Ansible角色安装和配置。
所有,我们需要做的就是执行一个命令。

要启动Kubernetes群集的部署,请执行以下命令。

$kubespray deploy

基于主和派别的数量,部署完整群集需要时间。
在执行结束时,我们将获得如下所示的输出。
如果任务没有失败,则部署成功。

PLAY RECAP 
192.168.0.144                    : ok=278    changed=89    unreachable=0    failed=0
192.168.0.145                    : ok=287    changed=103   unreachable=0    failed=0
192.168.0.146                    : ok=246    changed=78    unreachable=0    failed=0
localhost	                 : ok=3      changed=1     unreachable=0    failed=0

要检查一切顺利,部署是否成功,可以登录主节点并获取所有工作节点。

$kubectl get nodes
machine-02    Ready     4m
machine-03    Ready     4m

通过执行下面的命令列出所有命名空间中的POD。

$kubectl get pods --all-namespaces
NAMESPACE 	   NAME                             	READY     STATUS    RESTARTS   AGE
kube-system	   dnsmasq-7yk3n                    	1/1       Running   0          5m
kube-system	   dnsmasq-5vfh0j                    	1/1       Running   0          5m
kube-system	   flannel-machine-02                   2/2       Running   0          4m
kube-system	   flannel-machine-03                   2/2       Running   0          4m
kube-system	   kube-apiserver-machine-01   		1/1       Running   0          5m
kube-system	   kube-controller-manager-machine-01   1/1       Running   0          5m
kube-system	   kube-proxy-machine-02                1/1       Running   0          4m
kube-system	   kube-proxy-machine-03                1/1       Running   0          4m
kube-system	   kube-scheduler-machine-02            1/1       Running   0          5m
kube-system	   kubedns-p8mk7                    	3/3       Running   0          4m
kube-system	   nginx-proxy-machine-02            	1/1       Running   0          2m
kube-system	   nginx-proxy-machine-03              	1/1       Running   0          2m

因此,我们在使用Kubespray上成功地部署了裸机服务器上的3节点Kubernetes集群。
它也可以用于在OpenStack,Vagrant和云上部署集群,如AWS,Google等。