深入剖析Kubernetes
张磊
Kubernetes社区资深成员与项目维护者
立即订阅
22715 人已学习
课程目录
已完结 56 讲
0/4登录后,你可以任选4讲全文学习。
课前必读 (5讲)
开篇词 | 打通“容器技术”的任督二脉
免费
01 | 预习篇 · 小鲸鱼大事记(一):初出茅庐
02 | 预习篇 · 小鲸鱼大事记(二):崭露头角
03 | 预习篇 · 小鲸鱼大事记(三):群雄并起
04 | 预习篇 · 小鲸鱼大事记(四):尘埃落定
容器技术概念入门篇 (5讲)
05 | 白话容器基础(一):从进程说开去
06 | 白话容器基础(二):隔离与限制
07 | 白话容器基础(三):深入理解容器镜像
08 | 白话容器基础(四):重新认识Docker容器
09 | 从容器到容器云:谈谈Kubernetes的本质
Kubernetes集群搭建与实践 (3讲)
10 | Kubernetes一键部署利器:kubeadm
11 | 从0到1:搭建一个完整的Kubernetes集群
12 | 牛刀小试:我的第一个容器化应用
容器编排与Kubernetes作业管理 (15讲)
13 | 为什么我们需要Pod?
14 | 深入解析Pod对象(一):基本概念
15 | 深入解析Pod对象(二):使用进阶
16 | 编排其实很简单:谈谈“控制器”模型
17 | 经典PaaS的记忆:作业副本与水平扩展
18 | 深入理解StatefulSet(一):拓扑状态
19 | 深入理解StatefulSet(二):存储状态
20 | 深入理解StatefulSet(三):有状态应用实践
21 | 容器化守护进程的意义:DaemonSet
22 | 撬动离线业务:Job与CronJob
23 | 声明式API与Kubernetes编程范式
24 | 深入解析声明式API(一):API对象的奥秘
25 | 深入解析声明式API(二):编写自定义控制器
26 | 基于角色的权限控制:RBAC
27 | 聪明的微创新:Operator工作原理解读
Kubernetes容器持久化存储 (4讲)
28 | PV、PVC、StorageClass,这些到底在说啥?
29 | PV、PVC体系是不是多此一举?从本地持久化卷谈起
30 | 编写自己的存储插件:FlexVolume与CSI
31 | 容器存储实践:CSI插件编写指南
Kubernetes容器网络 (8讲)
32 | 浅谈容器网络
33 | 深入解析容器跨主机网络
34 | Kubernetes网络模型与CNI网络插件
35 | 解读Kubernetes三层网络方案
36 | 为什么说Kubernetes只有soft multi-tenancy?
37 | 找到容器不容易:Service、DNS与服务发现
38 | 从外界连通Service与Service调试“三板斧”
39 | 谈谈Service与Ingress
Kubernetes作业调度与资源管理 (5讲)
40 | Kubernetes的资源模型与资源管理
41 | 十字路口上的Kubernetes默认调度器
42 | Kubernetes默认调度器调度策略解析
43 | Kubernetes默认调度器的优先级与抢占机制
44 | Kubernetes GPU管理与Device Plugin机制
Kubernetes容器运行时 (3讲)
45 | 幕后英雄:SIG-Node与CRI
46 | 解读 CRI 与 容器运行时
47 | 绝不仅仅是安全:Kata Containers 与 gVisor
Kubernetes容器监控与日志 (3讲)
48 | Prometheus、Metrics Server与Kubernetes监控体系
49 | Custom Metrics: 让Auto Scaling不再“食之无味”
50 | 让日志无处可逃:容器日志收集与管理
再谈开源与社区 (1讲)
51 | 谈谈Kubernetes开源社区和未来走向
答疑文章 (1讲)
52 | 答疑:在问题中解决问题,在思考中产生思考
特别放送 (1讲)
特别放送 | 2019 年,容器技术生态会发生些什么?
结束语 (1讲)
结束语 | Kubernetes:赢开发者赢天下
特别放送 | 云原生应用管理系列 (1讲)
基于 Kubernetes 的云原生应用管理,到底应该怎么做?
深入剖析Kubernetes
登录|注册

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

