Getting Started with Kubernetes
Docker和Kubernetes都是Linux本地技术;因此,它们必须在Linux主机操作系统中运行。我们假设大多数Java开发人员使用Windows或Mac开发,因此为了利用Docker和Kubernetes带来的强大功能,我们需要在主机操作系统上使用客户Linux VM。您可以为您的环境下载Docker机器和工具箱,但是您需要手动安装Kubernetes(这可能有点棘手)。您可以使用上游的Kubernetes 镜像,但就像任何快速移动的开源项目一样,这些镜像可能会迅速变化,有时会变得不稳定。此外,为了充分利用Docker的可移植性,最好在不同环境之间使用至少相同的Linux内核,但最好使用相同的Linux发行版和版本。我们还有别的选择吗?
Microservices and Linux Containers
为了开始使用Docker和Kubernetes开发微服务,我们将利用一组名为RedHatContainerDevelopmentKit(CDK)的开发工具。CDK是免费的。
在包含Docker、Kubernetes和Web控制台的开发人员机器上运行的独立的小型VM(实际上,它是RedHatOpenShift,它基本上是具有其他开发人员自助服务和应用程序生命周期管理功能的Kubernetes的企业版;但是在本书中,我们只使用Kubernetes API)。
OpenShift?
RedHatOpenShift 3.x是一个Apache v2许可的开源开发人员自助服务平台OpenShift Source,该平台已经被改造为使用Docker和Kubernetes。OpenShift曾经拥有自己的集群管理和编排引擎,但是由于Kubernetes为容器集群管理世界带来的知识、简单性和强大功能,尝试重新创建另一个集群管理引擎是愚蠢的。更广泛的社区正聚集在Kubernetes周围,而红帽则全部与Kubernetes在一起。OpenShift有很多特性,但最重要的是它仍然是基于角色的Kubernetes,支持基于角色的访问控制、开箱即用的软件定义的网络、安全性、登录、开发人员构建和许多其他东西。我们在这里提到它,是因为我们将在本书其余部分使用的Kubernetes的味道是基于OpenShift的。我们还将使用oc OpenShift命令行工具,这些工具为我们提供了更好的用户体验,并允许我们轻松地登录到Kubernetes集群,并控制将部署到哪个项目中。我们提到的CDK既有Kubernetes,也有OpenShift。在本书的其余部分,我们将提到OpenShift和Kubernetes,它们可以互换,但使用OpenShift。
Getting Started with the CDK
使用CDK,您可以在笔记本电脑上作为Docker容器构建、部署和运行您的微服务,然后选择通过OpenShift内部的其他应用程序生命周期管理功能或使用您自己的工具在交付管道中交付您的微服务。CDK最好的部分是运行在真实 VM中,它应该与您的开发、QA和生产环境相匹配。
要启动cdk,请导航到安装目录和./Components/hril/hril-ose子目录,并键入以下内容:
这将引导您完成供应过程并引导VM。VM将在TCP:/10.1.2.2:2376处公开Docker守护进程,在https:/10.1.2.2:8443处公开Kubernetes API。接下来,我们需要为您的环境安装OpenShift oc命令行工具。这将允许我们登录OpenShift/Kubernetes并管理我们的项目/名称空间。您可以自己使用kubectl命令,但是使用oc登录命令更容易登录,因此对于这些示例,我们将使用oc。下载并安装oc客户端工具。
下载并安装了cdk和oc命令行工具之后,我们最不想做的事情就是设置两个环境变量,以便我们的工具能够找到OpenShift安装和Docker守护进程。要做到这一点,导航到./Components/hril/hril-ose目录,并运行以下命令:
这将设置环境变量。您可以输出环境变量,并手动配置它们(如果您愿意的话):
我们现在应该能够登录运行在CDK中的OpenShift:
您可以访问下列项目,并且可以切换 ‘oc下的项目<;Projectname>;’:
让我们创建一个新的项目/命名空间,部署我们的微服务
你应该准备好进入下一步了!
虽然不需要运行这些示例,但为本机开发人员计算机安装DockerCLI也很有用。这将允许您从开发人员的笔记本电脑中直接列出Docker镜像和Docker容器,而不必登录到VM。安装了DockerCLI后,您应该能够直接从命令行shell运行Docker(注意,前面讨论的环境变量应该设置):
Where to Look Next
在本章中,我们了解了在规模上部署和管理微服务的困难,以及Linux容器如何提供帮助。我们可以利用不可变交付来减少配置漂移,启用可重复部署,并帮助我们对应用程序进行推理,而不管它们是否在运行。我们可以使用Linux容器来启用服务隔离、快速交付和可移植性。我们可以利用像Kubernetes这样的可伸缩的容器管理系统,并利用许多内置的分布式系统特性,比如服务发现、故障转移、健康检查(以及更多!)。在Kubernetes上部署时,您不需要复杂的端口切换或复杂的服务发现系统,因为这些问题已经在基础设施本身中得到了解决。要了解更多信息,请查看以下链接:
- Kubernetes Reference Documentation
- “An Introduction to Immutable Infrastructure” by Josha Stella
- “The Decline of Java Application Servers when Using Docker Containers” by James Strachan
- Docker docs
- OpenShift Enterprise 3.1 Documentation
- Kubernetes
- Kubernetes Reference Documentation: Pods
- Kubernetes Reference Documentation: Labels and Selectors Kubernetes Reference Documentation: Replication Controller Kubernetes Reference Documentation: Services
原文:
作者源码:https://github.com/redhat-developer/microservices-by-example-source
有什么讨论的内容,可以加我微信公众号:
来源:oschina
链接:https://my.oschina.net/u/2277632/blog/1842177