如何使用基于Ansible的工具Kubespray安装Kubernetes群集
手动部署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等。