张磊 2018-09-17
你好,我是张磊。今天我和你分享的主题是:从 0 到 1 搭建一个完整的 Kubernetes 集群。
在上一篇文章中,我介绍了 kubeadm 这个 Kubernetes 半官方管理工具的工作原理。既然 kubeadm 的初衷是让 Kubernetes 集群的部署不再让人头疼,那么这篇文章,我们就来使用它部署一个完整的 Kubernetes 集群吧。
备注:这里所说的“完整”,指的是这个集群具备 Kubernetes 项目在 GitHub 上已经发布的所有功能,并能够模拟生产环境的所有使用需求。但并不代表这个集群是生产级别可用的:类似于高可用、授权、多租户、灾难备份等生产级别集群的功能暂时不在本篇文章的讨论范围。
目前,kubeadm 的高可用部署已经有了第一个发布。但是,这个特性还没有 GA(生产可用),所以包括了大量的手动工作,跟我们所预期的一键部署还有一定距离。GA 的日期预计是 2018 年底到 2019 年初。届时,如果有机会我会再和你分享这部分内容。
这次部署,我不会依赖于任何公有云或私有云的能力,而是完全在 Bare-metal 环境中完成。这样的部署经验会更有普适性。而在后续的讲解中,如非特殊强调,我也都会以本次搭建的这个集群为基础。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《深入剖析Kubernetes》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(233)

  • L
    centos7 单机k8s终于在墙内搭好了,写了篇教程欢迎后来者直接享用
    https://www.datayang.com/article/45
    2018-10-05
    3
    88
  • b1ngx
    真的是写的最好的专栏
    2018-09-17
    55
  • 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

    作者回复: 对对对

    2018-09-29
    35
  • ___
    kubeadm 1.14 配置文件

    apiVersion: kubeadm.k8s.io/v1beta1
    kind: ClusterConfiguration
    controllerManager:
        extraArgs:
            horizontal-pod-autoscaler-use-rest-clients: "true"
            horizontal-pod-autoscaler-sync-period: "10s"
            node-monitor-grace-period: "10s"
    apiServer:
        extraArgs:
            runtime-config: "api/all=true"
    kubernetesVersion: "stable-1.14"

    相关文档:https://godoc.org/k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta1

    备注这个针对版本号为1.14的
    2019-03-31
    2
    27
  • 龙哥
    对于GFW,不能直接给kubeadm上代理,而是要让docker daemon翻,正确姿势参见:
    https://stackoverflow.com/questions/26550360/docker-ubuntu-behind-proxy
    2018-10-18
    25
  • 柳旭
    ubuntu 换成这个源
    deb http://mirrors.ustc.edu.cn/kubernetes/apt kubernetes-xenial main
    2018-09-17
    20
  • W.T
    老师您好!专网,不能访问互联网的情况下,离线部署kubernetes集群?有没有好的方法和建议?
    2018-09-17
    1
    16
  • cuikt
    CentOS Linux release 7.6.1810 (Core)
    Kubernetes v1.14.1
    按照文档部署Rook时会报错
    Error from server (NotFound): error when creating "operator.yaml": namespaces "rook-ceph" not found

    error: unable to recognize "cluster.yaml": no matches for kind "CephCluster" in version "ceph.rook.io/v1"

    解决方式:先apply common.yaml 再执行后续apply
    kubectl apply -f https://raw.githubusercontent.com/rook/rook/master/cluster/examples/kubernetes/ceph/common.yaml
    2019-04-25
    1
    14
  • 我还是猴子
    kubernetes 1.12.2/docker-ce 18.09


    老师的文档是老版本的,看了留言很多 apiversion错误的需要调整老师给的kubeadm init 的kubeadm.yaml文件
    老版本:
    apiVersion: kubeadm.k8s.io/v1alpha1
    kind: MasterConfiguration
    controllerManagerExtraArgs:
      horizontal-pod-autoscaler-use-rest-clients: "true"
      horizontal-pod-autoscaler-sync-period: "10s"
      node-monitor-grace-period: "10s"
    apiServerExtraArgs:
      runtime-config: "api/all=true"
    kubernetesVersion: "stable-1.11"

    新版本:
    apiVersion: kubeadm.k8s.io/v1alpha2
    kind: MasterConfiguration
    controllerManagerExtraArgs:
      horizontal-pod-autoscaler-use-rest-clients: "true"
      horizontal-pod-autoscaler-sync-period: "10s"
      node-monitor-grace-period: "10s"
    apiServerExtraArgs:
      runtime-config: "api/all=true"
    kubernetesVersion: "stable-1.12"
    需要注意
    v1alpha2 will be removed in Kubernetes 1.13. 1.13启用v1alpha3 后续有同学也要注意
    2018-11-20
    14
  • 杰魁
    用了虚拟机,科学上网的问题一个接着一个,搞了一个星期烦死了,最后直接买了美国的3台服务器,只需几分钟就完成了这个章节的所有部署。
    2019-03-16
    1
    12
  • Xiye
    1. 使用过Minikube在自己本机装过K8S,步骤很简单。这个应该比较适合开发使用,不用花太多时间在部署上,但是因为是SingleNode,肯定是不能用于生产。
    2. 网上查了官方,支持最多5000节点规模的集群。目前我们项目用得3个Master,3个Work Node。
    2018-09-17
    11
  • Jeremy
    如果有人遇到:
    [ERROR KubeletVersion]: the kubelet version is higher than the control plane version. This is not a supported version skew and may lead to a malfunctional cluster. Kubelet version: "1.12.0-rc.1" Control plane version: "1.11.3"
    这个错误,使用:
    apt-get install kubelet=1.11.3-00
    就可以了,发出来希望对人有用。
    2018-09-20
    10
  • 同心结
    你好,照着你的教程,我在执行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.
    默认安装的kubeadm和kubelet版本是1.12
    2018-09-20
    1
    9
  • Terry Hu
    我也为大家提供一些comments:
    Kubeadm的token 23小时后过期,所以如果你worker端和master 端不是在同一天做的,有可能会出现如下错误:
    [kubelet] Downloading configuration for the kubelet from the "kubelet-config-1.11" ConfigMap in the kube-system namespace
    Unauthorized

    Stackoverflow上有这个解:
    https://stackoverflow.com/questions/52823871/unable-to-join-the-worker-node-to-k8-master-node

    简单来说,在master 上重新kubeadm token create一下,替换原来的token 就好了

    另外,如果出现
    [preflight] Some fatal errors occurred:
            [ERROR FileAvailable--etc-kubernetes-pki-ca.crt]: /etc/kubernetes/pki/ca.crt already exists
            [ERROR FileAvailable--etc-kubernetes-bootstrap-kubelet.conf]: /etc/kubernetes/bootstrap-kubelet.conf already exists
    [preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...`

    把那2个文件mv挪走就好了
    2018-11-01
    8
  • Len
    老师,怎么让 Master 高可用,能给几个方案的关键词吗?我想根据关键词课后自己先研究一下。
    2018-09-19
    8
  • 暮雨
    没有外网的环境,安装这个有没什么好的方法,在阿里云上开了两台香港节点的主机
    2018-09-17
    8
  • 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

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

    2019-04-17
    2
    7
  • 陈华
    我去,今天才部署完成,对于小白来说还是挺困难的。
    这一节应该卡住了很多人吧。
    加油!!!,
    2018-09-26
    7
  • 包治结巴
    张老师,请教一个问题,master部署完成后生成指令,比如“ kubeadm join 172.19.0.7:6443 --token xw4d6t.1dmpctojkcg9yqlf --discovery-token-ca-cert-hash sha256:45168e55ad19ac6126728e86c0a4c46e98c7df5d0312aec3fdd8d437dc24a3b9”,假如当时没有记下来,有什么命令可以再次让master生成这个指令吗?

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

    2018-09-18
    7
  • 飞向云端
    $ kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml
    路径404找不到了,怎么解?
    2019-03-20
    1
    6
收起评论
99+
返回
顶部