专栏首页EAWorld容器云之K8s自动化安装方式的选择

容器云之K8s自动化安装方式的选择

目前kubernetes 已经发展到1.5的时代,但在这之前学习和使用kubernetes还是走了不少弯路,第一个问题就是安装,也许你会说安装很简单。照着官网或网上抄一篇就可以装上了……

而我们使用kubernetes是1.1和1.2版本的时候,那时候最权威的文档应该就是kubernetes.io官网文档……,然而我们在官网进行问题检索的时候会出现(这张图来源网络)

这张图已经很明说明问题了……由于安装过程中的存在的问题,造成之后在使用过程中的一系列问题……

随着kubernetes的发展(目前已经到达1.5 beta版),和之前相比官方文档也已经更加完善。同时也出现了多种安装kuberntets的方法,在这么多种的安装法我们该如何选择呢?

今天为大家介绍5种安装方法

minikube

minikube 由 CoreOS 提供在单机上构件 kubernetes 集群。minikube命令可以运行在windows/linux/macos等平台,使用minikube搭建本地集群是非常方便的,同时minikube提供了完整的kubernetes集群的功能。对于初识者minikube是一种很好的安装方式,而且上手也非常快。但问题在于minikube安装的时候需要连接互联网,而且网络需要足够好……道理很简单。

这是官网使用minikube来启动kubernetes集群。有兴趣的可以查看github关于minikube的信息。

kubeadm

kubeadm 可以运行在物理机、虚拟机以及云主机,并且可以与chef或puppet配合可以完成自动化部署安装。kubeadm与minikube一样,你的网络要好,原因也很简单……

kubeadm 是 kubernetes 在1.4版推出安装 kubernetes 集群。目前还处于alpha,不建议在生产环境使用。本人在centos系统上安装测试时会出现无法连接到kubeadm所需要的yum源。即使按照官网配置了源也行出现无法下载源,最后是找到三方源才能顺利安装完成。在安装过程中可选的配置参数太少,所以基本都需要在使用过程中自行修改。

如图就是官方说明添加yum源,ubuntu没测试过。

hyperkube image

hyperkube images 由 Google 推出将 kubernetes 各组件以容器方式运行。容器可以有(docker/rkt等)。使用 hyperkube images 需要提前配置 kubelet 组件。最终通过kubelet将kubenetes部署各组件。这种安装方法的好处是:只要系统可运行容器,就可以通过hyperkube images 来运行kubernetes组件。

通过 hyperkube images 部署kubernetes组件,首先你的网络要好,原因很简单……或者你提前在本地准备好 hyperkube images 。

前面说过使用 hyperkube images 需要使用 kubelet 组件。运行kubelet组件可以有两种方法:docker和systemd。

通过设置kubelet 的--config目录。kubelet 会自动运行此目录中所添加的组件。在这里需要注意是,在kubernetes V1.3的版本,需要手动创建kube-system的namespace 而V1.4版本不需要配置。

docker

docker images 由 kubernetes 在发行版本中提供 docker images,并通过 docker images 运行 kubernetes 组件。所需要的镜像包在kubernetes-server-linux-amd64.tar.gz里。

SystemD

第五种方法通过SystemD来实现,这也是我们在生产和测试环境使用的方法。

(图片来自网络)

Like it or not, systemd is here to stay.

看完上图也许我会明白systemd在系统中的重要做用。

在这之前,我们在Linux下使用容器你会发现,不能挑内核,不能加载内核模块,不能挂载文件系统,不能调整内核参数,不能改网络配置。如果你在运行容器时使用了 docker run –privileged 那我只能说祝你好运。

如果容器就是通过cgroups堆出来,那么容器本身的/sys /dev 和 /proc 存在隔离性的问题。

因此通systemd+selinux 来进行管理,而kubernetes只需要调用systemd就完成对于容器的管理。

因此我在基于systemdd在自的环境编写了安装kubernetes各组件的脚本。

安装脚本主要完成上图的安装和配置。

总结

个人推荐使用systemd的方式来远行kubenetes各组件。如果可以,可以使用rkt+systemd。

文中可能存在错误的地方欢迎大家指正。希望大家在安装kubernetes时少走弯路。谢谢!

关于作者:

严伟

现任普元基础设施架构师,网络专家。传统企业突破内部局域网,公有云化之路上的幕后英雄 。

本文分享自微信公众号 - EAWorld(eaworld),作者:严伟

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-12-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Flannel+K8s容器网络通信实践

    ? 亲爱的各位朋友,大家好! 今天很高兴可以和大家分享我们普元云平台SEM使用kubernetes时,关于pod、service网络通讯的实践与大家分享。 以...

    yuanyi928
  • 为什么DevOps很好,但80%的公司却无法落地?

    前段时间,我们有发过一篇题为《炒了8年的概念,到底该如何理解DevOps这个词》的文章,文中作者就DevOps的概念、价值、目标、挑战做了梳理,如作者所说,实施...

    yuanyi928
  • 不容忽视的IT文化债务:6种影响5个问题和4种举措

    作者:John Rauser 译者:半部春秋 原题: Don’t Let Cultural Debt Bring Down Your Business 当今的...

    yuanyi928
  • 程序员修神之路--kubernetes是微服务发展的必然产物

    在很多项目的发展初期,都是小型或者大型的单体项目,部署在单台或者多台服务器上,以单个进程的方式来运行。这些项目随着需求的递增,发布周期逐渐增长,迭代速度明显下降...

    架构师修行之路
  • 程序员修神之路--kubernetes是微服务发展的必然产物

    在很多项目的发展初期,都是小型或者大型的单体项目,部署在单台或者多台服务器上,以单个进程的方式来运行。这些项目随着需求的递增,发布周期逐渐增长,迭代速度明显下降...

    心莱科技雪雁
  • 国内源安装kubernetes的工具

    禹都一只猫olei
  • Masnory 约束同行View

    developerbfl
  • 不可变和ES6中的const

    在很多人的意识中,JS里的const变量仿佛就是其他语言中的常量一样完全不可变,——这样理解const的作用当然是完全错误的,然而不幸的是这种误解从没消失过,甚...

    疯狂的技术宅
  • js 将json字符串转换为json对象的方法解析

    将json字符串转换为json对象的方法。在数据传输过程中,json是以文本,即字符串的形式传递的,而JS操作的是JSON对象,所以,JSON对象和JSON字符...

    小柒2012
  • 为什么不建议你入门计算机视觉

    作者:Jackpop https://zhihu.com/p/question/317440183 本文已授权,未经允许,不得二次转载

    小白学视觉

扫码关注云+社区

领取腾讯云代金券