使用Rancher 2.0管理Kubernetes工作负载

Posted RancherLabs

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Rancher 2.0管理Kubernetes工作负载相关的知识,希望对你有一定的参考价值。

Rancher 2.0是一个开源的企业级Kubernetes平台,现已发布Beta版。Rancher 2.0简洁直观的界面风格及操作体验,将解决业界遗留已久的Kubernetes原生UI易用性不佳以及学习曲线陡峭的问题。而Rancher 2.0创造性的多Kubernetes集群管理功能,更是将完美解决生产环境中企业用户可能面临的基础设施不同的困境。加之Rancher 2.0带来的监控、日志、CI/CD等一系列拓展功能,可以说,Rancher 2.0为企业在生产环境中落地Kubernetes提供了更加便捷的途径。


Rancher 2.0在设计过程中考虑了很多因素。你可以配置和管理Kubernetes集群,将用户服务部署到上面,并且可通过身份验证和RBAC轻松控制访问。而Rancher 2.0最出色的一个地方就是它直观的用户界面,我们希望借此揭开Kubernetes神秘的面纱,降低Kubernetes原本陡峭的学习曲线。在本文中,Rancher Labs首席软件工程师Alena将引导你理解Rancher 2.0新的用户界面,并会解释如何在Rancher 2.0中部署简单的nginx服务。


设计你的工作负载


在为应用程序部署工作负载之前,建议你先清楚以下这几件事:


  • 这个应用程序是有状态还是无状态的?

  • 需要运行多少个应用程序实例?

  • 放置规则是怎样的——应用程序是否需要在特定主机上运行?

  • 你的应用程序是否要发布成专用网络上的一个服务,这样其他应用程序可以和它通信?

  • 该应用程序是否需要公共访问入口?


当然还有更多的问题需要回答,以上只是一些最基本的问题,也是一个好的起点。Rancher UI将提供更多有关工作负载上配置的详细信息,你可以在稍后对其进行调优和升级。


用Rancher 2.0部署属于你的第一个工作负载


我们先做一些有趣的事儿——部署一些非常简单的工作负载,使用Rancher将它们和外界对接。假设你已经安装好了Rancher(Rancher的安装极其简单,可以一键完成),并且至少配置了一个Kubernetes集群(这可能没有“一键部署”那么简单,不过也非常快)。那么现在你要做的是切换到Project View,点击Workloads页面上的“Deploy”:

除了镜像和端口映射(我们将在后文介绍更多细节),所有的选项都是默认的。我希望我的服务能够在集群中的每个主机上的随机一个端口发布,当端口命中时,流量会重定向到nginx内部80端口。在部署了工作负载之后,将会在UI中设置公共端口以方便访问。

使用Rancher 2.0管理Kubernetes工作负载

通过点击31217公共端口链接,你可以直接跳转到你的服务中:

使用Rancher 2.0管理Kubernetes工作负载

如你所看到的那样,只需要一个步骤就能够部署工作负载并将其发布到外部,这和Rancher 1.6非常相似。如果你是Kubernetes的用户,那么你肯定知道这需要几个Kubernetes对象来备份上述的部署和服务。部署将负责启动容器应用程序;它还会监控容器的运行状况,如果基于重启策略产生崩溃,则重新启动。但是为了将应用程序发布到外部,Kubernetes需要一个明确创建的服务对象。Rancher通过用户友好的交互方式获取工作负载声明,并在后台创建所有需要的Kubernetes结构,这将大大简化终端用户的工作。关于这些结构的内容会在下一部分介绍。


更多的工作负载选项


默认情况下,Rancher UI向用户提供是工作负载部署的最基本选项。你可以自行更改这些选项,比如说从更改工作负载类型开始:

使用Rancher 2.0管理Kubernetes工作负载

根据所选的类型,会创建相应的Kubernetes资源。


  • (n)Pods的可扩展部署——Kubernetes部署

  • 在每个节点上运行一个pod——Kubernetes DaemonSet

  • 状态集——Kubernetes StatefulSet

  • 在cron时间表上运行——Kubernetses CronJob


