Kubernetes是一个开放源代码的容器编排平台,可自动执行容器的部署、管理、扩容伸缩和网络管理。
它是由Google使用Go语言开发的,这项了不起的技术从年开始一直是开源的。
根据StackOverflow开发者调研报告-,Kubernetes是#3最喜爱的平台以及#3最想要的平台。
除了功能强大之外,Kubernetes是公认的难上手。入门确实不容易,但是只要你符合入门条件并且有足够的耐心完成该指南,你将可以:
对基础知识有深入的了解。可以创建和管理Kubernetes集群。部署任意应用程序到Kubernetes集群上。入门条件熟悉JavaScript熟悉Linux终端熟悉Docker(建议阅读:Docker入门教程-最新版)项目代码实例中的代码可以在这个仓库中找到(你的?是我动力的源泉)。k8s分支包含完整的代码。
目录容器编排和Kubernetes简介安装KubernetesKubernetes初体验Kubernetes的架构ControlPlane组件Node组件Kubernetes对象PodsServices全景图清除Kubernetes相关资源声明式部署方法编写你的第一套配置Kubernetes控制面板使用多容器应用程序部署计划复用Controllers,ReplicaSets以及Deployments创建你的第一个部署调试Kubernetes资源从Pods获取容器日志环境变量创建数据库部署PersistentVolumes和PersistentVolumeClaimsPersistentVolumes的动态预配置通过Pods连接Volumes组装起来使用IngressControllers设置NGINXIngressControllerKubernetes中的Secret和配置在Kubernetes中执行更新发布组合Configurations答疑结论容器编排和Kubernetes简介摘自RedHat—
"容器编排是指自动化容器的部署、管理、扩展和联网。
容器编排可以在使用容器的任何环境中使用。它可以帮助你在不同环境中部署相同的应用,而无需重新设计。"
让我来给你看一个例子。假设你开发了一个很棒的应用,这个应用可以根据时间向人们推荐他们应该吃什么。
假设你已经使用Docker容器化了应用并将其部署在了AWS上。
如果应用因为某种原因宕机,用户马上就不能访问该服务了。
要解决此问题,可以为同一应用程序制作多个副本,使其服务高可用。
即使其中一台实例发生故障,其它两台实例也可以为用用户提供服务。
假设你的应用程序在熬夜党中流行了起来,在你晚上睡觉的时候涌入大量的请求。
如果所有的实例都因为过载而无法响应该怎么办?谁来进行自动伸缩?即使你扩容了50个副本,谁来做健康检查?如何设置网络使使流量打到合适的端点上?负载均衡也是一个大问题,你说呢?
Kubernetes可以很容易的搞定这些问题。Kubernetes是一个由多个组件组成的容器编排平台,它可以一刻不眠的使是你的服务保持在理想状态。
假设你要连续运行50个应用程序副本,如果请求量激增,服务器也能自动扩容。
你只需把你的需求告诉Kubernetes,它将为你完成其余的繁重工作。
Kubernetes会实现并维护状态。如果有旧副本挂掉了,它将创建新的副本,管理网络和存储,推出或回滚更新,甚至在必要时升级服务。
安装Kubernetes实际上,在本地计算机上运行Kubernetes与在云平台上运行Kubernetes有很大不同。你需要下面两个程序,来启动和运行Kubernetes。
minikube-它可以在本地计算机的虚拟机(VM)上运行单节点Kubernetes集群。kubectl-Kubernetes命令行工具,可以在Kubernetes集群上执行命令。除了这两个程序之外,你还需要一个管理程序和一个容器平台。显然Docker就是所需的容器平台。推荐的管理程序如下:
Hyper-VWindows系统HyperKitMac系统DockerLinux系统Hyper-V作为可选功能内置于Windows10(Pro、Enterprise和Education)中,可以从控制面板中打开。
HyperKit是Mac平台DockerDesktop的核心组件。
在Linux上,你可以直接通过Docker绕过整个管理程序层。它比任何管理程序都高效,是Linux上运行Kubernetes的推荐方法。
你可以继续安装上述任何管理程序。或者你想保持简单,只需要获取VirtualBox。
文章的剩余部分,我们假设你正在使用VirtualBox。别担心,即使你正在使用其他管理程序,区别也不会太大。
整篇文章,我在装有Ubuntu的机器上使用带有Docker驱动程序的minikube完成。
安装了管理程序和容器化平台之后,就该安装minikube和kubectl程序了。
如果你使用Mac或Windows,安装完DockerDesktop后kubectl就已经安装了。可在此处找到Linux的安装说明。
另外minikube也是必需要安装的,可以在Mac上使用Homebrew,Windows上使用Chocolatey来安装minikube。可以在此处找到Linux的安装说明。
安装完成后,可以通过执行以下命令来测试是否安装成功:
minikubeversion#minikubeversion:v1.12.1#