Kubernetes是目前业界最为流行的企业级产品环境就绪的容器编排平台,因此历来复杂企业级软件的交付过程中会有越来越多的用户采用Kubernetes平台。Oracle Compute云提供可预测的性能和网络隔离的基础设施服务也同样被企业级用户广泛采用,用户可以轻松迁移负载并进行扩展,这样就会有大量的需求要在Oracle Compute云上部署Kubernetes集群来运行和交付自己的应用系统,本文将讲解如何在Compute云上部署Kubernetes并在这个集群上运行一个示例电商应用。
下图是我们这次要在Oracle Compute云上部署的架构:
整个架构采用三个OracleCompute云主机实例,其中一个节点作为Master节点安装Kubernetes的所有管理节点中的组件同时将Etcd也安装在这个节点上,另外两个作为Kubernetes的Node节点,除了运行Kubernetes节点守护进程kubelet以外所有的受管理的容器都运行在这两个节点上。
在Oracle Compute云上部署Kubernetes集群,仅需如下几步:
1. 申请云账号
2. Compute云安全设置
3. 编排模版及脚本
4. 启动模版5. 部署容器应用
下面让我们一起开启体验之旅吧!
01
申请云账号
首先我们需要有一个Oracle Compute云的帐号,在中国区可以通过申请免费获得使用一个月的测试帐号,大家可以根据下面的链接来按照要求的步骤一步一步来完成:https://cloud.oracle.com/zh_CN/tryit。
进入到Compute控制台后可以看到目前使用的资源情况:

02
Compute云安全设置
在Compute云编排模版之前,我们需要在Compute云中进行一些与云安全相关的设置,这些安全设置对于保护我们在云中的资源非常重要,无论是测试还是正式环境我都建议大家使用Oracle的最佳实践来进行设置,而不要像在On Promise时代那样简单粗暴的将所有的安全限制全部放开。操作步骤也非常简单,只需点击“Create Security Rules”并进行配置即可。


这里再次强调一下不要为了访问方便将Oracle Compute云防火墙的规则全部端口放开,这样的云主机就相当于在互联网上裸奔。
03
编排模版及脚本
Orchestration或者云编排功能的作用实际上与Kubernetes容器编排的功能非常类似,是用来管理和调配所有Compute云计算、存储、网络等资源的,我们可以使用云编排功能实现各种自定义功能的部署以及整个虚拟化计算拓扑的生命周期管理。Compute云编排模版是通过流行的JSON格式编写易于大家的理解。
同时为了方便大家按照自己帐户的情况修改模版的内容,我把这个模版的源代码共享出来供大家下载:https://citiccloud.storage.oraclecloud.com/v1/Storage-citiccloud/shared/k8s-orig.json,

这个模版在Compute云Orchestration服务直接运行后会自动启动三个Compute云主机,并自动初始化好一个Kubernetes Master节点和两个Node节点。
在本文的模版中我们使用OracleStorage对象存储云,大家在测试本文的安装部署时可以不用修改这个地址,直接使用我们提供的地址,这个地址有效期到2017年8月1日。如果想使用自己的Oracle Storage服务可以把这些模版和脚本下载下来,上传到自己的开放为Public的Container中,再把所有的地址替换成你自己的地址就可以了。
04
启动模板
我们看一下如何使用这个模版和脚本来从无到有在OracleCompute云上创建一个Kubernetes集群。首先将上面的Orchestration模版复制粘贴到一个文本文件中,并要修改一下模版的内容,主要是用户的域名城和Compute云用户,需要按照你自己的实际情况修改,具体操作可以将现有模版中的<IdentityDomain>和<OPC Account>这两个字符串替换为你自己Oracle Compute帐户的相应字符串。接下来进入Compute控制台的Orchestration功能点击Upload Orchestration按钮:

将保存为文本文件的Orchestration通过弹出的对话窗口上传到Compute云中:

上传成功后将在Compute控制台看到名为k8s_cluster的编排模版:

由于已经事先把我们在模版文件中引用的shell脚本文件存放到Oracle Storage云中,接下来我们就可以直接启动这个模版,点击模版行最右侧的图标再点击弹出菜单中的Start链接启动模版。这个时候模版的状态会从Stop转变为Starting,这时我们要等候一段时间,我们可以通过不断刷新Instances页面来查看启动Kubernetes的三个节点的状态:

当所有的Instance的状态变成Running时,再等待10分钟我们就可以首先登录到k8s_master这个Compute主机上来看一下Kubernetes集群的状态,通过SSH工具使用私钥证书登录到k8s_master的PublicIP,用sudo权限运行kubectlget nodes查看所有Kubernetes节点的注册情况。

看到了三个节点的Ready状态后表明我们的Kubernetes集群已经全部安装和初始化完成了。
05
部署容器应用
接下来我们将只通过两条条命令在Kubernetes集群上启动一个纯粹的微服务架构下的全功能的电商网站。这个电商网站示例代码的Git地址为:https://github.com/microservices-demo/microservices-demo,大家可以到这个网页上参考具体的信息。在k8s_master节点上运行以下命令:

接着在命令行工具中我们就会看到有很多Kubernetes的服务被创建出来,接着我们要设置Oracle Compute云的防火墙来让我们可以通过互联网能够访问到这个新部署电商网站。这个网站最终会发布一个Kubernetes对外端口30001让用户能够通过浏览器访问,因此我们要新建一个SecurityApplications:

填写名称及要开放的端口:

新建一个Security Rules:

填写以下信息:

然后我们再回到k8s-master的SSH命令行工具运行kubectl get pods –n sock-shop:

查看示例电商的应用所有的pods是否都已经启动,如果状态都为running就表明整个系统已经可以使用了,我在浏览器中输入Kubernetes三个节点的任意一个节点的公网IP加30001端口号就能访问这个电商系统了:

接下来我们可以在这个系统里随意创建一个用户,并加购物车、下单等电商的所有主要功能都可以实现。
最后我们测试完毕后如果要释放所有资源时也非常方便,只需要停止Orchestration模版就可以删除所有的Oracle Compute资源,这里需要注意的是你所有的测试数据也将被删除不会有任何恢复的可能,因此每次关闭Orchestration模版时我们都要考虑清楚。

【总结】通过使用Oracle Compute云的各种服务特别是Orchestration功能应该非常快速的部署一个Kubernetes集群,接着我们还借助Kubernetes对容器封装下微服务良好支持快速部署了一个电商网站。
作者简介
黄德滨,甲骨文客户成功部资深架构师,致力于帮助Oracle企业级客户成功采用Oracle PaaS和IaaS解决方案和产品。具有各个行业多年云平台架构的实施经验,曾经在百度和亚马逊AWS担任资深架构师的角色,对云平台及基于云平台的开发具有丰富的经验。
了解更多,敬请关注甲骨文开发者社区......

更多精彩,请大家关注以下二维码抢先注册!





