极简的配置单节点Kubernetes(k8s)集群
在传统的概念当中,Docker是简单易用的,Kubernetes是复杂强大的。 深入了解 之后会发现Docker的简单是因为用户可以从基本功能开始用起, 只需要一台Linux主机,运行一下apt-get install docker-engine 或者yum install docker-engine,立马就可以用docker run启动一个新的容器, 整个过程与用户之前积累的Linux软件使用体验高度一致。 而Kubernetes则要求用户要分别配置SDN,ssl证书,etcd,kubelet,apiserver, controller-manager,scheduler,proxy,kubectl等多个组件, 刚刚接触对架构还不了解的新人一下就懵了。 过高的早期门槛把许多对Kubernetes感兴趣的用户挡在了外面,给人留下一种难以上手的感觉。
事实上,当整个系统扩展到多个节点,需要通盘考虑身份认证,高可用, 服务发现等高级功能后,Docker Swarm与Kubernetes的复杂度是接近的。 也许我们最初的比较出现了一点偏差, 将位于更高阶的集群管理和调度系统Kubernetes和位于底层的容器引擎Docker Engine直接比较并不恰当。
现在我们了解到Kubernetes的复杂是因为它提供了更多的功能, 但是如果我们无法解决Kubernetes的上手困难问题,始终会有推广上的障碍。 对此,Kubernetes社区做出了许多努力。比如:
- minikube可以方便的在本机用虚拟机创建一个开箱即用的Kubernetes集群
- kubeadm可以自动化的将多台Ubuntu或者CentOS主机组建成集群
- nanokube,kid等自动初始化脚本
充分利用已有的工具, 我们可以在单台服务器上把Kubernetes的上手体验简化到与Docker接近的程度, 新用户可以不再纠结于安装和配置,尽快开始使用Kubernetes完成工作, 在业务需求增长时,再扩展集群成为多节点高可用的完整集群。
下图是一张学习曲线的示意图,可以看到当引入单节点Kubernetes作为过渡之后, 整个学习曲线更加平滑,在早期简单环境时更接近Docker, 在后期环境完整时又能够充分利用Kubernetes的优势。
有多种方法可以创建单节点的Kubernetes集群,接下来分享其中一个比较简单方便的。
准备工作
首先准备一台Linux服务器,根据Docker中文文档安装好Docker。
接着下载localkube和kubectl:
$ curl -o localkube https://storage.googleapis.com/minikube/k8sReleases/v1.5.1/localkube-linux-amd64 $ chmod +x localkube $ curl -O https://storage.googleapis.com/kubernetes-release/release/v1.5.2/bin/linux/amd64/kubectl $ chmod +x kubectl
localkube将Kubernetes所有的依赖程序全部打包成为了一个独立的可执行文件, 使用它可以省略掉几乎所有的配置流程,直接将Kubernetes跑起来。
目前localkube已经被合并进了minikube,最新的版本需要从minikube中下载。
kubectl是Kubernetes的客户端程序,可以用它控制集群。
启动Kubernetes
使用localkube启动集群非常简单:
$ ./localkube
当不加任何参数时,localkube会使用默认参数启动, 它所监听的localhost:8080将被用于接受控制指令。
这里并没有在后台运行localkube,如果你需要后台运行, 可以自行使用Linux上已有的各种工具完成。
使用kubectl控制集群
接下来的操作与多节点的集群完全一样。我们可以用kubectl来控制集群,比如:
$ ./kubectl run nginx --image nginx
是不是和docker run nginx几乎一样?在这里我们不详细介绍Kubernetes的操作, 请参考官方文档学习Kubernetes的使用方法。
需要指出的是,由于是极简的配置,并没有配置远程控制所需要的证书, 所以不能在本地电脑上控制这个集群,而需要ssh到服务器上进行控制。 这和默认的Docker配置是一致的。
总结
从上面的流程可以看到,Kubernetes也可以变得很简单,仅仅需要将所有组件合并到一起就可以了。 而这也恰恰是Docker选择的策略,在Docker的二进制文件中,被打包进了Docker Engine, 分布式存储,Docker Swarm等功能,使用起来只需要一个docker指令就可以完成全部的操作。 接下来需要思考的问题是,既然合并到一起会更加简单,那为什么Kubernetes会把各个组件拆开呢? 今后在详细介绍Kubernetes架构的时候会再给大家做详细的分析,这里就暂时留给大家下来自己思考了。
在刚接触Kubernetes的时候,使用all in one的localkube是有好处的。 可以把它整个看作Kubernetes,直接上手开始学习Pod,Service,ReplicaSet这些抽象概念, 而不用特别去关注里面的组件划分。虽然暂时只能在一台服务器上运行, 不能完全的展现Kubernetes编排和调度的能力,但是用于学习和测试已经完全足够了。
待对Kubernetes建立了基本的概念之后,再进行多节点的集群部署, 在那时再来折腾SDN,ssl证书这些更偏重运维的组件时,才会有比较合理的投入产出预期。
还在等什么?快点把你的Docker主机升级为Kubernetes主机吧。就算没有联网形成集群, 使用更高的抽象来构建你的业务,也将为今后的发展打下良好的基础。
本文转自中文社区-极简的配置单节点Kubernetes(k8s)集群
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
看Kubernetes 1.5之后如何称霸容器编排管理界
2016 年 12 月, Kubernetes 1.5 的发布,上述 Linux 和 Windows 一起运行的梦想终于得以实现。 微软宣布支持 Kubernetes Kubernetes 眼下已成为众多容器管理系统核心——比如 CoreOS 公司的商务平台 Tectonic。最近,微 软也宣布已将 Kubernetes 整合到其公有云上。 “现在,我们支持 Kubernetes,它会比原来更加好用,并且宣布 Azure 容器服务的预发布版本,”Azure 的计算总监,Corey Sanders 在微软 Azure 发布的时候说道,“对 Kubernetes 本地有更高等级的支持,会为容器编排引擎提供了另外一个开源选择。” 微软也支持 Docker Swarm 和 Mesosphere 的 DC/OS,但是似乎 Kubernetes 更加有掌控容器编排界的趋势。随着事物的发展速度变快,Kubernetes 可能并非容器界的唯一一匹快马,但是它确实是很多厂商的选择。它的地位至此,值得深思。 开源软件公司 Red Hat 的高级产品经理,同时也是决定将 Red Hat 开源 OpenShi...
- 下一篇
正确的在Kubernetes集群中使用SDN技术方法
SDN是Software-defined networking的缩写。在许多介绍Kubernetes的文档,特别是安装文档中, 当介绍到Kubernetes所需的容器网络时常常会提到这个缩写,告知用户需要使用某种SDN技术用以解决“每个Pod有独立IP, Pod之间可以不经过NAT直接互访”这一Kubernetes集群最基本的技术要求。 大多数非网络工程师背景的技术人员对SDN这个概念会比较陌生,当读到这个段落时,往往会选择把它当作Kubernetes的底层依赖, 照着文档所推荐的流程安装一款SDN工具,比如Flannel,Calico,Weave等。由于不了解这些工具的原理,同时 缺乏实际的使用经验, 当出现文档以外的异常情况时,整个安装流程就卡住了。SDN俨然成为了Kubernetes大规模普及的拦路虎。 那些按照文档顺利搭建起来的集群当中,还有不少使用了并不适合该集群所处环境的SDN技术,造成了额外的运维负担以及潜在的安全风险。 让我们不得不思考一个问题,怎样才是正确的在Kubernetes集群中使用SDN技术的方法? 今天我们来详细聊聊这个话题。 结论先行 在大多数的Kuber...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS8编译安装MySQL8.0.19
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Windows10,CentOS7,CentOS8安装Nodejs环境
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7