学习Kubernetes有一点落后-16. 组件-
故事
-
- 一步一步地学习 Kubernetes – 01. 环境选择篇 –
-
- 一步一步地学习 Kubernetes – 02. Docker For Mac –
-
- 一步一步地学习 Kubernetes – 03. Raspberry Pi –
-
- 一步一步地学习 Kubernetes – 04. kubectl –
-
- 一步一步地学习 Kubernetes – 05. workloads 第一部分 –
-
- 一步一步地学习 Kubernetes – 06. workloads 第二部分 –
-
- 一步一步地学习 Kubernetes – 07. workloads 第三部分 –
-
- 一步一步地学习 Kubernetes – 08. discovery&LB 第一部分 –
-
- 一步一步地学习 Kubernetes – 09. discovery&LB 第二部分 –
-
- 一步一步地学习 Kubernetes – 10. config&storage 第一部分 –
-
- 一步一步地学习 Kubernetes – 11. config&storage 第二部分 –
-
- 一步一步地学习 Kubernetes – 12. 资源限制 –
-
- 一步一步地学习 Kubernetes – 13. 健康检查和容器生命周期 –
-
- 一步一步地学习 Kubernetes – 14. 调度 –
-
- 一步一步地学习 Kubernetes – 15. 安全性 –
- 一步一步地学习 Kubernetes – 16. 组件 –
上次
在开始学习Kubernetes时稍晚了一步 – 在第15章“安全性”中,我们学习了基于RBAC的权限。本次学习将了解Kubernetes的组件。
组件
在Kubernetes中,它的配置如下所示。

学习每个组件的内容。
确认目前的情况。
pi@raspi001:~/tmp $ k get nodes
NAME STATUS ROLES AGE VERSION
raspi001 Ready master 42d v1.14.1
raspi002 Ready worker 42d v1.14.1
raspi003 Ready worker 42d v1.14.1
pi@raspi001:~/tmp $ k get pods -n kube-system -o=wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
coredns-fb8b8dccf-mtzvd 1/1 Running 34 37d 10.244.0.26 raspi001 <none> <none>
coredns-fb8b8dccf-nv6dj 1/1 Running 81 37d 10.244.2.151 raspi003 <none> <none>
etcd-raspi001 1/1 Running 31 42d 192.168.3.32 raspi001 <none> <none>
kube-apiserver-raspi001 1/1 Running 95 42d 192.168.3.32 raspi001 <none> <none>
kube-controller-manager-raspi001 1/1 Running 89 42d 192.168.3.32 raspi001 <none> <none>
kube-flannel-ds-arm-4s22p 1/1 Running 73 38d 192.168.3.34 raspi003 <none> <none>
kube-flannel-ds-arm-7nnbj 1/1 Running 88 38d 192.168.3.33 raspi002 <none> <none>
kube-flannel-ds-arm-ckwq5 1/1 Running 86 38d 192.168.3.32 raspi001 <none> <none>
kube-proxy-6fwl5 1/1 Running 31 42d 192.168.3.32 raspi001 <none> <none>
kube-proxy-wgjdq 1/1 Running 28 42d 192.168.3.33 raspi002 <none> <none>
kube-proxy-zvmqf 1/1 Running 28 42d 192.168.3.34 raspi003 <none> <none>
kube-scheduler-raspi001 1/1 Running 87 42d 192.168.3.32 raspi001 <none> <none>
以下是由MasterNode运行的。
-
- etcd-raspi001
-
- kube-apiserver-raspi001
-
- kube-controller-manager-raspi001
- kube-scheduler-raspi001
以下的代码在所有节点上运行。
-
- kube-flannel-ds
- kube-proxy
Coredns在一台Master和一台Worker上运行。
※ 在这个过程中进行了设置。
etcd
MasterNodeに存在するコンポーネントです。
分散Key-ValueStoreであるetcdは、Kubernetesのクラスタにある全情報が保存されています。そのため、単一障害にならないようクラスタを組むことが推奨されているみたいです。ここのデータにアクセスするのはkube-apiserverから経由しなければなりません。
直接確認したい場合は、etcdctlを使ってみると良いです。
Kubernetes API服务器
这是在MasterNode上存在的组件。
它是提供Kubernetes API的组件。会被kube-scheduler、kube-controller-manager和kubelet调用。
它只管理对etcd的资源,并不负责启动Pod。
Kube调度器
这是在MasterNode上存在的组件。
它会检测到未分配Node信息的Pod,并向kube-apiserver发送将Node分配给该Pod的请求。
它只负责分配Node,而不会启动Pod。在分配Node时,还会考虑NodeAffinity和Taints等因素。
kubelet (八进制)
这是在每个节点上运行的组件。它会检测到未分配的节点已被分配,并启动相应的Pod。
Kubernetes控制器管理器
存在于MasterNode的组件。
它负责执行各种控制器。在Deployment和ControllerReplicaSetController中,它会监视状态并查看期望的Pod数量和当前的Pod数量。然后,它会向kube-apiserver请求调整缺少或多余的Pod。然后,它会执行之前提到的kube-scheduler和kubelet的一系列步骤。
Kube-proxy – 可比代理
这是在各节点上运行的组件,用于转发到NodePort或ClusterIP的流量。
kube-dns=Kubernetes的域名系统
在Kubernetes集群中,用于命名解析和服务发现的DNS服务器。
在我的环境中,我使用了CoreDNS。
其他
自定义资源定义(CRD)和操作器
CRD是一种可以定义自己资源的资源。通过赋予这种扩展性,可以推动各种开发。
由于CRD只是Kubernetes对象本身,所以需要创建一个称为Operator的自定义控制器来进行设置。
据说可以通过称为Operator Framework的工具轻松创建。
在最后
终于能够完整地阅读《Kubernetes完全指南》的内容了。
最初并没有打算将其变成文章输出到这个程度。
实际上,在树莓派上运行Kubernetes后,
我发现了很多东西,迷上了这个。
然而,稍微晚了一步才开始学习Kubernetes-从第12节开始,遇到了各种问题,几乎照搬了书中的内容。(笑)
我打算从现在开始,亲自使用GKE进行应用程序开发。