如何开启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之旅

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
存储 运维 Kubernetes
服务搭建篇(十二) Kubernetes集群的安装及部署
在所有k8s node机器执行上图第三个红框里的命令 将node节点加入进master节点的集群里,复制上图第三个红框里的命令执行(执行自己的命令)
329 0
|
8月前
|
存储 Kubernetes 安全
Kubernetes Pod配置:从基础到高级实战技巧
Kubernetes Pod配置:从基础到高级实战技巧
373 0
|
Kubernetes Linux 测试技术
【kubernetes】从零开始搭建K8S集群
【kubernetes】从零开始搭建K8S集群
1701 1
|
Kubernetes 网络协议 Cloud Native
云原生|kubernetes|kubeadm方式安装部署 kubernetes1.20(可离线安装,修订版---2022-10-15)(一)
云原生|kubernetes|kubeadm方式安装部署 kubernetes1.20(可离线安装,修订版---2022-10-15)
254 0
云原生|kubernetes|kubeadm方式安装部署 kubernetes1.20(可离线安装,修订版---2022-10-15)(一)
|
Kubernetes Docker 微服务
Kubernetes 实战教学,手把手教您在 K8s 集群上部署 Istio Mesh(一)
Istio 是一个完全的开源服务网格,它可以对现有的分布式应用程序进行清晰的分层处理。近期,Istio v1.0版本已经正式上线。Istio 完全由 Go 语言编写,它是一个相当成熟的平台......
12172 0
|
Kubernetes Cloud Native Docker
云原生|kubernetes|kubeadm方式安装部署 kubernetes1.20(可离线安装,修订版---2022-10-15)(三)
云原生|kubernetes|kubeadm方式安装部署 kubernetes1.20(可离线安装,修订版---2022-10-15)
403 0
云原生|kubernetes|kubeadm方式安装部署 kubernetes1.20(可离线安装,修订版---2022-10-15)(三)
|
Kubernetes Cloud Native Docker
云原生|kubernetes|kubeadm方式安装部署 kubernetes1.20(可离线安装,修订版---2022-10-15)(二)
云原生|kubernetes|kubeadm方式安装部署 kubernetes1.20(可离线安装,修订版---2022-10-15)
189 0
|
运维 Kubernetes 监控
【K8S专栏】Kubernetes应用访问管理(三)
【K8S专栏】Kubernetes应用访问管理
|
存储 Kubernetes 网络协议
Kubernetes入门基础
Kubernetes入门基础
261 0
Kubernetes入门基础
|
canal Kubernetes 安全
Kubernetes----Kubernetes常用插件简介
Kubernetes----Kubernetes常用插件简介
375 0