如何开启Kubernetes之旅

简介: 本文讲的是如何开启Kubernetes之旅【译者的话】这篇文章由浅入深地介绍了如何开始Kubernetes学习,以及如何基于Kubernetes部署应用。作者给出了很多非常好的建议,指导读者掌握围绕Kubernetes的各个概念和相关技能,为学习Kubernetes指明了方向。
+关注继续查看
本文讲的是如何开启Kubernetes之旅【译者的话】这篇文章由浅入深地介绍了如何开始Kubernetes学习,以及如何基于Kubernetes部署应用。作者给出了很多非常好的建议,指导读者掌握围绕Kubernetes的各个概念和相关技能,为学习Kubernetes指明了方向。

从Hello Minikube到Kubernetes Anywhere,再到微服务示例应用,学习谷歌容器编排工具的途径比比皆是。
每一次的创新都带来一些新的麻烦。容器使得应用的打包和运行更加便捷,但是管理大规模容器依然是一个挑战。

Kubernetes是谷歌公司内部为解决这个问题而开发的产品,它提供了一个单一的框架来管理在整个集群中运行的容器。该产品提供的服务主要集中在“编排”上,但也涵盖了许多方面:容器调度、容器之间的服务发现、跨系统的负载平衡、滚动更新/回滚、高可用性等。

在这个指南中,我们将介绍创建Kubernetes集群并发布容器应用的基本知识。这并不是要介绍Kubernetes的概念,而是通过简单示例来展示这些概念如何在运行Kubernetes的过程中结合在一起的。

选择一个Kubernetes主机

Kubernetes是为了管理Linux容器而诞生的。但是,从Kubernetes 1.5起,尽管Kubernetes控制面板必须继续在Linux上运行,但Kubernetes已经开始支持Windows Server Containers。当然,借助虚拟化,您可以在任何平台上开始使用Kubernetes。

如果您选择在自己的硬件或虚拟机上运行Kubernetes,一个常见的方法是获取绑定Kubernetes的Linux发行版。这样就不需要设置Kubernetes,不仅省去了安装和部署过程,甚至配置和管理的过程也不需要了。

CoreOS Tectonic就是这样的一个发行版,专注于容器和Kubernetes,几乎完全排除其他任何东西。RancherOS采取类似的做法,同样自动化执行大部分的设置。两者都可以安装在各种环境中:裸机,Amazon AWS VMs,Google Compute Engine,OpenStack等。

另一种方法是在常规的Linux发行版上运行Kubernetes,尽管通常会带来更多的管理开销和手动调整。例如,红帽企业Linux在其软件库中有Kubernetes,但即使是Red Hat,也建议仅用于测试和实验。建议红帽用户通过OpenShift PaaS使用Kubernetes,而不是自己动手从头搭建,OpenShift现在使用Kubernetes作为自己的容器编排系统。许多传统的Linux发行版提供了设置Kubernetes和其他大型软件堆栈的特殊工具。例如,Ubuntu提供了一种名为conjur-up的工具,可用于在云和裸机实例上部署Kubernetes的上游版本

选择一种托管Kubernetes的云

尽管在谷歌云平台(GCP)上,Kubernetes已经全面支持了,但是在很多其他云平台上,Kubernetes是否支持依然是一个焦点问题。GCP提供了运行Kubernetes的两种主要方式。最方便和集成最好的方式是通过Google容器引擎,它允许您运行Kubernetes的命令行工具来管理创建的集群。或者,您可以使用Google Compute Engine来创建计算集群并手动部署Kubernetes。这种方法对用户的技能要求比较高,但是允许用户使用Google Container Engine尚未支持的个性化定义。如果您刚开始接触容器,最好坚持使用容器引擎。经过一段时间之后,您对Container Engine有了一定的了解,就可以尝试一些更高级的内容,比如您自己选择特定版本的Kubernetes进行部署,或者部署运行Kubernetes发行版的虚拟机。

亚马逊EC2有容器的原生支持,但没有原生支持Kubernetes作为容器编排系统。在AWS运行Kubernetes类似于使用谷歌计算引擎:配置一个计算集群,然后手动部署Kubernetes。