根据类型的不同,还可以设置镜像、环境变量和标签之类的选项,这些都将定义应用程序的部署规范。现在,可以通过端口映射(Port Mapping)部分完成应用程序到外部的公开:

使用Rancher 2.0管理Kubernetes工作负载

通过这个端口声明,在部署工作负载之后,它将通过集群中每个节点上的同一个随机端口公开。如果你需要设定特定的值而不是随机产生,那么就在Source Port下修改端口。在Publish on下还有几个选项:

使用Rancher 2.0管理Kubernetes工作负载

根据所选的内容,Rancher将在Kubernetes侧创建相应的服务对象:


  • 每个节点——Kubernetes NodePort服务

  • 内部集群IP——Kubernetes ClusterIP服务。只有在这种情况下,才能通过专用网络访问你的工作负载

  • 负载均衡器——Kubernetes负载均衡器服务。只有当你的Kubernets集群部署在公有云(如AWS)中,并且有一个外部负载均衡器支持(如AWS ELB)时,才需要选择此选项

  • 运行pod的节点——不会创建服务;HostPort选项在部署规范中设置


我们在这里强调了实现细节,不过你其实并不会真正使用到它们。Rancher UI/API将提供所有必需的信息,只需要单击一下那个连到工作负载的链接,即可访问你的工作负载。


使用Ingress时工作负载间的流量分配


还有一种方法可以发布工作负载——通过Ingress。它不仅在标准http的80/443端口上发布应用程序,还提供L7路由功能以及SSL终止。如果你部署一个Web应用程序,并且希望根据主机/路径路由规则路由到不同的端口,那么这样的功能是非常有用的:

使用Rancher 2.0管理Kubernetes工作负载

与Rancher 1.6不同的是,负载均衡器不适合像haproxy这样的特定LB提供者。因集群类型不同,实现也不一样。对于谷歌容器引擎(GCE)集群,负载均衡器是GLBC;对于Amazon EKS,它是AWS ELB/ALB;而对于Digital Ocean/Amazon EC2;用的是nginx负载均衡器。我们将会在未来根据用户的需要推出更多的负载均衡器。


更强大的服务发现



  • DNS值的别名

  • 指向一个或多个现有工作负载的自定义记录


所有上述内容都可以在用户界面的工作负载服务发现(Workloads Service Discovery)页面中找到:

使用Rancher 2.0管理Kubernetes工作负载

如你所见的那样,在Rancher 2.0中配置工作负载和在1.6中一样简单。尽管Rancher 2.0后端现在是通过Kubernetes实现所有功能,但是Rancher UI仍然像以前一样简化工作负载的创建。通过Rancher接口,你可以向外界公开你的工作负载,将其放置在负载均衡器后面,并配置内部服务发现——这一切都以一种直观且简单的方式完成。

 

这篇文章介绍了工作负载管理的基本知识。未来我们还会带来更多的有关其他Rancher 2.0特性和功能的文章,比如卷、应用程序目录等等。此外,Rancher 2.0的UI和后端也在不断的更迭。有可能当你读到这篇文章的时候,已经有了更酷的功能出现,那么敬请期待咯!



 推荐阅读 

使用Rancher 2.0管理Kubernetes工作负载

使用Rancher 2.0管理Kubernetes工作负载

使用Rancher 2.0管理Kubernetes工作负载

使用Rancher 2.0管理Kubernetes工作负载



Rancher 2.0 Beta版现已正式发布!开源的企业级Kubernetes平台,多K8s集群统一纳管,告别K8s原生UI易用性不佳以及学习曲线陡峭的难题,助力企业在生产环境落地K8s。欢迎参与今晚的Rancher 2.0在线培训!

点击“阅读原文”,报名活动

以上是关于使用Rancher 2.0管理Kubernetes工作负载的主要内容,如果未能解决你的问题,请参考以下文章

如何从Rancher 1.6迁移到Rancher 2.0?这份清单可以帮助你!

详解K8S与Rancher 2.0内的身份认证与授权

Rancher 2.0 里程碑版本:支持添加自定义节点!

Rancher 2.0快速上手指南

从Rancher 1.6到2.0:术语及概念变化对比

如何在Rancher 2.0上快速部署Datadog