深入剖析 Kubernetes
张磊
Kubernetes 社区资深成员与项目维护者
113629 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 57 讲
再谈开源与社区 (1讲)
结束语 (1讲)
深入剖析 Kubernetes
15
15
1.0x
00:00/00:00
登录|注册

11 | 从0到1:搭建一个完整的Kubernetes集群

你好,我是张磊。今天我和你分享的主题是:从 0 到 1 搭建一个完整的 Kubernetes 集群。
不过,首先需要指出的是,本篇搭建指南是完全的手工操作,细节比较多,并且有些外部链接可能还会遇到特殊的“网络问题”。所以,对于只关心学习 Kubernetes 本身知识点、不太关注如何手工部署 Kubernetes 集群的同学,可以略过本节,直接使用 MiniKube 或者 Kind,来在本地启动简单的 Kubernetes 集群进行后面的学习即可。如果是使用 MiniKube 的话,阿里云还维护了一个国内版的 MiniKube,这对于在国内的同学来说会比较友好。
在上一篇文章中,我介绍了 kubeadm 这个 Kubernetes 半官方管理工具的工作原理。既然 kubeadm 的初衷是让 Kubernetes 集群的部署不再让人头疼,那么这篇文章,我们就来使用它部署一个完整的 Kubernetes 集群吧。
备注:这里所说的“完整”,指的是这个集群具备 Kubernetes 项目在 GitHub 上已经发布的所有功能,并能够模拟生产环境的所有使用需求。但并不代表这个集群是生产级别可用的:类似于高可用、授权、多租户、灾难备份等生产级别集群的功能暂时不在本篇文章的讨论范围。
目前,kubeadm 的高可用部署已经有了第一个发布。但是,这个特性还没有 GA(生产可用),所以包括了大量的手动工作,跟我们所预期的一键部署还有一定距离。GA 的日期预计是 2018 年底到 2019 年初。届时,如果有机会我会再和你分享这部分内容。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《深入剖析 Kubernetes》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(372)

  • 最新
  • 精选
  • Roy Liang
    kubeadm最新版本已经为1.12,看到上面很多人遇到提示版本不对,重新安装低版本就好了 apt remove kubelet kubectl kubeadm apt install kubelet=1.11.3-00 apt install kubectl=1.11.3-00 apt install kubeadm=1.11.3-00

    作者回复: 对对对

    7
    61
  • Andy
    最新的部署ceph cluster需要多一条部署命令才可以部署成功: 1. kubectl apply -f https://raw.githubusercontent.com/rook/rook/master/cluster/examples/kubernetes/ceph/common.yaml 2. kubectl apply -f https://raw.githubusercontent.com/rook/rook/master/cluster/examples/kubernetes/ceph/operator.yaml 3. kubectl apply -f https://raw.githubusercontent.com/rook/rook/master/cluster/examples/kubernetes/ceph/cluster.yaml

    作者回复: 又更新啦,@编辑

    6
    26
  • 包治结巴
    张老师,请教一个问题,master部署完成后生成指令,比如“ kubeadm join 172.19.0.7:6443 --token xw4d6t.1dmpctojkcg9yqlf --discovery-token-ca-cert-hash sha256:45168e55ad19ac6126728e86c0a4c46e98c7df5d0312aec3fdd8d437dc24a3b9”,假如当时没有记下来,有什么命令可以再次让master生成这个指令吗?

    作者回复: 可以用kubeadm查看token

    11
  • 心情不错
    以后是不是开发负责部署单个docker, 运维负责宏观kubernetes?

    作者回复: 开发负责docker和一部分yaml文件,下一篇会讲一个流程

    11
  • 选择
    你好,照着你的教程,我在执行kubeadm init --config kubeadm.yaml, 提示:your configuration file uses an old API spec: "kubeadm.k8s.io/v1alpha1". Please use kubeadm v1.11 instead and run 'kubeadm config migrate --old-config old.yaml --new-config new.yaml', which will write the new, similar spec using a newer API version.用全新的虚拟机安装的 该怎么解决呢? 谢谢了

    作者回复: 解决方法你自己都贴出来了……

    7
  • John
    非常强的挫败感。第一,打败墙,花了几天。然后,应用了网络插件,但是仍然是 not ready,提示还是 network plugin is not ready cni config uninitiated。请问怎么看日志呢?

    作者回复: journalctl -l -u kubelet

    2
    7
  • hpfish
    为什么不解释一些常见的问题呢?第一次部哪有那么顺啊

    作者回复: kubeadm存在的意义就是要让你第一次部署就这么顺,要不然这个项目就太失败了。至于GFW的问题,肯定要自己想办法解决。

    6
  • Jeff.W
    网络受限的话觉得可以参考一下这个,使用Ansible脚本安装K8S集群,介绍组件交互原理,方便直接,不受国内网络环境影响 https://github.com/gjmzj/kubeasz。机器资源有限就弄个AllInOne?或者单主多从?老师怎么看?

    作者回复: Ansible等工具适合部署大规模集群,做实验环境得不偿失,不建议分散精力。

    6
  • huan
    分享一下这篇实践的小插曲,我是使用DigitalOcean的机器做的,没有墙的问题。 在使用weave-net的时候,怎么都通不过,报错是 weave-net的状态是 CrashLoopBackOff,看了container的log,也不懂啥意思,找了下k8s的troubleshoot页面的说明 (https://kubernetes.io/docs/setup/independent/troubleshooting-kubeadm/#pods-in-runcontainererror-crashloopbackoff-or-error-state),说是版本问题,不知道怎么解决。 然后随便找了另一个实现 Romana,替换weavenet `kubectl apply -f https://raw.githubusercontent.com/romana/romana/master/containerize/specs/romana-kubeadm.yml` 终于成功了,然后体验到了以前想都不敢想的Ceph,超赞

    作者回复: rook.io真的是个好东西

    6
  • Tokamak
    在执行kubeadm init config kubeadm.yaml时报如下错误: your configuration file uses an old API spec: "kubeadm.k8s.io/v1alpha1". Please use kubeadm v1.11 instead and run 'kubeadm config migrate --old-config old.yaml --new-config new.yaml', which will write the new, similar spec using a newer API version. kubedadm的版本信息是: kubeadm version: &version.Info{Major:"1", Minor:"12", GitVersion:"v1.12.0", GitCommit:"0ed33881dc4355495f623c6f22e7dd0b7632b7c0", GitTreeState:"clean", BuildDate:"2018-09-27T17:02:38Z", GoVersion:"go1.10.4", Compiler:"gc", Platform:"linux/amd64"} 系统环境是:ubuntu server 16.04 在google也搜索了,没有找到解决方法。麻烦老师解答一下解决方法。 今后在遇到类似的问题时,应该如何解决呢,希望张老师能提供一个解决问题的思路。或者是如何才能查看不同版本的kubernetes的参数的差异变化。 谢谢张老师~

    作者回复: 呃,提示都说了让你装kubeadm 1.11然后执行格式转换呢……为啥不操作呢

    5
收起评论
显示
设置
留言
99+
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部