许多Kubernetes的发行版都有如何在AWS部署的详细说明。例如,CoreOS Tectonic,有一个图形化的安装程序,同时还支持Terraform基础设施配置工具。此外,Kubernetes kops工具可以被用来配置一组AWS上的虚拟机集群(通常使用Debian Linux,但是其他的Linux版本也部分支持)。

微软Azure通过Azure Container Service来支持Kubernetes。然而,从将Kubernetes作为一个托管在Azure上的服务这个角度来说,这不是很“原生”的支持。相反,Kubernetes是由一个Azure资源管理模板部署的。Azure对于其他的容器编排系统(比如Docker Swarm和Mesosphere DC/OS)的支持也是这种思路实现的。如果您在这里提到的任何其他的云中部署Kubernetes,并且希望完全控制它,在Azure虚拟机上安装一个Kubernetes的核心版永远是简单可行的办法。

在各种环境(云端或其他方式)中快速配置一个基础Kubernetes集群的方式就是使用名为Kubernetes Anywhere的项目。此脚本适用于Google Compute Engine,Microsoft Azure和VMware vSphere(需要vCenter)。在每种情况下,它为启动过程提供了一定程度的自动化。

您自己的小部分Kubernetes节点

如果你只是在一个像开发机器这样的本地环境中运行Kubernetes,而且你不需要整个Kubernetes全部能力,那么有几种方法可以设置“刚好足够”的Kubernetes来进行使用。

其中一种方式是使用由Kubernetes开发团队本身提供的MiniKube。运行它,您会得到一个单节点Kubernetes集群部署在您选择的虚拟主机上。minikube有几个前提,如kubectl命令行接口和虚拟化环境如VirtualBox,但那些都有现成的二进制,支持MacOS,Linux和Windows。

对于MacOS上的CoreOS用户,有Kubernetes Solo。它运行在一个CoreOS虚拟机上,提供了一个状态栏应用程序实现快速管理。Solo也包括Kubernetes包管理程序Helm(通常是Helm下一级),因此基于Kubernetes的应用程序包更容易获取和设置。

玩转您的容器集群

当您的Kubernetes运行起来之后,您就可以运行和管理容器了。通过部署和管理基于很多容器的应用示例的方式,您可以轻松地熟悉容器的操作。以一个现有的基于容器的应用程序demo为例,自己组装它,看看它是如何组成的,部署它,然后逐步修改它,直到满足您的预期。如果您选择通过minikube找到立足点,您可以使用Hello Minikube教程创建Docker容器,将这个运行简单的Node.js应用的容器托管在单节点Kubernetes,以此来演示集群安装和应用部署。一旦您对这些都熟悉了,您就可以替换成自己的容器,并做一些实践性部署。

下一步是部署一个示例应用程序,这个程序类似您可能在生产环境中使用的应用。通过这个应用您可以进一步熟悉Kubernetes的一些高级概念,比如pods(一个或多个容器,包括一个应用程序),service(一组逻辑的Pod),replica sets(提供应用在机器故障时的修复机制)和deployment(应用程序的版本)。揭开WordPress/MySQL示例应用程序的神秘面纱,例如,你看到的将不仅仅是如何将应用部署到Kubernetes,并让这些应用正常运行。您也将看到Kubernets应用涉及的很多概念的实现细节,而这些应用都是满足生产环境要求的。您将学习如何设置持久卷以保存应用程序的状态,如何将Pod暴露给彼此,以及如何通过services与外部世界连在一起,以及如何将应用程序密码和API密钥存储为secrets等等。

Weaveworks有一个示例应用程序,袜子商店,展示了微服务模式如何用来组合Kubernetes中的应用。袜子商店对于熟悉底层技术(比如Node.js,Go kit和Spring Boot)的人来说是最有利的,但主旨超越了特定的框架,而是说明云原生技术。

如果您看了一眼WordPress/MySQL的应用,并想创建一个运行在Kubernetes上的应用来满足您的需求,这种想法基本上是对的。Kubernetes有一个应用程序定义的系统称为Helm,它提供了一种打包、版本管理和共享Kubernetes应用的机制。一些主流的应用程序(GitLab,WordPress)和构建应用程序的模块(MySQL、NGINX)将Helm作为一站式直通kubeapps门户的最佳实践。

深入探索Kubernetes

Kubernetes通过强大的抽象能力简化了容器的管理,比如Pod和Service,同事通过label和namespace机制提供了很大的灵活性,label和namespace都可以用来隔离pod,services和deployments(比如开发环境、过渡环境和生产环境负载)。

