在Rancher出现之前,管理在不同云提供商中运行的kubernetes集群从来都不是一件容易的事。Rancher是什么?它是一个开源的Kubernetes管理平台,用户可以在Rancher上创建对接不同云的Kubernetes集群,或直接向导入已有的Kubernetes集群进行统一纳管。
在这篇文章中,我将演示如何在Google云、AWS Cloud中启动Kubernetes集群以及如何从Oracle Cloud导入集群。所有这三个集群,最终都将在Rancher Dashboard上拥有直观的视图,并能进行统一管理。本文将逐步展示如何从Rancher创建Kubernetes集群,以及如何通过Rancher Dashboard轻松完成监控和部署。
除了Rancher Kubernetes管理平台之外,Rancher Labs也发布过自己的RKE(Rancher Kubernetes Engine)供用户选择使用。RKE这是一个非常简单、闪电般快速的Kubernetes安装程序,可以在任何地方使用。因此,它消除了在裸机服务器或VM上安装Kubernetes集群的痛苦,并且它还提供了很多自定义的灵活性。
RKE安装
在这一章里我将演示如何在3个VM上安装Rancher Kubernetes集群。首先你需要三台机器来启动RKE集群。我使用的是3个EC2实例与ubuntu18.04,作为启动镜像。所以现在我已经有了一个单独的VM,我将执行这三个节点的所有安装,其中一个将是主节点,另外两个将是工作节点。我已经按照官方文档(https://rancher.com/docs/rke/l ... tion/)进行了安装,为了让整个工作更简单,我稍微调整了一些步骤。
步骤1:下载RKE二进制文件
- wget
- https://github.com/rancher/rke ... amd64
步骤2:mv rke_linux-amd64 rke
步骤3:导出PATH = / home / cloud_user / rke:$ PATH
步骤4:到目前为止,我已经安装了三台安装了docker的ubuntu EC2机器(一定要运行“usermod -aG docker ubuntu”,这样才能让docker可以被ubuntu用户访问)、以及在创建这些实例时我使用的私钥文件。你需要做的是在当前的VM中创建文件,复制密钥的内容,更改密钥权限并尝试登录到你的EC2实例之一。
然后运行以下命令:
- rke config --name cluster.yml(如果你还没有设置路径,此处则可以使用./rke)。
一旦你按下Enter键,它将开始询问你一些不同的参数值,因为它会根据这些参数值来创建cluster.yml文件。这些参数基本上是你定义的节点特征,rke会自动为你创建cluster.yml。你也可以按照Rancher的文档自行创建。
以上是我传递的参数,并基于它生成了cluster.yml文件。基本上它就是三个节点配置和我默认选择的其他一些与集群相关的配置。
以上是Node基于我们传递的参数在cluster.yml文件中的样子。 现在你已准备好了cluster.yml文件,就可以继续下一步了。
步骤5:运行“rke up”以启动集群(如果你在同一位置有cluster.yml文件的话),或者如果你拥有cluster.yml以外的文件,则可以运行:rke up --config abc.yml
就这样简单!!! 然后你将可以看到集群启动了,并开始显示各种INFO日志,以执行各种工作来启动集群并将节点连接在一起。这也让你可以看到幕后发生的事情,以便你可以感受到集群创建的所有步骤。如果不需要这些,你只需看看我们“成功建立Kubernetes集群”即可。
在此之后,rke还会创建一个kubeconfig文件,你可以使用该文件与集群进行交互(在此之前需安装kubectl),名称为“kube_config_cluster_yml”。如果你使用的yml文件用了其他名称,那么它将是'kube_config_test_yml',然后就可以使用这个config文件与集群进行交互了。
Rancher安装
现在我将向你展示如何安装Rancher并从Rancher Dashboard创建/导入集群。 我将使用我用于RKE安装的相同VM。 我将在端口80上运行Rancher作为docker容器。
命令:
- docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher
搞定!Rancher现在已经运行起来了!
下面登录Rancher 并设置密码,使用URL。
现在,Rancher已启动并正在运行了,我们可以开始准备创建和导入集群。下面我将向你展示如何使用Rancher创建AWS和Google云集群,以及如何从Oracle云和最近创建的RKE导入集群。
使用Rancher创建AWS集群
步骤1:单击“添加集群”并选择Amazon EKS。选择完之后,你将需要提供集群名称、访问密钥(Access Key)和secret Key。
步骤2:单击“配置集群”,然后选择Kubernetes版本和服务角色。
步骤3:单击选择VPC和子网,以选择节点的VPC和公共IP。
步骤4:选择实例选项,以指定节点的形状和大小。
步骤5:创建集群
单击“创建”后,配置AWS EKS集群就开始了,这一切将显示在AWS仪表板和Rancher Dashboard中。
使用Rancher创建Google Kubernetes集群
步骤1:在Google云端控制台中创建具有以下权限的服务帐户。
步骤2:为该服务帐户创建JSON密钥并将其保存在你的计算机上,因为在通过Rancher创建集群时将需要此密钥。
步骤3:转到Rancher Dashboard,单击“添加集群”并选择Google GKE。 填好集群的名称,并粘贴您刚刚在步骤2中创建的服务帐户JSON文件。
步骤4:单击“配置节点”后,它将使用提供的JSON文件进行身份验证,并显示两者不同的部分,你可以在其中选择相应的集群选项。 你可以选择区域、Kubernetes版本、节点数/形状/镜像、启用/禁用自动修复、自动缩放和自动升级等功能,然后单击“创建”。
就是这样,只要你点击“创建”,Google Kubernetes集群就创建好了。
使用Rancher导入RKE集群
在本节中,我将展示如何将RKE集群导入你刚刚在本文开头创建的Rancher。
步骤1:单击添加集群,选择导入选项后,填入集群名称并单击创建。
步骤2:运行下一个屏幕上提到的命令,以创建集群管理员角色以及Rancher导入需要的yaml。
将Oracle Kubernetes引擎导入Rancher Dashboard
先创建OKE(Oracle Kubernetes Engine),转到Oracle OCI控制台,从菜单中选择开发者服务,然后选择集群。我将选择快速创建选项,因为它非常简单,除了提供集群名称和节点形状和计数之外,无需再执行任何其他操作。
Rancher Dashboard
下面让我们看看Rancher Dashboard。
现在,你可以使用Rancher Dashboard进行各种不同的操作。
启用监控
你可以直接使用Dashboard启用prometheus和grafana监控,并访问所有集群的grafana仪表板。 下面我将展示如何为Google Kubernetes集群执行操作,这些流程适用于其他所有各类集群。
步骤1:选择要为其启用监控的集群。
步骤2:从工具菜单中选择监控。
步骤3:单击“启用”并设置限制。单击保存。
单击“保存”后,你的监控功能已启用。当你单击集群时,您将可以看到grafana的logo。
单击任意一个Grafana的logo,你会跳转到Grafana的仪表板,可以在其中查看所有指标,并根据需要创建告警。
管理集群
你可以使用Rancher Dashboard轻松管理集群的所有已部署的pod、服务等。
在这里,您可以编辑yaml文件,重新部署它们并根据需要更改配置。
部署应用程序
使用Rancher Dashboard将应用程序部署到集群非常简单。 只需打开集群的工作负载页面,即可部署应用程序。
部署
下面让我们来部署一个示例的nginx应用程序。 选择部署时,你可以使用各种选项来部署应用程序。
部署应用程序
你可以设置环境变量、执行节点计划、运行健康检查、创建卷以及定义扩展策略。 你还可以通过单个的应用程序部署界面做很多事情(特别酷炫!)。你也可以暴露端口(对于我的部署,我已将它暴露为外部负载均衡器)。
执行kubectl命令
您可以在配置集群时生成的kubectl shell的帮助下,通过Rancher UI执行kubectl命令。这里的一个问题是,当您尝试多次运行kubectl shell时,由于某些docker的问题会导致断开连接。另一种可行方法是下载kubeconfig文件并在本地运行kubectl命令。
你还可以创建卷,创建CI/CD的Pipeline等等。
结 语
在这篇文章中,我分享了:
- 如何安装Rancher
- 如何使用Rancher安装Google GKE
- RKE设置
- 使用Rancher创建AWS EKS
- 将Oracle Cloud OKE导入Rancher
- 从Rancher启用对集群的监控
- 使用Rancher UI部署示例应用程序并将其作为负载均衡器公开
- 使用Rancher UI执行Kubectl命令
Rancher的功能非常多,我当然无法仅用一篇文章就分享完所有Rancher的功能、特性等等所有方面,更多用法大家可以继续自行探索。