学习Kubernetes有一点落后-16. 组件-

故事

    1. 一步一步地学习 Kubernetes – 01. 环境选择篇 –

 

    1. 一步一步地学习 Kubernetes – 02. Docker For Mac –

 

    1. 一步一步地学习 Kubernetes – 03. Raspberry Pi –

 

    1. 一步一步地学习 Kubernetes – 04. kubectl –

 

    1. 一步一步地学习 Kubernetes – 05. workloads 第一部分 –

 

    1. 一步一步地学习 Kubernetes – 06. workloads 第二部分 –

 

    1. 一步一步地学习 Kubernetes – 07. workloads 第三部分 –

 

    1. 一步一步地学习 Kubernetes – 08. discovery&LB 第一部分 –

 

    1. 一步一步地学习 Kubernetes – 09. discovery&LB 第二部分 –

 

    1. 一步一步地学习 Kubernetes – 10. config&storage 第一部分 –

 

    1. 一步一步地学习 Kubernetes – 11. config&storage 第二部分 –

 

    1. 一步一步地学习 Kubernetes – 12. 资源限制 –

 

    1. 一步一步地学习 Kubernetes – 13. 健康检查和容器生命周期 –

 

    1. 一步一步地学习 Kubernetes – 14. 调度 –

 

    1. 一步一步地学习 Kubernetes – 15. 安全性 –

 

    一步一步地学习 Kubernetes – 16. 组件 –

上次

在开始学习Kubernetes时稍晚了一步 – 在第15章“安全性”中,我们学习了基于RBAC的权限。本次学习将了解Kubernetes的组件。

组件

在Kubernetes中,它的配置如下所示。

スクリーンショット 2019-06-09 20.14.38.png

学习每个组件的内容。

确认目前的情况。

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进行应用程序开发。

bannerAds