目录

    1. 集群

    1.1 Master

    Master 负责管理和维护 Kubernetes 集群信息,并向 Node 下放任务和接收反馈信息。

    Master 上运行的组件有 kube-apiserver、kube-scheduler、kube-controller-manager、cloud-controller-manager 等。

    1.2 Node

    Node 负责集群负载,可以是物理机,也可以是虚拟机。为了管理 Pod ,每个 Node 都会运行 Container Runtime、Kubelet、Kube-proxy 。

    2. 基本组件

    2.1 kube-apiserver

    kube-apiserver 为 Kubernetes 集群提供了 RESTful API,是操作集群的唯一入口。

    2.2 kube-scheduler

    kube-scheduler 负责分配调度 Pod 到集群内的节点上。它监听 kube-apiserver,查询还未分配 Node 的 Pod,然后根据调度策略为这些 Pod 分配节点。

    2.3 kube-controller-manager

    kube-controller-manager 通过 apiserver 监控整个集群的状态,并确保集群处于预期的工作状态。

    2.4 cloud-controller-manager

    cloud-controller-manager 主要负责与底层云提供商的平台交互。

    2.5 kubelet

    kubelet 运行在 Node 节点,在 apiserver 上注册节点信息,定期向 Master 上报节点的资源使用情况。此外,kubelet 还接受并执行 Master 节点发送的指令,管理 Pod 和 Pod 中的容器。

    2.6 kube-proxy

    kube-proxy 运行在 Node 节点上,负责 service 的通信和负载均衡。

    2.7 kube-dns

    kube-dns 为 Kubernetes 提供命名服务。

    2.8 kubeadm

    kubeadm 是一个构建 Kubernetes 集群的工具。它提供的 kubeadm initkubeadm join 两个命令是快速构建 Kubernetes 集群的最佳实践。kubeadm 只关心集群中最基础的组件,不涉及 dashboard、CNI 等插件。

    2.9 federation

    Kubernetes 的设计定位是单一集群在同一个地域内。同一个地区的网络性能才能满足 Kubernetes 的调度和计算存储连接要求。

    federation 提供了跨集群同步资源、跨集群服务发现的功能,可以用于管理多集群。

    2.10 kubectl

    kubectl 是 Kubernetes 的命令行工具。

    3. 基础对象

    3.1 Pod

    Pod 是 Kubernetes 中最基本的调度单元。

    Pod 可以运行多个 Docker 容器,容器间共享 PID、IPC、Network 和 UTS namespace。Pod 在创建时会被分配一个 IP 地址,Pod 间的容器可以相互通信。

    3.2 Service

    Service 用于将一组 Pod 暴露为一个服务。由于 Pod 的 IP 会随着 Pod 的重启而变化,不能直接对外提供服务。Service 为一组 Pod 提供了一个统一的访问入口。Kube-proxy 完成多个 Pod 上的负载均衡。

    3.3 Label

    Label 标签以 key/value 的方式附加到对象上,用于识别 Kubernetes 对象。Label Selector 可以用于选择一组相同 Label 的对象。

    3.4 Replication Controller

    Replication Controller 用于保证一定数量的 Pod 在集群中正常运行。Replication Controller 会持续监听 Pod 的运行状态,当 Pod 发生故障数量减少时,重新运行新的 Pod 副本。

    3.5 Replica Set

    Replica Set 是 Replication Controller 的升级版本。Replication Controller 仅支持 equality-based 的选择器,而 Replica Set 支持 labels user guide 中描述的 set-based 选择器。

    3.6 Deployment

    Deployment 是 Kubernetes 中用于处理无状态服务的资源,提供了更新 Pod 和 Replica Set 的方法,集成了上线部署、滚动升级、创建副本、暂停上线任务,恢复上线任务、回滚到以前某一版本等功能。

    3.7 Job

    Job 用于批量处理短暂的一次性任务,并保证指定数量的 Pod 成功结束。

    3.8 DaemonSet

    DaemonSet 可以保证集群中所有的或者部分的节点都能够运行同一份 Pod 副本,每当有新的节点被加入到集群时,Pod 就会在目标的节点上启动。

    3.9 StatefulSet

    StatefulSet 是用于支持有状态服务的资源,所管理的 Pod 拥有固定的Pod 名称,启停顺序。

    4. 参考