在交叉路口,乐队不变。
在我由于对Docker Swarm的伪简单性和持续不断的整理工作,对分布式文件系统的不太方便的工作,稍微潮湿的Web界面和狭窄的功能以及缺乏对“即开即用”的GitLab集成的支持而完全厌倦之后,决定部署您的Kubernetes群集在您自己的硬件上,即通过部署Rancher Management Server 2.0。
安装经验,容错方案,在haProxy下使用haProxy和两个仪表板:
输入数据:主机服务器HP Proliant DL320e Gen8-2个。
VM Ubuntu服务器16.04、2Gb RAM,2vCPU,20Gb HDD-1个。 在每个主机上(VM-haProxy)。
VM Ubuntu服务器16.04、4Gb RAM,4vCPU,40Gb HDD,20Gb SSD-3个 在每个主机(VM-*-群集)上。
VM Ubuntu服务器16.04、4Gb RAM,4vCPU,100Gb HDD-1个。 在任何主机(VM-NFS)上。
网络图:
入门:VM-haProxy具有haProxy,fail2ban,iptables规则。 充当其后面所有计算机的网关。 我们有两个网关,一旦主机上的网关通信中断,所有机器都将切换到另一个。
这些节点(VM-haProxy)的主要任务是分配对后端的访问,平衡,转发端口并收集统计信息。
我的选择取决于haProxy,它是有关平衡和运行状况检查的更狭focused的工具。 为此,我喜欢配置指令的语法,并使用IP白名单和黑名单,以及使用多域SSL连接。
HaProxy配置:
重要:所有计算机都必须通过主机名相互“了解”。
add-host-entry.pp用于在/ etc / hosts中添加主机名的人偶清单 class host_entries { host { 'proxy01': ip => '10.10.10.11', } host { 'proxy02': ip => '10.10.10.12', } host { 'master': ip => '10.10.10.100', } host { 'node01': ip => '10.10.10.101', } host { 'node02': ip => '10.10.10.102', } host { 'node03': ip => '10.10.10.103', } host { 'node04': ip => '10.10.10.104', } host { 'node05': ip => '10.10.10.105', } host { 'nfs': ip => '10.10.10.200', } }
VM-Master-Cluster是主控制机。 它与Puppet Master,GlusterFS Server,Rancher Server(容器),etcd(容器),控制管理器(容器)不同。 如果此主机断开连接,生产服务将继续工作。
VM-Node-Cluster-节点,工作程序。 工作机器,其资源将被组合到一个容错环境中。 没什么有趣的。
VM-NFS -NFS服务器(nfs-kernel-server)。 主要任务是提供缓冲区空间。 存储配置文件和所有文件。 不存储任何重要内容。 喝咖啡时,可以缓慢地纠正其跌落。
重要提示:所有环境机器都必须具备:docker.io,nfs-common,gluster-server。
must-have-packages.pp木偶清单,用于安装正确的软件 class musthave { package { 'docker.io': ensure => 'installed', } package { 'nfs-common': ensure => 'installed', } package { 'gluster-server': ensure => 'installed', } }
由于大量介绍了nfs-volume的安装和GlusterFS的配置,因此我将不对其进行描述。
如果您在规格说明中注意到有SSD磁盘,则它们为Gluster分布式文件系统的运行做好了准备。 创建分区,并存储在高速磁盘上。
注意事项 实际上,运行Rancher不需要类似镜像的环境。 以上所有都是我对集群的看法以及对我遵循的实践的描述。
要运行Rancher,
一台计算机就足够了,它具有4CPU,4Gb RAM和10Gb HDD。
5分钟到Rancher。
在VM-Master-Cluster上,我们执行以下操作:
sudo docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher
检查可用性:
curl -k https://localhost
如果您看到了API-恭喜您成功通过了一半。
再次查看网络图,我们记得我们将从外部通过haProxy进行工作,在配置中,我们发布了
rancher.domain.ru链接,继续,设置您的密码。
下一页是Kubernetes集群创建页面。
从“群集选项”菜单中,选择“绒布”。 我没有与其他网络提供商合作。 我不建议。
值得一提的是,如果您不打算在工作人员模式下使用管理器,我们已经安装了etcd和Control Plane复选框,则未安装工作程序复选框。
我们在局域网内工作,在NIC上使用相同的地址,因此在“公共和内部地址”字段中指示相同的IP。
复制上面的结果代码,然后在控制台中运行。
一段时间后,在Web界面中,您将看到有关添加节点的消息。 一段时间后,您将启动Kubernetes集群。
要添加工作程序,请在Rancher Web界面中编辑集群,您将看到生成连接命令的菜单。
仅将复选框设置为工作程序位置,指定将来的工作程序的IP,复制命令并在所需节点的控制台中执行。
一段时间后,群集功率将增加,就像节点数一样。
安装Kubernetes仪表板:转到“项目/命名空间”菜单。
安装后,您将看到与Kubernetes相关的名称空间将包含在项目外部。 要完全使用这些命名空间,必须将它们放置在项目中。
添加一个项目,随便命名。 使用“移动”上下文菜单将名称空间(牛系统,入口nginx,kube-public,kube系统)移至您创建的项目。 应该是这样的:
直接单击项目名称,您将被带到工作负载控制面板。 我们将在这里讨论如何创建简单服务。
点击右上角的“导入YAML”。 复制
此文件的内容并将其粘贴到打开的窗口的文本框中,选择名称空间“ kube-system”,单击“导入”。
一段时间后,pod kubernetes-dashboard将启动。
转到pod编辑,打开端口发布菜单,设置以下值:
在运行Pod的节点上检查访问权限。
curl -k https://master:9090
看到答案了吗? 出版物已完成,尚需到达管理部分。
在Rancher的群集管理主页上,有非常方便的工具,例如kubectl(群集管理控制台)和Kubeconfig File(包含API地址,ca.crt等的配置文件)。
我们进入kubectl并执行:
kubectl create serviceaccount cluster-admin-dashboard-sa kubectl create clusterrolebinding cluster-admin-dashboard-sa --clusterrole=cluster-admin --serviceaccount=default:cluster-admin-dashboard-sa
我们创建了一个具有最高特权的服务帐户,现在我们需要一个令牌来访问仪表板。
查找创建的帐户的秘密:
kubectl get secret | grep cluster-admin-dashboard-sa
我们将在末尾看到带有特定哈希的帐户名称,将其复制并执行:
kubectl describe secret cluster-admin-dashboard-sa-$( )
同样,我们记得所有内容都已通过haProxy成功发布。
我们点击链接
kubernetes.domain.ru 。 输入收到的令牌。
欢喜:
聚苯乙烯总的结果是要感谢Rancher创建了一个直观的界面,一个易于部署的实例,简单的文档,快速移动的能力以及在集群级别的可伸缩性。 也许我在帖子开始时讲得太尖锐,Swarm厌倦了它,而是明显的发展趋势,这让我凝视着身边,而没有完成无聊的工作。 Docker创造了一个发展时代。 而且判断这个项目当然不适合我。