如果您选择上面的示例的一个,并在多个命名空间中创建不同的实例,那么可以对独立于其他命名空间的组件进行更改。您可以使用deployments,以允许这些更新在给定的命名空间中的多个pod之间滚动进行

比这种练习更进一步的是学习Kubernetes本身如何能够被管理基础设施的工具所驱动。以Puppet为例,有一个用于创建和操纵Kubernetes资源的模块,但是HashiCorp’s Terraform很早就有支持,但是支持方式演变成将Kubernetes作为一种资源进行管理。如果您打算使用这样的资源管理器,请注意不同的工具可能会给表带来不同的预期结果。以Puppet and Terraform为例,默认分别使用可变的和不可变的基础设施。这些哲学层次和行为的差异,如何或轻松,或困难地创建您所需要的Kubernetes。

这个故事,“如何开启Kubernetes之旅”最初发表在InfoWorld

原文链接:How to get started with Kubernetes (翻译:付辉)

原文发布时间为:2017-07-19

本文作者:付辉

本文来自云栖社区合作伙伴Dockerone.io,了解相关信息可以关注Dockerone.io。

原文标题:如何开启Kubernetes之旅

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
9月前
|
存储 Kubernetes 网络协议
【K8S专栏】Kubernetes有状态应用管理
【K8S专栏】Kubernetes有状态应用管理
|
10月前
|
存储 Kubernetes 负载均衡
Kubernetes 简介 | 学习笔记
快速学习 Kubernetes 简介
116 0
Kubernetes 简介 | 学习笔记
|
10月前
|
Kubernetes Cloud Native Docker
云原生|kubernetes|kubeadm方式安装部署 kubernetes1.20(可离线安装,修订版---2022-10-15)(三)
云原生|kubernetes|kubeadm方式安装部署 kubernetes1.20(可离线安装,修订版---2022-10-15)
253 0
云原生|kubernetes|kubeadm方式安装部署 kubernetes1.20(可离线安装,修订版---2022-10-15)(三)
|
10月前
|
Kubernetes Cloud Native Docker
云原生|kubernetes|kubeadm方式安装部署 kubernetes1.20(可离线安装,修订版---2022-10-15)(二)
云原生|kubernetes|kubeadm方式安装部署 kubernetes1.20(可离线安装,修订版---2022-10-15)
125 0
|
10月前
|
Kubernetes 网络协议 Cloud Native
云原生|kubernetes|kubeadm方式安装部署 kubernetes1.20(可离线安装,修订版---2022-10-15)(一)
云原生|kubernetes|kubeadm方式安装部署 kubernetes1.20(可离线安装,修订版---2022-10-15)
177 0
云原生|kubernetes|kubeadm方式安装部署 kubernetes1.20(可离线安装,修订版---2022-10-15)(一)
|
11月前
|
存储 Kubernetes 负载均衡
Kubernetes简介
Kubernetes 是一个可移植、可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化。 Kubernetes 拥有一个庞大且快速增长的生态,其服务、支持和工具的使用范围相当广泛。
219 0
|
存储 机器学习/深度学习 运维
Kubernetes 上运行有状态应用的最佳实践
在容器化的早期阶段,它们被设定为一种运行无状态应用的机制。
242 0
Kubernetes 上运行有状态应用的最佳实践
|
存储 Kubernetes 应用服务中间件
十二、kubernetes 核心技术configMap
kubernetes 核心技术configMap
115 0
|
存储 Kubernetes 网络协议
Kubernetes入门基础
Kubernetes入门基础
189 0
Kubernetes入门基础
|
运维 Kubernetes Linux
Kubernetes 简介
月初公司内云计算团队组织了一次 Workshop,介绍了一下如何使用他们的 Kubernetes 产品,并带着我们实践了一下。感觉 Kubernetes 相较于我们现在使用的部署模式,方便了很多,虽然我们现在的系统使用场景并不适合使用 Kubernetes,但是说不定以后就能用到它了,所以我就深入的研究了一下 Kubernetes 的使用和实现机理,希望能给大家带来帮助。本文作为 Kubernetes 系列文章的开篇,着重介绍一下 Kubernetes 是什么以及简单的使用方式。
推荐文章
更多