使用Rancher在Microsoft Azure上搭建Kubernetes集群

Rancher 是一种简化Kubernetes集群部署的方案,它的理念是,在任何地方运行Kubernetes集群。由于在最近的工作中需要用到,因此,就写一篇文章介绍一下Rancher的使用,以及通过Rancher在Azure上搭建Kubernetes集群的方式。

开始使用Rancher

Rancher的基本使用非常简单,英语比较好的可以直接翻看 Rancher官网上的文档 ,我们先从Rancher的安装开始。Rancher的安装非常简单,在装有docker的机器上直接运行以下命令,就可以启动Rancher。

sudo docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher

启动完成后,打开浏览器,使用http或者https访问运行Rancher容器的主机,就可以看到用户界面。第一次使用时,Rancher会提示为admin用户设置新的密码,输入密码后,就可以开始使用Rancher了。进入主界面后,页面会显示Add Cluster的按钮,点击该按钮就可以开始创建一个新的Kubernetes集群。但在开始创建集群前,有些配置是需要预先设置好的,因此,我们不急于点击这个Add Cluster按钮,我们先点击界面右上方的用户头像,然后可以看到两个重要的菜单项:Cloud Credentials以及Node Templates。

Cloud Credentials允许用户添加多个用于访问云端资源的凭证,例如,用户可以将AWS或者Azure的访问凭证添加到Rancher,在部署Kubernetes集群时,Rancher会使用指定的Cloud Credential在云端创建各种资源。

Node Templates定义了集群部署时每个节点机器的配置模板,Rancher会使用指定的Node Template创建集群节点。接下来,我就以Microsoft Azure为例,介绍Rancher的使用和Kubernetes集群的管理。

在Azure上搭建集群

创建基于Azure的Client Credential

点击Cloud Credentials菜单项,进入Cloud Credentials主界面,然后点击Add Cloud Credential按钮开始添加凭证,在弹出的Add Cloud Credential对话框中,输入Cloud Credential的名称,Cloud Credential Type选择Azure,然后填入Subscription ID、Client ID以及Client Secret。这三个值需要到Microsoft Azure中获取,因此,你需要有Microsoft Azure的订阅。

Subscription ID

使用你的Microsoft Account登录Azure Portal,在左侧的列表中,选择Cost Management + Billing,然后选择Subscriptions,在主界面中你就能看到你的Subscription ID:

Client ID

使用你的Microsoft Account登录Azure Portal,在左侧的列表中,选择Azure Active Directory,然后选择App registrations,点击New registration按钮,添加一个新的App registration:

在Register an application页面中,输入App registration的名字,在Supported account types中,选择第二个或者第三个选项,Redirect URL不需要填写:

然后点击Register按钮开始创建。成功之后,可以在App registrations中Owned applications选项卡下找到刚创建的registration:

点击这个app registration即可看到Client ID和Tenant ID。将这两个ID复制下来备用,并将Client ID填入Add Cloud Credential界面中:

Client Secret

仍然在上面这一步的界面中,点击Certificates & secrets选项:

然后在Client secrets下点击New client secret按钮新建一个Secret。新建成功后,会在表格中出现Client secret,点击复制按钮将其复制下来。Client secret只有在初次被创建的时候才会显示出来。

同样,将Client secret填入Add Cloud Credential对话框中。

再次回到Add Cloud Credential界面,此时Subscription ID、Client ID和Client Secret都已经填写完毕,点击Create按钮即可。

将App registration设置为Azure的Contributor

这一步非常重要,否则Rancher无法在Azure上创建资源。首先,打开Cost Management + Billing,然后点击你所使用的Subscription,在边栏中选择Access Control (IAM)后,点击添加按钮:

在“添加”界面中,进行如下配置:

在进行完以上操作后,Azure部分的配置也就完成了。接下来创建Node Template以及Kubernetes集群。

创建基于Azure的Node Template

回到Rancher,在用户菜单中选择Node Templates,然后点击Add Template按钮:

在Add Node Template对话框中,选择Azure,然后依次填入以下信息(此处仅列出需要注意的选项,其它选项可以使用默认值):

  • Cloud Credentials:使用上文中创建的Azure Credential
  • Placement部分:
    • Environment:使用AzurePublicCloud
    • Region:选择所需的Region
    • Availability Set和Resource Group:自己取个名字即可
  • Network部分:按需设置即可
  • Instance部分:选择所需的Size,这关系到每月的费用,其它的默认即可
  • Name:为Node Template取一个名字

上述配置完成之后,点击Create按钮,即可创建Node Template。至此,我们已经为在Azure中创建Kubernetes集群做好了准备。

Azure中Kubernetes集群的创建

现在,我们就可以到Rancher的主界面,点击Add Cluster按钮开始创建集群了。在Add Cluster界面中,首先选择Azure,然后给Cluster取一个名字。这里我们没有选择Azure AKS,因为我所介绍的是基于Azure VM的集群创建方式。在Azure中创建Kubernetes集群主要有两种方式:直接使用Azure的托管服务Azure Kubernetes Services(AKS),或者自己组建子网自己搭虚拟机自己部署。当然,使用AKS部署更加方便,不过使用Rancher的话,Rancher会帮助用户搭建并管理集群,并提供统一的使用体验和专业的工具和监控服务。更为重要的是,Rancher会在基于VM的部署中启用Ingress Controller,这将简化之后的应用程序的部署,我会在后篇文章中介绍。

接下来,在Node Pools部分,填写Kubernetes节点机器(Nodes)的相关信息:为集群节点机器的名称设置一个前缀,选择节点个数,选择所使用的Node Template,然后勾选etcd、Control Plane和Worker三个选项:

然后,在Cluster Options中,将Cloud Provider设置为Azure,其它选项默认:

此时又会有一系列的选项需要填写。重点填写如下几个:

  • aadClientId:上文中创建的Client ID
  • aadClientSecret:上文中创建的Client Secret
  • subscriptionId:MSDN Subscription ID
  • tenantId:上文中创建的Tenant ID

全部填写后,点击Create按钮创建集群。等待片刻后,Azure Kubernetes集群就会以Active状态出现在Clusters列表中:

进入Azure Portal,找到集群所对应的资源组,可以看到Rancher所创建的、集群所需的所有资源:

开始使用Kubernetes集群

在Rancher中点击集群的名称,就可以进入集群的Dashboard,在Dashboard的右上方,有个Kubeconfig File的按钮,点击这个按钮,Rancher就会把该集群的Kubeconfig文件内容显示出来。

将Kubeconfig文件的内容复制到剪贴板,然后粘贴到C:\Users\<当前用户名>\.kube\config文件中(如果是Linux机器,那就是~\.kube\config文件)并保存,此时打开命令行,执行kubectl config get-contexts,将看到类似下面的结果:

然后可以执行一下kubectl get namespaces,可以得到类似如下的结果:

由此证明,集群连接成功。

总结

本文介绍了使用Rancher在Microsoft Azure上部署Kubernetes集群的过程。Rancher不仅支持Azure,而且还支持AWS、Google GKE、DigitalOcean甚至是本地Kubernetes集群的部署,非常方便易用。在下一篇文章中,我会介绍如何使用HELM创建Kubernetes应用程序包,然后将我们已有的应用程序部署到Kubernetes集群中。

(总访问量:9;当日访问量:1)

我来评几句
登录后评论

已发表评论数()

相关站点

+订阅
热门文章